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