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
フローとは
グラフ 𝐺(𝑉, 𝐸) の各枝 𝑒 ∈ 𝐸に対して, 非負実数の容量 𝑐(𝑒) が定義されている。
また, グラフの 2 点 𝑠, 𝑡 ∈ 𝑉を指定する。
s
2
1 3
t
10
2
6
6 3
8
5
2
フローとは
このグラフ 𝐺 において, 関数 𝑓: 𝐸 → ℝ+ が以下を満たすとき, 𝑓 をフローネットワークと呼ぶ。
容量制限: 0 ≤ 𝑓 𝑒 ≤ 𝑐 𝑒
フロー保存則: ∀𝑣 ∈ 𝑉 − 𝑠, 𝑡 : 𝑣,𝑤 ∈𝐸 𝑓 𝑣, 𝑤 − 𝑤,𝑣 ∈𝐸 𝑓 𝑤, 𝑣 = 0
10 6
4
1
5
6
s
2
1 3
t
10
2
6
6 3
8
5
3
フロー量は 11
カットとは
グラフ G(V, E) の頂点 V の 2 分割 (S, T)のことをカットと言う。
カットに関して, 始点 𝑠 ∈ 𝑆, 𝑡 ∈ 𝑇のとき, ある辺 𝑢, 𝑣 ∈ 𝐸が𝑢 ∈ 𝑆, 𝑣 ∈ 𝑇を満たすとき, 𝑢, 𝑣 を
カットエッジと呼び, カットエッジのコストの総和をカットのサイズと言う。
カットサイズは 11
s
2
1 3
t
10
2
6
6 3
8
5
4
最大フロー・最小カット定理
フローのうち, 始点𝑠から放出されるフローの量が最大のものを最大フローという。
カットのうち, カットサイズが最小のものを最小カットという。
最大フローと最小カットは等しいことが知られている。
5
問題設定
ネットワークグラフ(𝑉, 𝐸, 𝑐)が与えられる。
任意の頂点間 𝑢, 𝑣 ∈ 𝑉に関して, 𝑢を始点, 𝑣を終点とした際の最大フローを考える
6
背景
ネットワークグラフはものの流れを表していると解釈できる
一定のものの流れは常に保障されていてほしいが, なるべくコストは少なくしたい
7
概要
1. Gomory-Hu 木
2. Satisfactory Network
8
概要
1. Gomory-Hu 木
2. Satisfactory Network
9
定理1
各頂点間(𝑁𝑖, 𝑁𝑗)について, この頂点間の最大フローを 𝐹𝑖,𝑗にしたいという要望があったとする。
グラフをうまく作って, 各頂点間の最大フローをぴったり𝐹𝑖,𝑗にしたい。
𝑁0 𝑁1 𝑁2 𝑁3
𝑁0 0 10 15 15
𝑁1 10 0 10 10
𝑁2 15 10 0 20
𝑁3 15 10 20 0
0
1
215
要望𝐹
3
10
20
10
定理1
要望 𝐹 が実現可能であるための必要十分条件は,
∀𝑖, 𝑗, 𝑘: 𝐹𝑖,𝑘 ≥ min(𝐹𝑖,𝑗, 𝐹𝑗,𝑘)
が成り立つことである。
11
定理1
(必要性)
背理法で示す。
𝐹𝑖,𝑘 < min(𝐹𝑖,𝑗, 𝐹𝑗,𝑘)
が成り立つとすると, 頂点 𝑁𝑖, 𝑁𝑘 にあるカット 𝐴 が存在して, そのカットサイズは 𝐹𝑖,𝑘 になる。
𝑁𝑗 ∈ 𝐴 であるとすると, (𝑁𝑗, 𝑁𝑘)は 𝐴 でカットすればカットサイズが 𝐹𝑗,𝑘より小さくなるので, 最小
性に矛盾。
𝑁𝑗 ∈ 𝑉 − 𝐴の場合も 𝐹𝑖,𝑗について同様のことが言える。
12
定理1
(十分性)
∀𝑖, 𝑗, 𝑘: 𝐹𝑖,𝑘 ≥ min(𝐹𝑖,𝑗, 𝐹𝑗,𝑘)
が成り立っているという条件の下で, 要望 𝐹 を満たすグラフを構成する。
これは,要望 𝐹 に関する最大全域木を作れば良い。
13
定理1
要望𝐹から最大全域木を作る。
𝑁0 𝑁1 𝑁2 𝑁3
𝑁0 0 10 15 15
𝑁1 10 0 10 10
𝑁2 15 10 0 20
𝑁3 15 10 20 0
0
1
215
要望𝐹
3
10
20
14
定理1
任意の頂点 𝑁𝑖, 𝑁𝑝について, 木の上での𝑁𝑖 から 𝑁𝑝 へのパスは一意に定まり,
𝐹𝑖,𝑝 ≤ min(𝐹𝑖,𝑗, 𝐹𝑗,𝑘, … , 𝐹𝑜,𝑝)
𝑁0 𝑁1 𝑁2 𝑁3
𝑁0 0 10 15 15
𝑁1 10 0 10 10
𝑁2 15 10 0 20
𝑁3 15 10 20 0
要望𝐹
0
1
215 3
10
20
15
定理1
また, 仮定 ∀𝑖, 𝑗, 𝑘: 𝐹𝑖,𝑘 ≥ min(𝐹𝑖,𝑗, 𝐹𝑗,𝑘)より, 任意のパスについて
𝐹𝑖,𝑝 ≥ min(𝐹𝑖,𝑗, 𝐹𝑗,𝑘, … , 𝐹𝑜,𝑝)
∴ 𝐹𝑖,𝑝 = min(𝐹𝑖,𝑗, 𝐹𝑗,𝑘, … , 𝐹𝑜,𝑝)
𝑁0 𝑁1 𝑁2 𝑁3
𝑁0 0 10 15 15
𝑁1 10 0 10 10
𝑁2 15 10 0 20
𝑁3 15 10 20 0
要望𝐹
0
1
215 3
10
20
16
アルゴリズム1
要望 𝐹 が与えられたときに, その要望を満たすグラフを構成するアルゴリズム
1. 𝐹 から最大全域木を作る(プリム法などが知られている)
2. 定理 1 で与えた不等式を満たすか確かめる
3. 確かめて不等式を満たすなら 構成した木を返す
𝑂 𝑁2 (𝑁は頂点数)で計算できる
17
定理2
ネットワークグラフ(𝑉, 𝐸, 𝑏) が与えられるので, 各頂点間の最大フロー (𝐹𝑖,𝑗)の行列𝐹を構成する, とい
う問題を考える
18
𝑁0 𝑁1 𝑁2 𝑁3
𝑁0 0 10 15 15
𝑁1 10 0 10 10
𝑁2 15 10 0 20
𝑁3 15 10 20 0
𝐹
0
1
215 3
10
20
定理2
観察
ネットワークグラフから構成される行列 𝐹 は当然実現可能
定理 1 の証明から, 行列 𝐹 に現れるユニークな最大フローの値は高々𝑁 − 1種類
𝑁頂点から 2 つの頂点を選ぶ方法は 𝑁(𝑁 − 1)/2あるけど全部調べる必要はないのでは?
19
定理2
上記の問題は𝑁 − 1回最大フローを計算するだけで行列𝐹を構成できる。
これを示すためにいくつかの補題を示す
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,4
5,6
17
26
アルゴリズム2 の具体例
頂点1, 2 を選択
最小カットは (1 | 2, 3, 4, 5, 6)で,
サイズは18
2
3,4
5,6
17
1
18
27
アルゴリズム2 の具体例
頂点3, 6 を選択
最小カットは (1, 2, 6 | 3, 4, 5)で,
サイズは13
2
3,4,
5
17
1
18
6
13
28
アルゴリズム2 の具体例
頂点4, 5 を選択
最小カットは (4 | 1, 2, 3, 5, 6)で,
サイズは14
2 3, 5
17
1
18
6
13
4
14
29
アルゴリズム2 の具体例
頂点3, 5 を選択
最小カットは (3 | 1, 2, 4, 5, 6)で,
サイズは15
すべてのノードがひとつの頂点集合になったので終了
2 5
17
1
18
6
13
4
14
15
3
30
補題2
上記のアルゴリズムで木を生成できるが,
2 つの頂点𝑁𝑖, 𝑁𝑗間のフローは,
min(𝑣𝑖1, 𝑣𝑖2, … , 𝑣𝑖𝑟)
で表される(𝑣𝑖𝑘は頂点間のパスの重みを表す)
例) 頂点 1-4 間の最大フローは 13
2 5
17
1
18
6
13
4
14
15
3
31
補題2の証明
𝐹𝑖𝑗 ≤ min(𝑣1, 𝑣2, … , 𝑣𝑟)
は成り立つ
∵それぞれの edge は, その edge で分割される 2 つの集合間のカットになっている。
𝐹𝑖𝑗は𝑁𝑖, 𝑁𝑗の最小カットのサイズを表しているので, これらの集合によるカット以下である。
あとは
𝐹𝑖𝑗 ≥ min(𝑣1, 𝑣2, … , 𝑣𝑟)
を示せば良い
32
補題2の証明
各ノードは集合をグラフの頂点部分集合と対応している。
隣接したノード 2 つが対応している頂点部分集合を 𝑆1, 𝑆2とする。
このとき, 頂点 𝑁𝑖 ∈ 𝑆1, 𝑁𝑗 ∈ 𝑆2が存在して, 𝑁𝑖, 𝑁𝑗間の最大フローは𝑣であるということを示す
𝑆2𝑆1
𝑣
33
補題2の証明
これが証明できると, 定理 1 から出来た木の中で
𝐹𝑖𝑗 ≥ min(𝑣1, 𝑣2, … , 𝑣𝑟)
が成り立つ
定理1:
要望 𝐹 が実現可能であるための必要十分条件は,
∀𝑖, 𝑗, 𝑘: 𝐹𝑖,𝑘 ≥ min(𝐹𝑖,𝑗, 𝐹𝑗,𝑘)
が成り立つことである。
34
補題2の証明
頂点 𝑁𝑖と 𝑁𝑗について分割して右図のようになったとする
(集合 𝐴𝑖, 𝐴𝑗で分割)
集合 𝐴𝑖, 𝐴𝑗はコスト 𝑣 で隣接しているが,
頂点 𝑁𝑖 ∈ 𝐴𝑖と 𝑁𝑗 ∈ 𝐴𝑗の最大フローが𝑣
35
補題2の証明
この後, 集合 𝐴𝑖内の頂点 𝑁𝑝, 𝑁𝑞で木を分割したとする
頂点 𝑁𝑝側の集合を 𝐴𝑖 𝑝
頂点 𝑁𝑞側の集合を 𝐴𝑖 𝑞
𝐴𝑖 𝑝
と 𝐴𝑖 𝑗
は隣接している
36
補題2の証明
𝑁𝑖 ∈ 𝐴𝑖 𝑝
のとき
𝑁𝑖 ∈ 𝐴𝑖 𝑝
, 𝑁𝑗 ∈ 𝐴𝑗が最大フロー 𝑣を実現するので OK
37
補題2の証明
𝑁𝑖 ∈ 𝐴𝑖 𝑞
のとき
定理1 から
𝐹𝑗𝑝 ≥ min(𝐹𝑗𝑖, 𝐹𝑖𝑞, 𝐹𝑞𝑝)
𝑁𝑗, 𝑁𝑝間のフローを考えるとき集合 𝐴𝑖 𝑞
を一点とみなせ
る(補題2)から
𝐹𝑗𝑝 ≥ min 𝐹𝑗𝑖, 𝐹𝑞𝑝
= min(𝑣, 𝑣′)
38
補題2の証明
辺 𝑣′は頂点 𝑁𝑖, 𝑁𝑗をカットする辺なので,
𝑣′ ≥ 𝐹𝑖𝑗 = 𝑣
よって
𝐹𝑗𝑝 ≥ 𝑣
辺 𝑣は頂点 𝑁𝑗, 𝑁𝑝をカットする辺なので,
𝐹𝑗𝑝 ≤ 𝑣
∴ 𝐹𝑗𝑝 = 𝑣
よって𝐴𝑖 𝑝
, 𝐴𝑗間は頂点𝑁𝑗, 𝑁𝑝が最大フローを𝑣にする
39
概要
1. Gomory-Hu 木
2. Satisfactory Network
40
Satisfactory Network
各頂点間(𝑁𝑖, 𝑁𝑗)について, この頂点間の最大フローを 𝑅𝑖,𝑗以上にしたいという要望があったと
する。
この条件を満たすネットワークグラフのことを Satisfactory Network と言う。
この中で, 各辺の容量の和を最小化したい。
41
Satisfactory Network
Satisfactory Network の例
𝑁0 𝑁1 𝑁2 𝑁3
𝑁0 0 10 15 10
𝑁1 10 0 10 10
𝑁2 15 10 0 20
𝑁3 10 10 20 0
0
1
215
要望𝑅
3
10
20
42
Satisfactory Network について考察
𝑅𝑖,𝑗 に関して 最大全域木をつくる
この木に関して,
𝑅𝑖,𝑝 ≤ min(𝑅𝑖,𝑗, 𝑅𝑗,𝑘, … , 𝑅 𝑜𝑝)
が成り立つので,
𝐹𝑖,𝑝 ≥ min 𝐹𝑖,𝑗, 𝐹𝑗,𝑘, … , 𝐹𝑜,𝑝
≥ min 𝑅𝑖,𝑗, 𝑅𝑗,𝑘, … , 𝑅 𝑜,𝑝
≥ 𝑅𝑖,𝑝
つまり, 最大全域木について 𝑅 の条件を満たせば良い(この最大全域木のことを dominant tree
と言う)。
43
Satisfactory Network について考察
頂点 𝑁𝑖, 𝑁𝑗間の辺の容量を 𝐵𝑖,𝑗とすると, 全体で使う容量(total branch capacity) は,
1
2
𝑖 ≠𝑗
𝐵𝑖,𝑗
ここで, 𝑢𝑖 = max 𝑅𝑖,𝑗 とすると,
1
2
𝑖 ≠𝑗
𝐵𝑖,𝑗 ≥
1
2
𝑖
𝑢𝑖 ≝ 𝐶𝐿
(𝐶𝐿は total branch capacity の下限)
44
Satisfactory Network について考察
木 𝑇 に対して 𝑅𝑖,𝑗が決まっている → 𝐶𝐿が決まる
木 𝑇′ に対して 𝑅′𝑖,𝑗が決まっている → 𝐶′ 𝐿が決まる
45
Satisfactory Network について考察
𝑅𝑖,𝑗
′′
= 𝑅𝑖,𝑗 + 𝑅𝑖,𝑗
′
とすると,
𝐶′′ 𝐿 ≤ 𝐶𝐿 + 𝐶𝐿
′
特に𝑅𝑖,𝑗, 𝑅′𝑖,𝑗がそれぞれ木𝑇, 𝑇′ で一定である(uniform tree)ならば,
𝐶′′ 𝐿 = 𝐶𝐿 + 𝐶𝐿
′
46
Satisfactory Network について考察
同様に,
𝐵𝑖,𝑗
′′
= 𝐵𝑖,𝑗 + 𝐵𝑖,𝑗
′
と容量を決めると,
𝐹𝑖,𝑗
′′
≥ 𝐹𝑖,𝑗 + 𝐹𝑖,𝑗
′
47
Satisfactory Network について考察
Dominant tree に対して,
min(𝑅𝑖,𝑗)による uniform tree
𝑅𝑖,𝑗 − min(𝑅𝑖,𝑗) の要求を持つ森
を作ると, この木に対して
𝐶𝐿は一定
𝐹𝑖,𝑗は 𝑅𝑖,𝑗以上
であるような木を構成することができる
48
アルゴリズム3
入力:ネットワークグラフが満たしてほしい要求 𝑅
出力:各頂点間の最大フローが 𝑅𝑖,𝑗以上になるネットワークグラフ
1. 要求 R から最大全域木(dominant tree) を作る
2. 以下を繰り返す
1. いくつかの木に分かれているので, それぞれの木で
1. コスト最小の辺を選ぶ
2. 木の各辺を 𝑟𝑖,𝑗 = 𝑟𝑖 ,𝑗 − 𝑚𝑖𝑛𝑅として更新する
49
アルゴリズム3
3. Step2 で出来た tree はすべて uniform tree になっている。各コストを𝛽とすると, 各辺のコス
トが 𝛽/2 となるように連結成分でループを作る
4. 上記のループをすべて足しこんだものが答え
50
アルゴリズム3 の例
要求が以下のようなグラフになっていたとする
51
アルゴリズム3 の例
Step 1: 要求 R から最大全域木(dominant tree) を作る
52
アルゴリズム3 の例
Step 2: いくつかの木に分かれているので, それぞれの木で
コスト最小の辺を選ぶ(𝑚𝑖𝑛𝑅とする)
木の各辺を 𝑟𝑖,𝑗 = 𝑟𝑖 ,𝑗 − 𝑚𝑖𝑛𝑅として更新する
53
アルゴリズム3 の例
この dominant tree について考える
1
2
3
45
9
6
7
5
54
アルゴリズム3 の例
まず 2 つの木に分割する
木で最小の辺は 5
1
2
3
45
9
6
7
5
55
アルゴリズム3 の例
1
2
3
45
5
5
5
5
1
2
3
45
4
1
2
Uniform tree
56
アルゴリズム3 の例
1
2
3
4
1 1
2
3
1
1
1
2
3
3
57
アルゴリズム3 の例
Step3: uniform tree からループを作る
1
2
3
45
5
5
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
3
1/2
1/2
1/2
5 4
2
1 3
3
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

Multi terminal networkflows