Upload
masashi-nitta
View
91
Download
0
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
フローとはこのグラフ において , 関数 が以下を満たすとき , をフローネットワークと呼ぶ。容量制限 :
フロー保存則 :
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
定理 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( 必要性 )
背理法で示す。が成り立つとすると , 頂点 にあるカット が存在して , そのカットサイズは になる。 であるとすると , () は でカットすればカットサイズが より小さくなるので , 最小性に矛盾。 の場合も について同様のことが言える。
12
定理 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要望 が与えられたときに , その要望を満たすグラフを構成するアルゴリズム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入力 : ネットワークグラフ ()
出力 : 各頂点間の最大フロー () の行列を求めるための木 (Gomory-Hu 木 )
1. すべての頂点集合 をひとつのノードとみなす2. すべてのノードが要素ひとつの頂点集合になるまで以下を繰り返す。
ノードから任意に 2 つの頂点を選び , その 2 頂点に関する最小カットを計算する。その後 , 分割された最小カット同士を辺で結ぶ。
23
アルゴリズム 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
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 について考察Dominant tree に対して ,
による uniform tree
の要求を持つ森を作ると , この木に対しては一定は 以上であるような木を構成することができる
48
アルゴリズム 3入力 : ネットワークグラフが満たしてほしい要求 出力 : 各頂点間の最大フローが 以上になるネットワークグラフ1. 要求 R から最大全域木 (dominant tree) を作る2. 以下を繰り返す1. いくつかの木に分かれているので , それぞれの木で1. コスト最小の辺を選ぶ2. 木の各辺を として更新する
49
アルゴリズム 33. Step2 で出来た tree はすべて uniform tree になっている。各コストをとすると , 各辺のコストが となるように連結成分でループを作る4. 上記のループをすべて足しこんだものが答え
50