1 / 30

Self-Stabilizing Minimum Spanning Tree

Self-Stabilizing Minimum Spanning Tree. 斎藤 大. 発表の流れ. Self-Stabilizing Minimum Spanning Tree (MST)の概要 モデル MSTアルゴリズム GHSアルゴリズム Antonoiu and Srimani アルゴリズム Self-Stabilizing MSTアルゴリズム. 1. Self-Stabilizing MST の 概要. 1. Spanning Tree とは?. 頂点 V と辺 E の集合( V,E )から同じ頂点集合を持つ( V,E’ )を生成する

Download Presentation

Self-Stabilizing Minimum Spanning Tree

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Self-Stabilizing Minimum Spanning Tree 斎藤 大

  2. 発表の流れ • Self-Stabilizing Minimum Spanning Tree(MST)の概要 • モデル • MSTアルゴリズム • GHSアルゴリズム • Antonoiu and Srimaniアルゴリズム • 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の具体例 8 a b a b 5 4 5 4 3 c 9 3 c 1 1 d e d e 10 f 2 f 2 6 7 6 7 g h g h 11 ∑cost = 28(最小)

  7. 1.Self-Stabilizing MSTとは • 頂点の増減や辺の切断を考慮→現実のネットワークに適用 • 状況の変化に合わせて自動で木の再構築を行う 8 a b 3 5 4 c 1 d e f 2 6 7 g h

  8. 1.現実への適用 • グラフ → ネットワーク • 辺の重み → 通信コスト • 生成木 → あるプロセスの情報を全プロセスに放送 • 最小生成木 → 通信コストが最小の放送

  9. 1.モデル • Message-Passing Networkを想定 • 重み付き無向グラフ(重みは単射) • 各ノード(頂点)は固有のIDを持つ • 各ノードは、隣接するノードのID、及びそれらの間の枝(辺)の重みを保持する

  10. 2. MSTアルゴリズム GHSアルゴリズム 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] ∪

  13. 2.1.用語の定義 a b フラグメント 4 3 c 外向枝 (outgoing edge) d e レベル:合併(後述)回数 f 6 7 特に最小外向枝 (Minimum Outgoing Edge) が重要! g h 内枝 (inside edge)

  14. 2.1.MINTREEの流れ(1) • 各フラグメントのプロセスが最小外向枝(MOE)を探す • レベルが等しくMOEも共通な場合→合併[merge]・レベルが1増加 • MOEの相手のレベルが高い場合→吸収[absorb]・レベル変化無し • absorbはレベルが低い方のみ出せる

  15. 2.1.MINTREEの流れ(2) F2:L1 F1:L1 a b 4 3 c F3:L0 d e 1 merge 2 absorb f 6 7 g h F4:L1 (c, f):L2

  16. 2.2. Basic_MST • Antonoiu and Srimaniアルゴリズム→Basic_MSTと呼ぶ • 各枝がプロセッサを持っていると仮定 • 既になんらかの生成木が存在する時のアルゴリズム→初期設定が必要 • 一般にはあまり用いられないが、Self-Stabilizationを適用する上で便利

  17. 2.2.Basic_MSTの流れ(1) • 既に生成木が構築されているとする • 適当なnon-tree edgeを選ぶ→循環構造が出来る • 循環構造内で最も重い枝を切る • 2~3の繰り返しによって、MSTを構築

  18. 2.2.Basic_MSTの流れ(2) a b コスト最大の枝 5 4 3 c 9 1 d e コスト最大の枝 10 f 2 6 7 g h

  19. 2.2.簡単な証明 • ある関数を定義する(e:non-treeedge) • minimize_cycleは生成木を返す • E’がMSTだったら、どんなeに対してもE’=minimize_cycle(E’,e)逆も成り立つ • 一度minimize_cycleによって除かれた枝は二度と選ばれることはない • よって全てのeについてminimize_cycleを実行し求まる生成木はMSTとなる ∪

  20. 2.2.Basic_MSTの実装(1) • 枝に{chosen, unchosen}のstatus追加 • 待ち時間safetime(e)を追加→n個のノードを通る最大の時間徐々に減少し、自分の命令受信でreset • search、remove、insert命令を追加 • unchosen edgeはtime-outするとsearch命令を送信する • 循環した自分のsearchを受信し、重みが自分より大きかったらremove送信

  21. 2.2.Basic_MSTの実装(2) [g,f],6 [g,f],6 b a 4 5 c [g,f],9 [g,f],6 9 3 [g,f],6 1 e d Insert ([g, f]) search ([g, f],6) [g,f],9 [g,f],10 10 f 2 6 remove ([g,f],10) [g,f],10 h g

  22. 3.Self-Stabilizing MST

  23. 3.Self-Stabilizeのために • Basic_MSTに以下の機能を追加 • search_sent :search到着待ちstatus • search命令に通ってきたpathを追加pathは重みも保持する • find_cycle :chosen edgeが発する命令→3*Safetime間メッセージを受信しないと送信(Safetime:max{safetime(e)})

  24. 3.Self-Stabilizingの実装(1) • 各枝プロセッサが3つの変数を持つ • boolean chosen_status • unsigned int timer • boolean 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-out • unchosen edgeはSafetimeでtime-out [配布資料参照]

  26. 3.Self-Stabilizingの実装(3) [g, f], path [g, f], path b a 4 5 [g, f], path c 9 3 [g, f], path 1 e d search ([g, f], φ) 10 f 2 6 h g

  27. 3.Self-Stabilizingの実装(4) [g, f], [fhebc] b a 4 5 c remove ([fhebc]) cycle 9 3 [g, f], path 1 e d search ([g, f], φ) 10 2 [g, f], [fhe] f 6 7 [g, f], [fh] h g

  28. 3.正当性の直観的な証明 • MSTとなるべき枝が一度chosen edgeになったらそれは二度とremoveされない • 時間を重ねれば重ねるほど、生成木全体のコストは小さくなっていく • MSTとなるべき枝がまだchosen edgeでなかったら、必ずchosen edgeになる • 一度MSTが構築されたら、エラーが無い限りMSTは不変

  29. 3.現実に適用するために • 各枝がプロセッサを持っていると仮定→各ノードがそれぞれの枝を担当→枝を挟む相手の情報が欲しい • 大規模ネットワークでのSafetimeの設定 • ネットワーク全体を知ることは不可能 • Safetime大:ネットワークトラフィック減 • Safetime小:エラーに即座に対応

  30. まとめ • MSTとは • コスト最小の生成木を構成 • Self-Stabilizing MST • エラーを自動的に修復 • ノードの増減が激しいインターネットにも適用可能

More Related