61
Multi-Terminal Network Flows R. E. Gomory and T. C. Hu Journal of the Society for Industrial and Applied Mathematics, Vol 9, No. 4 pp. 551-570 1 mayoko

Multi terminal networkflows

Embed Size (px)

Citation preview

Multi-Terminal Network FlowsR. E. Gomory and T. C. HuJournal of the Society for Industrial and Applied Mathematics, Vol 9, No. 4 pp. 551-570

1

mayoko

フローとはグラフ の各枝 に対して , 非負実数の容量 が定義されている。また , グラフの 2 点 を指定する。

s

2

1 3

t

10

2

6

6 38

5

2

フローとはこのグラフ において , 関数 が以下を満たすとき , をフローネットワークと呼ぶ。容量制限 :

フロー保存則 :

10 6

415

6s

2

1 3

t

10

2

6

6 38

5

3

フロー量は 11

カットとは グラフ G(V, E) の頂点 V の 2 分割 (S, T) のことをカットと言う。 カットに関して , 始点 , ある辺 がを満たすとき , をカットエッジと呼び , カットエッジのコストの総和をカットのサイズと言う。

カットサイズは 11s

2

1 3

t

10

2

6

6 38

5

4

最大フロー・最小カット定理 フローのうち , 始点から放出されるフローの量が最大のものを最大フローという。 カットのうち , カットサイズが最小のものを最小カットという。 最大フローと最小カットは等しいことが知られている。

5

問題設定ネットワークグラフ () が与えられる。任意の頂点間 に関して , を始点 , を終点とした際の最大フローを考える

6

背景ネットワークグラフはものの流れを表していると解釈できる一定のものの流れは常に保障されていてほしいが , なるべくコストは少なくしたい

7

概要1. Gomory-Hu 木2. Satisfactory Network

8

概要1. Gomory-Hu 木2. Satisfactory Network

9

定理 1各頂点間について , この頂点間の最大フローを したいという要望があったとする。グラフをうまく作って , 各頂点間の最大フローをぴったりにしたい。

0 10 15 15

10 0 10 10

15 10 0 20

15 10 20 0

0

1

215

要望

3

10

20

10

定理 1要望 が実現可能であるための必要十分条件は ,

が成り立つことである。

11

定理 1( 必要性 )

背理法で示す。が成り立つとすると , 頂点 にあるカット が存在して , そのカットサイズは になる。 であるとすると , () は でカットすればカットサイズが より小さくなるので , 最小性に矛盾。 の場合も について同様のことが言える。

12

定理 1( 十分性 )

が成り立っているという条件の下で , 要望 を満たすグラフを構成する。これは , 要望 に関する最大全域木を作れば良い。

13

定理 1要望から最大全域木を作る。

0 10 15 15

10 0 10 10

15 10 0 20

15 10 20 0

0

1

215

要望

3

10

20

14

定理 1任意の頂点 について , 木の上での から へのパスは一意に定まり ,

0 10 15 15

10 0 10 10

15 10 0 20

15 10 20 0

要望

0

1

215 3

10

20

15

定理 1また , 仮定 より , 任意のパスについて

0 10 15 15

10 0 10 10

15 10 0 20

15 10 20 0

要望

0

1

215 3

10

20

16

アルゴリズム 1要望 が与えられたときに , その要望を満たすグラフを構成するアルゴリズム1. から最大全域木を作る ( プリム法などが知られている )

2. 定理 1 で与えた不等式を満たすか確かめる3. 確かめて不等式を満たすなら 構成した木を返す( は頂点数 ) で計算できる

17

定理 2ネットワークグラフ () が与えられるので , 各頂点間の最大フロー () の行列を構成する , という問題を考える

18

0 10 15 15

10 0 10 10

15 10 0 20

15 10 20 0

0

1

215 3

10

20

定理 2観察ネットワークグラフから構成される行列 は当然実現可能定理 1 の証明から , 行列 に現れるユニークな最大フローの値は高々種類頂点から 2 つの頂点を選ぶ方法は あるけど全部調べる必要はないのでは?

19

定理 2上記の問題は回最大フローを計算するだけで行列を構成できる。

これを示すためにいくつかの補題を示す

20

補題 1のカットで最小カットになるものを とする。また , 集合にがあるとする。このとき ,

21

の間の最大フローは上のグラフと下のグラフで変わらない。

補題 1( 証明の概略 ) の最小カットについて , はどちらか側に寄せても正しい最小カットを返すことが保証できる。 このを 1 点集中させてもカットは同じだから , 補題が成り立つ。

22

アルゴリズム 2入力 : ネットワークグラフ ()

出力 : 各頂点間の最大フロー () の行列を求めるための木 (Gomory-Hu 木 )

1. すべての頂点集合 をひとつのノードとみなす2. すべてのノードが要素ひとつの頂点集合になるまで以下を繰り返す。

ノードから任意に 2 つの頂点を選び , その 2 頂点に関する最小カットを計算する。その後 , 分割された最小カット同士を辺で結ぶ。

23

アルゴリズム 2

B

DC

B

DC

𝐴1

𝐴2

𝐴1 𝐴2

と の最大フローは 𝑣1

𝑣2𝑣

𝑣1

𝑣2 𝑣3𝑣3

24

アルゴリズム 2 の具体例

このグラフについて木を作ることを考える

25

アルゴリズム 2 の具体例頂点 2, 6 を選択最小カットは (1, 2 | 3, 4, 5, 6) で ,サイズは 17

1,2 3,45,6

17

26

アルゴリズム 2 の具体例頂点 1, 2 を選択最小カットは (1 | 2, 3, 4, 5, 6) で ,サイズは 18

2 3,45,6

171

18

27

アルゴリズム 2 の具体例頂点 3, 6 を選択最小カットは (1, 2, 6 | 3, 4, 5) で ,サイズは 13

2 3,4,5

171

186

13

28

アルゴリズム 2 の具体例頂点 4, 5 を選択最小カットは (4 | 1, 2, 3, 5, 6) で ,サイズは 14

2 3, 517

118

613

4

14

29

アルゴリズム 2 の具体例頂点 3, 5 を選択最小カットは (3 | 1, 2, 4, 5, 6) で ,サイズは 15すべてのノードがひとつの頂点集合になったので終了

2 517

118

613

4

14

153

30

補題 2上記のアルゴリズムで木を生成できるが ,

2 つの頂点間のフローは ,

で表される ( は頂点間のパスの重みを表す )

例 ) 頂点 1-4 間の最大フローは 13

2 517

118

613

4

14

153

31

補題 2 の証明は成り立つそれぞれの edge は , その edge で分割される 2 つの集合間のカットになっている。 の最小カットのサイズを表しているので , これらの集合によるカット以下である。あとはを示せば良い

32

補題 2 の証明各ノードは集合をグラフの頂点部分集合と対応している。隣接したノード 2 つが対応している頂点部分集合を とする。

このとき , 頂点 , が存在して , , 間の最大フローはであるということを示す𝑆2𝑆1

𝑣

33

補題 2 の証明これが証明できると , 定理 1 から出来た木の中で

が成り立つ定理 1: 要望 が実現可能であるための必要十分条件は ,

が成り立つことである。

34

補題 2 の証明頂点 と について分割して右図のようになったとする( 集合 で分割 )

集合 はコスト で隣接しているが , 頂点 と の最大フローが

35

補題 2 の証明 この後 , 集合 内の頂点 木を分割したとする頂点 側の集合を 頂点 側の集合を は隣接している

36

補題 2 の証明のとき , が最大フロー を実現するので OK

37

補題 2 の証明のとき定理 1 から

間のフローを考えるとき集合 を一点とみなせる( 補題 2) から

38

補題 2 の証明辺 は頂点 をカットする辺なので ,

よって

辺 は頂点 をカットする辺なので ,

よって間は頂点が最大フローをにする39

概要1. Gomory-Hu 木2. Satisfactory Network

40

Satisfactory Network各頂点間について , この頂点間の最大フローを 以上にしたいという要望があったとする。この条件を満たすネットワークグラフのことを Satisfactory Network と言う。この中で , 各辺の容量の和を最小化したい。

41

Satisfactory NetworkSatisfactory Network の例

0 10 15 10

10 0 10 10

15 10 0 20

10 10 20 0

0

1

215

要望

3

10

20

42

Satisfactory Network について考察 に関して 最大全域木をつくるこの木に関して ,

が成り立つので ,

つまり , 最大全域木について の条件を満たせば良い ( この最大全域木のことを dominant tree と言う ) 。

43

Satisfactory Network について考察頂点 の辺の容量を とすると , 全体で使う容量 (total branch capacity) は ,

ここで , とすると ,

( は total branch capacity の下限 )

44

Satisfactory Network について考察木 に対して が決まっている → が決まる木 に対して が決まっている → が決まる

45

Satisfactory Network について考察とすると ,

特にがそれぞれ木 , で一定である (uniform tree) ならば ,

46

Satisfactory Network について考察同様に ,

と容量を決めると ,

47

Satisfactory Network について考察Dominant tree に対して ,

による uniform tree

の要求を持つ森を作ると , この木に対しては一定は 以上であるような木を構成することができる

48

アルゴリズム 3入力 : ネットワークグラフが満たしてほしい要求 出力 : 各頂点間の最大フローが 以上になるネットワークグラフ1. 要求 R から最大全域木 (dominant tree) を作る2. 以下を繰り返す1. いくつかの木に分かれているので , それぞれの木で1. コスト最小の辺を選ぶ2. 木の各辺を として更新する

49

アルゴリズム 33. Step2 で出来た tree はすべて uniform tree になっている。各コストをとすると , 各辺のコストが となるように連結成分でループを作る4. 上記のループをすべて足しこんだものが答え

50

アルゴリズム 3 の例要求が以下のようなグラフになっていたとする

51

アルゴリズム 3 の例Step 1: 要求 R から最大全域木 (dominant tree) を作る

52

アルゴリズム 3 の例Step 2: いくつかの木に分かれているので , それぞれの木でコスト最小の辺を選ぶ ( とする )

木の各辺を として更新する

53

アルゴリズム 3 の例この dominant tree について考える

12

3

45

9

6

7

5

54

アルゴリズム 3 の例まず 2 つの木に分割する木で最小の辺は 5 1

23

45

9

6

7

5

55

アルゴリズム 3 の例1

23

45

55

5

5

12

3

45

41

2Uniform tree

56

アルゴリズム 3 の例

12

34

1 12

31

1

12

33

57

アルゴリズム 3 の例Step3: uniform tree からループを作る

12

3

45

55

5

5

1

2

3

45

5/2

5/2

5/2

5/2

5/2

58

アルゴリズム 3 の例

1

2

3

45

5/2

5/2

5/2

5/2

5/2

1

2

31/2

1/2

1/2

5 42

1 33

59

アルゴリズム 3 の例Step4: ループをつなぎ合わせる

1

2

3

45

6

5/2

5/2

5/2

5/2

2

1/2 1/2

60

まとめ ネットワークグラフについて , 任意の頂点間の最大フローを考えるという問題を考えた 問題の特徴から高速に各頂点間の最大フローを求めることが出来た 最小コストの Satisfactory Network を求めることが出来た

61