More Related Content Similar to Multi terminal networkflows Similar to Multi terminal networkflows (20) Multi terminal networkflows2. フローとは
グラフ 𝐺(𝑉, 𝐸) の各枝 𝑒 ∈ 𝐸に対して, 非負実数の容量 𝑐(𝑒) が定義されている。
また, グラフの 2 点 𝑠, 𝑡 ∈ 𝑉を指定する。
s
2
1 3
t
10
2
6
6 3
8
5
2
3. フローとは
このグラフ 𝐺 において, 関数 𝑓: 𝐸 → ℝ+ が以下を満たすとき, 𝑓 をフローネットワークと呼ぶ。
容量制限: 0 ≤ 𝑓 𝑒 ≤ 𝑐 𝑒
フロー保存則: ∀𝑣 ∈ 𝑉 − 𝑠, 𝑡 : 𝑣,𝑤 ∈𝐸 𝑓 𝑣, 𝑤 − 𝑤,𝑣 ∈𝐸 𝑓 𝑤, 𝑣 = 0
10 6
4
1
5
6
s
2
1 3
t
10
2
6
6 3
8
5
3
フロー量は 11
4. カットとは
グラフ G(V, E) の頂点 V の 2 分割 (S, T)のことをカットと言う。
カットに関して, 始点 𝑠 ∈ 𝑆, 𝑡 ∈ 𝑇のとき, ある辺 𝑢, 𝑣 ∈ 𝐸が𝑢 ∈ 𝑆, 𝑣 ∈ 𝑇を満たすとき, 𝑢, 𝑣 を
カットエッジと呼び, カットエッジのコストの総和をカットのサイズと言う。
カットサイズは 11
s
2
1 3
t
10
2
6
6 3
8
5
4
10. 定理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
12. 定理1
(必要性)
背理法で示す。
𝐹𝑖,𝑘 < min(𝐹𝑖,𝑗, 𝐹𝑗,𝑘)
が成り立つとすると, 頂点 𝑁𝑖, 𝑁𝑘 にあるカット 𝐴 が存在して, そのカットサイズは 𝐹𝑖,𝑘 になる。
𝑁𝑗 ∈ 𝐴 であるとすると, (𝑁𝑗, 𝑁𝑘)は 𝐴 でカットすればカットサイズが 𝐹𝑗,𝑘より小さくなるので, 最小
性に矛盾。
𝑁𝑗 ∈ 𝑉 − 𝐴の場合も 𝐹𝑖,𝑗について同様のことが言える。
12
13. 定理1
(十分性)
∀𝑖, 𝑗, 𝑘: 𝐹𝑖,𝑘 ≥ min(𝐹𝑖,𝑗, 𝐹𝑗,𝑘)
が成り立っているという条件の下で, 要望 𝐹 を満たすグラフを構成する。
これは,要望 𝐹 に関する最大全域木を作れば良い。
13
15. 定理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
16. 定理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
17. アルゴリズム1
要望 𝐹 が与えられたときに, その要望を満たすグラフを構成するアルゴリズム
1. 𝐹 から最大全域木を作る(プリム法などが知られている)
2. 定理 1 で与えた不等式を満たすか確かめる
3. 確かめて不等式を満たすなら 構成した木を返す
𝑂 𝑁2 (𝑁は頂点数)で計算できる
17
18. 定理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
30. アルゴリズム2 の具体例
頂点3, 5 を選択
最小カットは (3 | 1, 2, 4, 5, 6)で,
サイズは15
すべてのノードがひとつの頂点集合になったので終了
2 5
17
1
18
6
13
4
14
15
3
30
32. 補題2の証明
𝐹𝑖𝑗 ≤ min(𝑣1, 𝑣2, … , 𝑣𝑟)
は成り立つ
∵それぞれの edge は, その edge で分割される 2 つの集合間のカットになっている。
𝐹𝑖𝑗は𝑁𝑖, 𝑁𝑗の最小カットのサイズを表しているので, これらの集合によるカット以下である。
あとは
𝐹𝑖𝑗 ≥ min(𝑣1, 𝑣2, … , 𝑣𝑟)
を示せば良い
32
34. 補題2の証明
これが証明できると, 定理 1 から出来た木の中で
𝐹𝑖𝑗 ≥ min(𝑣1, 𝑣2, … , 𝑣𝑟)
が成り立つ
定理1:
要望 𝐹 が実現可能であるための必要十分条件は,
∀𝑖, 𝑗, 𝑘: 𝐹𝑖,𝑘 ≥ min(𝐹𝑖,𝑗, 𝐹𝑗,𝑘)
が成り立つことである。
34
38. 補題2の証明
𝑁𝑖 ∈ 𝐴𝑖 𝑞
のとき
定理1 から
𝐹𝑗𝑝 ≥ min(𝐹𝑗𝑖, 𝐹𝑖𝑞, 𝐹𝑞𝑝)
𝑁𝑗, 𝑁𝑝間のフローを考えるとき集合 𝐴𝑖 𝑞
を一点とみなせ
る(補題2)から
𝐹𝑗𝑝 ≥ min 𝐹𝑗𝑖, 𝐹𝑞𝑝
= min(𝑣, 𝑣′)
38
39. 補題2の証明
辺 𝑣′は頂点 𝑁𝑖, 𝑁𝑗をカットする辺なので,
𝑣′ ≥ 𝐹𝑖𝑗 = 𝑣
よって
𝐹𝑗𝑝 ≥ 𝑣
辺 𝑣は頂点 𝑁𝑗, 𝑁𝑝をカットする辺なので,
𝐹𝑗𝑝 ≤ 𝑣
∴ 𝐹𝑗𝑝 = 𝑣
よって𝐴𝑖 𝑝
, 𝐴𝑗間は頂点𝑁𝑗, 𝑁𝑝が最大フローを𝑣にする
39
43. Satisfactory Network について考察
𝑅𝑖,𝑗 に関して 最大全域木をつくる
この木に関して,
𝑅𝑖,𝑝 ≤ min(𝑅𝑖,𝑗, 𝑅𝑗,𝑘, … , 𝑅 𝑜𝑝)
が成り立つので,
𝐹𝑖,𝑝 ≥ min 𝐹𝑖,𝑗, 𝐹𝑗,𝑘, … , 𝐹𝑜,𝑝
≥ min 𝑅𝑖,𝑗, 𝑅𝑗,𝑘, … , 𝑅 𝑜,𝑝
≥ 𝑅𝑖,𝑝
つまり, 最大全域木について 𝑅 の条件を満たせば良い(この最大全域木のことを dominant tree
と言う)。
43
44. Satisfactory Network について考察
頂点 𝑁𝑖, 𝑁𝑗間の辺の容量を 𝐵𝑖,𝑗とすると, 全体で使う容量(total branch capacity) は,
1
2
𝑖 ≠𝑗
𝐵𝑖,𝑗
ここで, 𝑢𝑖 = max 𝑅𝑖,𝑗 とすると,
1
2
𝑖 ≠𝑗
𝐵𝑖,𝑗 ≥
1
2
𝑖
𝑢𝑖 ≝ 𝐶𝐿
(𝐶𝐿は total branch capacity の下限)
44
50. アルゴリズム3
3. Step2 で出来た tree はすべて uniform tree になっている。各コストを𝛽とすると, 各辺のコス
トが 𝛽/2 となるように連結成分でループを作る
4. 上記のループをすべて足しこんだものが答え
50
53. アルゴリズム3 の例
Step 2: いくつかの木に分かれているので, それぞれの木で
コスト最小の辺を選ぶ(𝑚𝑖𝑛𝑅とする)
木の各辺を 𝑟𝑖,𝑗 = 𝑟𝑖 ,𝑗 − 𝑚𝑖𝑛𝑅として更新する
53