Self-Stabilizing Minimum Spanning Tree
-
Upload
audra-knowles -
Category
Documents
-
view
50 -
download
0
description
Transcript of Self-Stabilizing Minimum Spanning Tree
1
Self-Stabilizing Minimum Spanning Tree
斎藤 大
2
発表の流れ
1. Self-Stabilizing Minimum Spanning Tree (MST)の概要
モデル2. MSTアルゴリズム
GHSアルゴリズム Antonoiu and Srimani アルゴリズム
3. Self-Stabilizing MSTアルゴリズム
3
1. Self-Stabilizing MST の概要
4
1. Spanning Tree とは?
頂点 V と辺 E の集合( V,E )から同じ頂点集合を持つ( V,E’ )を生成する
循環構造を持たない 孤立した部分集合を持たない
→木構造
和訳:生成木
5
1. MST とは?
各辺に重み(コスト)をつける 木の辺の重みの和を最小にする 一般に MST は一意に定まらない
→重みは全て異なる(単射)と仮定すると一意に定まる
和訳:最小生成木
6
1. MST の具体例
a
d
g
c
b
e
f
h
3
8
95 4
1
10 26 7
11
a
d
g
c
b
e
f
h
35 4
1
26 7
∑cost = 28 (最小)
7
1. Self-Stabilizing MST とは 頂点の増減や辺の切断を考慮
→現実のネットワークに適用 状況の変化に合わせて自動で木の再構
築を行う
3
a
d
g
c
b
e
f
h
5 4
1
26 7
8
8
1.現実への適用
グラフ → ネットワーク 辺の重み → 通信コスト 生成木 → あるプロセスの情報を全プ
ロセスに放送 最小生成木 → 通信コストが最小の放
送
9
1.モデル
Message-Passing Network を想定 重み付き無向グラフ(重みは単射) 各ノード(頂点)は固有の ID を持つ 各ノードは、隣接するノードの ID 、
及びそれらの間の枝(辺)の重みを保持する
10
2. MST アルゴリズム
1. GHSアルゴリズム2. Antonoiu and Srimani アルゴリズム
11
2.1. MINTREE
Gallager-Humblet-Spira のアルゴリズム→ MINTREE と呼ぶ
グラフ理論の KRUSKAL アルゴリズムを基にしている
ノード全体の情報を知る必要がない フラグメント(後述)をまとめて統
率するプロセッサを仮定
12
2.1. KRUSKAL
G=(V, E, c) から T=(V, ET) を求める をコストの小さい順に並べる (m: 枝
n: ノード )
[KRUSKAL]
mee ...1
};
}{: then
}{ if
;1:
{ do 1|| while
:0:
i
i
eETET
eET
ii
nET
;; ETi
が閉路を含まない
∪
13
2.1.用語の定義
a
d
g
c
b
e
f
h
34
6 7
フラグメント
内枝 (inside edge)
外向枝
(outgoing edge)
レベル:合併(後述)回数特に最小外向枝
(Minimum Outgoing Edge)
が重要!
14
2.1. MINTREE の流れ(1) 各フラグメントのプロセスが最小外向
枝( MOE )を探す レベルが等しく MOE も共通な場合
→合併 [merge] ・レベルが1増加 MOE の相手のレベルが高い場合
→吸収 [absorb] ・レベル変化無し absorb はレベルが低い方のみ出せる
15
2.1. MINTREE の流れ(2)
a
d
g
c
b
e
f
h
34
6 7absorb2
F1 : L1
F 2:L 1
F 3:L 0
F 4:L 1
(c, f) :L2
merge
1
16
2.2. Basic_MST
Antonoiu and Srimani アルゴリズム→ Basic_MST と呼ぶ
各枝がプロセッサを持っていると仮定
既になんらかの生成木が存在する時のアルゴリズム→初期設定が必要
一般にはあまり用いられないが、 Self-Stabilization を適用する上で便利
17
2.2. Basic_MST の流れ(1)
1. 既に生成木が構築されているとする2. 適当な non-tree edge を選ぶ
→循環構造が出来る3. 循環構造内で最も重い枝を切る4. 2~3の繰り返しによって、 MST
を構築
18
2.2. Basic_MST の流れ(2)
a
d
g
c
b
e
f
h
3 95 4
1
10 26 7
コスト最大の枝
コスト最大の枝
19
2.2.簡単な証明
ある関数を定義する( e:non-tree edge )
minimize_cycle は生成木を返す E’ が MST だったら、どんな e に対しても
E’=minimize_cycle(E’,e) 逆も成り立つ 一度 minimize_cycle によって除かれた枝
は二度と選ばれることはない よって全ての e について minimize_cycle
を実行し求まる生成木は MST となる
))},(_{max(\}){(),(ycleminimize_c eEcylfndeEeE ∪
20
2.2. Basic_MST の実装(1) 枝に {chosen, unchosen} の status 追加 待ち時間 safetime(e) を追加
→ n 個のノードを通る最大の時間徐々に減少し、自分の命令受信で reset
search 、 remove 、 insert 命令を追加 unchosen edge は time-out すると sear
ch 命令を送信する 循環した自分の search を受信し、重み
が自分より大きかったら remove 送信
21
2.2. Basic_MST の実装(2)
a
d
g
c
b
e
f
h
39
54
1
10
26
search ([g, f],6)
[g,f],6
[g,f],6[g,f],6
[g,f],9[g,f],6
[g,f],10 [g,f],9
[g,f],10
remove ([g,f],10)
Insert ([g, f])
22
3. Self-Stabilizing MST
23
3. Self-Stabilize のために
Basic_MST に以下の機能を追加search_sent : search 到着待ち statussearch 命令に通ってきた path を追加
path は重みも保持するfind_cycle : chosen edge が発する命令
→3 *Safetime 間メッセージを受信しないと送信( Safetime : max{safetime(e)} )
24
3. Self-Stabilizing の実装(1) 各枝プロセッサが3つの変数を持つ
boolean chosen_statusunsigned int timerboolean search_sent
3種類のメッセージ(“search”, eid, path)(“remove”, path)(“find_cycle”, path)
25
3. Self-Stabilizing の実装(2) 2種類の通信プロトコル
send(mess, e) (e: 隣接する枝 )propagate(mess, v) (v: ノード )
タイムアウトの機構chosen edge は 3*Safetime で time-outunchosen edge は Safetime で time-out
[配布資料参照]
26
3. Self-Stabilizing の実装(3)
a
d
g
c
b
e
f
h
39
54
1
10
26
search ([g, f], φ)
[g, f], path
[g, f], path[g, f], path
[g, f], path
27
3. Self-Stabilizing の実装(4)
a
d
g
c
b
e
f
h
39
54
1
102
[g, f], path
[g, f], [fhebc]
76
search ([g, f], φ)
[g, f], [fh]
[g, f], [fhe]
cycleremove ([fhebc])
28
3.正当性の直観的な証明
MST となるべき枝が一度 chosen edge になったらそれは二度と remove されない
時間を重ねれば重ねるほど、生成木全体のコストは小さくなっていく
MST となるべき枝がまだ chosen edge でなかったら、必ず chosen edge になる
一度 MST が構築されたら、エラーが無い限り MST は不変
29
3.現実に適用するために
各枝がプロセッサを持っていると仮定→各ノードがそれぞれの枝を担当→枝を挟む相手の情報が欲しい
大規模ネットワークでの Safetime の設定ネットワーク全体を知ることは不可能Safetime 大:ネットワークトラフィック減Safetime 小:エラーに即座に対応
30
まとめ
MST とはコスト最小の生成木を構成
Self-Stabilizing MSTエラーを自動的に修復ノードの増減が激しいインターネット
にも適用可能