Self-Stabilizing Minimum Spanning Tree

30
1 Self-Stabilizing Minimum Spanning Tree 斎斎 斎

description

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’ )を生成する - PowerPoint PPT Presentation

Transcript of Self-Stabilizing Minimum Spanning Tree

Page 1: Self-Stabilizing Minimum Spanning Tree

1

Self-Stabilizing Minimum Spanning Tree

斎藤 大

Page 2: Self-Stabilizing Minimum Spanning Tree

2

発表の流れ

1. Self-Stabilizing Minimum Spanning Tree (MST)の概要

モデル2. MSTアルゴリズム

GHSアルゴリズム Antonoiu and Srimani アルゴリズム

3. Self-Stabilizing MSTアルゴリズム

Page 3: Self-Stabilizing Minimum Spanning Tree

3

1. Self-Stabilizing MST の概要

Page 4: Self-Stabilizing Minimum Spanning Tree

4

1. Spanning Tree とは?

頂点 V と辺 E の集合( V,E )から同じ頂点集合を持つ( V,E’ )を生成する

循環構造を持たない 孤立した部分集合を持たない

→木構造

和訳:生成木

Page 5: Self-Stabilizing Minimum Spanning Tree

5

1. MST とは?

各辺に重み(コスト)をつける 木の辺の重みの和を最小にする 一般に MST は一意に定まらない

→重みは全て異なる(単射)と仮定すると一意に定まる

和訳:最小生成木

Page 6: Self-Stabilizing Minimum Spanning Tree

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 (最小)

Page 7: Self-Stabilizing Minimum Spanning Tree

7

1. Self-Stabilizing MST とは 頂点の増減や辺の切断を考慮

→現実のネットワークに適用 状況の変化に合わせて自動で木の再構

築を行う

3

a

d

g

c

b

e

f

h

5 4

1

26 7

8

Page 8: Self-Stabilizing Minimum Spanning Tree

8

1.現実への適用

グラフ → ネットワーク 辺の重み → 通信コスト 生成木 → あるプロセスの情報を全プ

ロセスに放送 最小生成木 → 通信コストが最小の放

Page 9: Self-Stabilizing Minimum Spanning Tree

9

1.モデル

Message-Passing Network を想定 重み付き無向グラフ(重みは単射) 各ノード(頂点)は固有の ID を持つ 各ノードは、隣接するノードの ID 、

及びそれらの間の枝(辺)の重みを保持する

Page 10: Self-Stabilizing Minimum Spanning Tree

10

2. MST アルゴリズム

1. GHSアルゴリズム2. Antonoiu and Srimani アルゴリズム

Page 11: Self-Stabilizing Minimum Spanning Tree

11

2.1. MINTREE

Gallager-Humblet-Spira のアルゴリズム→ MINTREE と呼ぶ

グラフ理論の KRUSKAL アルゴリズムを基にしている

ノード全体の情報を知る必要がない フラグメント(後述)をまとめて統

率するプロセッサを仮定

Page 12: Self-Stabilizing Minimum Spanning Tree

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

が閉路を含まない

Page 13: Self-Stabilizing Minimum Spanning Tree

13

2.1.用語の定義

a

d

g

c

b

e

f

h

34

6 7

フラグメント

内枝 (inside edge)

外向枝

(outgoing edge)

レベル:合併(後述)回数特に最小外向枝

(Minimum Outgoing Edge)

が重要!

Page 14: Self-Stabilizing Minimum Spanning Tree

14

2.1. MINTREE の流れ(1) 各フラグメントのプロセスが最小外向

枝( MOE )を探す レベルが等しく MOE も共通な場合

→合併 [merge] ・レベルが1増加 MOE の相手のレベルが高い場合

→吸収 [absorb] ・レベル変化無し absorb はレベルが低い方のみ出せる

Page 15: Self-Stabilizing Minimum Spanning Tree

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

Page 16: Self-Stabilizing Minimum Spanning Tree

16

2.2. Basic_MST

Antonoiu and Srimani アルゴリズム→ Basic_MST と呼ぶ

各枝がプロセッサを持っていると仮定

既になんらかの生成木が存在する時のアルゴリズム→初期設定が必要

一般にはあまり用いられないが、 Self-Stabilization を適用する上で便利

Page 17: Self-Stabilizing Minimum Spanning Tree

17

2.2. Basic_MST の流れ(1)

1. 既に生成木が構築されているとする2. 適当な non-tree edge を選ぶ

→循環構造が出来る3. 循環構造内で最も重い枝を切る4. 2~3の繰り返しによって、 MST

を構築

Page 18: Self-Stabilizing Minimum Spanning Tree

18

2.2. Basic_MST の流れ(2)

a

d

g

c

b

e

f

h

3 95 4

1

10 26 7

コスト最大の枝

コスト最大の枝

Page 19: Self-Stabilizing Minimum Spanning Tree

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 ∪

Page 20: Self-Stabilizing Minimum Spanning Tree

20

2.2. Basic_MST の実装(1) 枝に {chosen, unchosen} の status 追加 待ち時間 safetime(e) を追加

→ n 個のノードを通る最大の時間徐々に減少し、自分の命令受信で reset

search 、 remove 、 insert 命令を追加 unchosen edge は time-out すると sear

ch 命令を送信する 循環した自分の search を受信し、重み

が自分より大きかったら remove 送信

Page 21: Self-Stabilizing Minimum Spanning Tree

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])

Page 22: Self-Stabilizing Minimum Spanning Tree

22

3. Self-Stabilizing MST

Page 23: Self-Stabilizing Minimum Spanning Tree

23

3. Self-Stabilize のために

Basic_MST に以下の機能を追加search_sent : search 到着待ち statussearch 命令に通ってきた path を追加

path は重みも保持するfind_cycle : chosen edge が発する命令

→3 *Safetime 間メッセージを受信しないと送信( Safetime : max{safetime(e)} )

Page 24: Self-Stabilizing Minimum Spanning Tree

24

3. Self-Stabilizing の実装(1) 各枝プロセッサが3つの変数を持つ

boolean chosen_statusunsigned int timerboolean search_sent

3種類のメッセージ(“search”, eid, path)(“remove”, path)(“find_cycle”, path)

Page 25: Self-Stabilizing Minimum Spanning Tree

25

3. Self-Stabilizing の実装(2) 2種類の通信プロトコル

send(mess, e) (e: 隣接する枝 )propagate(mess, v) (v: ノード )

タイムアウトの機構chosen edge は 3*Safetime で time-outunchosen edge は Safetime で time-out

[配布資料参照]

Page 26: Self-Stabilizing Minimum Spanning Tree

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

Page 27: Self-Stabilizing Minimum Spanning Tree

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])

Page 28: Self-Stabilizing Minimum Spanning Tree

28

3.正当性の直観的な証明

MST となるべき枝が一度 chosen edge になったらそれは二度と remove されない

時間を重ねれば重ねるほど、生成木全体のコストは小さくなっていく

MST となるべき枝がまだ chosen edge でなかったら、必ず chosen edge になる

一度 MST が構築されたら、エラーが無い限り MST は不変

Page 29: Self-Stabilizing Minimum Spanning Tree

29

3.現実に適用するために

各枝がプロセッサを持っていると仮定→各ノードがそれぞれの枝を担当→枝を挟む相手の情報が欲しい

大規模ネットワークでの Safetime の設定ネットワーク全体を知ることは不可能Safetime 大:ネットワークトラフィック減Safetime 小:エラーに即座に対応

Page 30: Self-Stabilizing Minimum Spanning Tree

30

まとめ

MST とはコスト最小の生成木を構成

Self-Stabilizing MSTエラーを自動的に修復ノードの増減が激しいインターネット

にも適用可能