maximum flows by ibfs
TRANSCRIPT
![Page 1: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/1.jpg)
Maximum Flows by Incremental Breadth–First Search
![Page 2: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/2.jpg)
Introduction
• 最大フローの計算
– 典型的な最適化問題
– いろんなところで使われている
• 最小カット
– コンピュータビジョン(Graph cuts)では重要なツール
• Segmentation
• Stereo
• Multiview reconstruction
![Page 3: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/3.jpg)
Graph cuts
• 画像に対応するグリッドグラフ
– s,tは全頂点と接続
• BKアルゴリズム
– Boykov & Kolmogorov
– 実用的に高速だが…
– 多項式時間での上界は知られていない
指数時間かかるような例は知られていないが ビジョン以外のグラフでは実用的ではない
![Page 4: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/4.jpg)
Theoretical point of view
• augmenting path
– Ford-Fulkerson
– Edmonds-Karp
• network simplex
• blocking flow (Dinic)
• push-relabel Fast!
![Page 5: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/5.jpg)
Practical point of view
• blocking flow (Dinic)
• push-relabel
• visionのグラフでは
– BKが実用的
汎用に高速
![Page 6: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/6.jpg)
In this paper…
• BK + shortest augmentation path
– blocking flow (Dinic)とよく似たアルゴリズム
• 補助ネットワークの構築がボトルネック
– Incremental mannerにより低コストで 補助ネットワークを構築
• BKのように両方向から構築
Incremental Breadth First Search (IBFS)
![Page 7: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/7.jpg)
Definitions and Notation
• 割愛
– 必要ならばその都度定義
![Page 8: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/8.jpg)
BKアルゴリズム
– Growth
– Augment
– Adoption
s t
![Page 9: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/9.jpg)
BKアルゴリズム - growth
s t
![Page 10: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/10.jpg)
BKアルゴリズム - growth
s t
![Page 11: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/11.jpg)
BKアルゴリズム - growth
s t
![Page 12: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/12.jpg)
BKアルゴリズム - growth
s t
![Page 13: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/13.jpg)
BKアルゴリズム - augment
s t
![Page 14: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/14.jpg)
BKアルゴリズム - augment
s t
飽和
orphans
![Page 15: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/15.jpg)
BKアルゴリズム - adoption
s t v
u v
Orphan頂点v の親を探す
vと接続する残余容量が正の辺(u,v)
![Page 16: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/16.jpg)
BKアルゴリズム - adoption
s t v
u v
Orphan頂点v の親を探す
vと接続する残余容量が正の辺(u,v)
親が見つかった!! 親が見つからなかった
Free頂点になる
![Page 17: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/17.jpg)
BKアルゴリズム
• augmenting pathの一種
– 見つかるパスは最短ではない
– 多項式時間での上界は不明
![Page 18: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/18.jpg)
IBFS overview
• 探索木S,Tを幅優先木として保持
– s,tからの距離をDs, Dt
– 探索木Sの頂点のsからの距離はDs以下
≃ 木の高さ
s t
𝐷𝑠 = 𝐷𝑡=2
𝐿 = 𝐷𝑠 + 𝐷𝑡 + 1 augmenting pathの長さの下界
![Page 19: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/19.jpg)
各頂点の取りうる値
• S-vertex
• T-vertex
• S-orphan
• T-orphan
• N-vertex
s t
![Page 20: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/20.jpg)
IBFS overview
• 𝑑𝑠(𝑣) : 頂点𝑣 ∈ 𝑆 のラベル
• 𝑑𝑡(𝑣) : 頂点𝑣 ∈ 𝑇 のラベル
s t
2sd1sd
1td2td
![Page 21: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/21.jpg)
IBFS overview
• ラベルの有効性
– 残余辺(𝑢, 𝑣)について𝑑𝑠 𝑣 ≤ 𝑑𝑠 𝑢 + 1
– T側は対称
• 𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐 (𝑢, 𝑣)
– S側 : 残余辺(𝑢, 𝑣)について𝑑𝑠 𝑢 = 𝑑𝑠 𝑣 − 1
– T側 : 残余辺(𝑢, 𝑣)について𝑑𝑠 𝑣 = 𝑑𝑠 𝑢 − 1
1sd 2sd
![Page 22: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/22.jpg)
IBFS : Initially
• 𝑆 = 𝑠 , 𝑇 = 𝑡
• 𝑎𝑐𝑡𝑖𝑣𝑒 𝑙𝑖𝑠𝑡 = 𝑠, 𝑡
• 𝑑𝑠 𝑠 = 𝑑𝑡 𝑣 = 0
• 𝐷𝑠 = 𝐷𝑡 = 0
• 探索木Sを成長させると仮定
s t
![Page 23: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/23.jpg)
IBFS : growth
• 探索木Sを1段階成長させる
• 𝑑𝑠 𝑣 = 𝐷𝑠 の頂点𝑣をすべてactiveに
s t
2sd1sd
2sD a
a
a
a
![Page 24: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/24.jpg)
IBFS : growth
• active頂点𝑣を選択して残余辺 𝑣, 𝑤 を調べる
– 頂点𝑤がN-vertexなら
• 𝑝 𝑤 = 𝑣
• 𝑑𝑠 𝑤 = 𝐷𝑠 + 1
s t a
a
a
a
v w
w
2sd
2sD
1sd 3sd
![Page 25: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/25.jpg)
IBFS : growth
• active頂点𝑣を選択して残余辺 𝑣, 𝑤 を調べる
– 頂点𝑤がT-vertexなら
• augmentationへ
s t a
a
a
a
w v
2sd
2sD
1sd
![Page 26: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/26.jpg)
IBFS : augmentation
• BKと同じ
– 見つかったパスにフローを流す
• 最短s-tパスが見つかる(あとあと証明)
s t a
a
a
a
w v
![Page 27: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/27.jpg)
IBFS : adoption
• bridge(𝑣, 𝑤)以外の辺が飽和
– orphanが誕生
• orphanの親を探す
s t
a w v
![Page 28: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/28.jpg)
IBFS : adoption
• orphan頂点𝑣の親を探す
– 𝑑𝑠 𝑢 = 𝑑𝑠 𝑣 − 1となる残余辺(𝑢, 𝑣)を探す
• 𝑝 𝑣 = 𝑢
• 𝑣をS-vertexに
u
v
1sd 2sd
orphan
𝒗は同じラベルをもつ S-vertexになる
![Page 29: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/29.jpg)
IBFS : adoption
• orphan-relabel
– 残余辺(𝑢, 𝑣)の中で𝑑𝑠 𝑢 が一番小さい頂点𝑢を探す
• そんな𝑢が存在しない or 𝑑𝑠(𝑢) > 𝐷𝑠
– 𝑣をN-vertexにして𝑣の子をS-orphanに
– 𝑝 𝑣 = 𝑢, 𝑑𝑠 𝑣 = 𝑑𝑠 𝑢 + 1
– 𝑣をS-vertexに, 𝑣の子をS-orphanに
v orphan
orphan
6sd
3sd
8sd
4sd
親としてorphanを選んでもいい?
𝒅𝒔(𝒗)をなるべく小さく = s-vパスの長さをなるべく短く
![Page 30: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/30.jpg)
IBFS
• ループが終了したとき、ラベル𝐷𝑠 + 1をもつ頂点が…
– 存在する
• 𝐷𝑠 += 1 して次のループへ
– 存在しない
• 終わり
![Page 31: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/31.jpg)
For efficiency
• 𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐
– どの辺までscanしたかを記憶
• ラベルが変わったとき
• N-vertexが木に加えられたとき
v
Scan済み
current arc こっからscan
先頭に戻す
![Page 32: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/32.jpg)
CORRECTNESS AND RUNNING TIME
4.1
Sを成長させたと仮定
![Page 33: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/33.jpg)
Lemma 1
• (𝑢, 𝑣)が残余辺ならば…
1. 𝑢 ∈ 𝑆, 𝑑𝑠 𝑢 ≤ 𝐷𝑠 𝑎𝑛𝑑 𝑣 ∉ 𝑆 → 𝑢はactiveなS-vertex
2. 𝑣 ∈ 𝑇, 𝑢 ∉ 𝑇 → 𝑑𝑡 𝑣 = 𝐷𝑡
3. 𝐷𝑠の増加後に𝑢 ∈ 𝑆 𝑎𝑛𝑑 𝑣 ∉ 𝑆 → 𝑑𝑠 𝑢 = 𝐷𝑠
s t a
a
a
a
a
2sd
2sD
1sd
![Page 34: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/34.jpg)
Lemma1 証明 : 帰納法
• 最初のループ(基底)
– 成り立つ
• 一つ前のループで成り立ってると仮定
– 次のループの初期状態では
• 𝑑𝑠 𝑢 = 𝐷𝑠となる頂点𝑢をすべてactiveにする
– ラベルを変えてないので(2)(3)は成り立つ
– (1)も成り立つ
![Page 35: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/35.jpg)
Lemma1 証明 : 帰納法
• Growth step on 𝑢 without augmentation
– 頂点𝑢はinactiveに
– 残余辺(𝑢, 𝑣)をすべてscan & 全ての𝑣をS-vertexに
– Tには何も影響がない
(1)は成り立つ
(2)は成り立つ u
![Page 36: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/36.jpg)
Lemma1 証明 : 帰納法
• Augmentation Step
– (𝑢, 𝑣)が飽和
– augmentにより新たな残余辺 𝑢, 𝑣 , 𝑢 ∈ 𝑆が誕生する可能性
• (𝑢, 𝑣)が飽和してるときに(𝑣, 𝑢)にフローを流した
– 𝑣 = 𝑝(𝑢)
• 𝑢 ∈ 𝑆なら当然v ∈ 𝑆でないと
– 逆(対称)の議論をすれば
• 新たに誕生した残余辺について(2)は適用できない(𝑢, 𝑣 ∈ 𝑇)
(1)は適用できない
Lemma1は適用できなくなる
s
v
u
![Page 37: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/37.jpg)
Lemma1 証明 : 帰納法
• Orphan-relabel(adoption) step
– 頂点𝑣が𝑆から消えることも…
• 𝑢 ∈ 𝑆, 𝑑𝑠(𝑢) ≤ 𝐷𝑠となる残余辺(𝑢, 𝑣)が存在すれば
– Orphan-relabelにより𝑣はS-vertex
• 逆(対称)の議論により
(1)は成り立つ
(2)は成り立つ
![Page 38: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/38.jpg)
Lemma1 証明 : 帰納法
• There are no active vertex
– 𝑢 ∈ 𝑆, 𝑣 ∉ 𝑆となる残余辺(𝑢, 𝑣)は…
• 𝑑𝑠(𝑢) > 𝐷𝑠のときだけ(𝑑𝑠 𝑢 = 𝐷𝑠 + 1)
– 木を1段階成長させる
• 𝐷𝑠 + +
• 𝑑𝑠 𝑢 = 𝐷𝑠
(3)は成り立つ
![Page 39: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/39.jpg)
Lemma2
1. 頂点𝑢 ∈ 𝑆 ∪ 𝑇は有効なラベル𝑑𝑠, 𝑑𝑡をもつ
2. ・各頂点𝑢 ∈ 𝑆について、𝑢の𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐は 𝑢へ入る最初の𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐に等しいか先行する ・各頂点𝑢 ∈ 𝑇について、𝑢の𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐は 𝑢から出る最初の𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐に等しいか先行する
3. ・ 𝑢 ∈ 𝑆なら(𝑝 𝑢 , 𝑢)は𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒
・ 𝑢 ∈ 𝑇なら 𝑢, 𝑝 𝑢 は𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒
4. 各頂点𝑣について、ラベル𝑑𝑠 𝑣 , 𝑑𝑡 𝑣 は減少しない
![Page 40: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/40.jpg)
Lemma2 証明
• 最初のループ(基底)
– 成り立つ
• 一つ前のループで成り立ってると仮定
– 次のループを考える
![Page 41: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/41.jpg)
Lemma2 証明
• Growth step on 𝑢 that add a new vertex 𝑣 to 𝑆
– 𝑑𝑠 𝑣 = 𝑑𝑠 𝑢 + 1 = 𝐷𝑠 + 1
– 各残余辺 𝑤, 𝑣 , 𝑤 ∈ 𝑆について
• Lemma1(1)より𝑤は𝑎𝑐𝑡𝑖𝑣𝑒
• Activeな頂点のラベルは𝐷𝑠
– 𝑣の𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐は𝑣の最初の辺
(3),(4)は成り立つ
1)()( vdDwd sss
(1)は成り立つ
(2)は成り立つ
highest possible label
v w
w
u
![Page 42: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/42.jpg)
Lemma2 証明
• Augmentation step
– ラベルを変えない
– 𝑝 𝑢 , 𝑢 にフローを流すと新たな残余辺(𝑢, 𝑝 𝑢 )が誕生
• 帰納法の仮定(3)より 𝑝 𝑢 , 𝑢 は𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒
– (𝑢, 𝑝 𝑢 )は𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒になりえない
• 𝑑𝑠 𝑝 𝑢 = 𝑑𝑠 𝑢 − 1
– 𝑝 𝑢 , 𝑢 にフローを流して飽和させた
• 𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒でなくなる
– 𝑢は𝑜𝑟𝑝ℎ𝑎𝑛になる
(4)は成り立つ
(2)は成り立つ
(1)は成り立つ
(3)は適用不可
![Page 43: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/43.jpg)
Lemma2 証明
• Adoption step on 𝑣
– 最初のscanではラベルを変えない
– 𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐からはじめる
• 帰納法の仮定(2)より最初の𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐 (𝑡𝑜 𝑣)が見つかる
• 𝑣の親がみつかったとき
– 𝑝 𝑣 , 𝑣 は𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒
– 𝑣の𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐は最初の𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐
(1)(4)は成り立つ
(2)(3)は成り立つ
![Page 44: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/44.jpg)
Lemma2 証明
• Orphan-relabel
– 残余辺(𝑢, 𝑣)の中で𝑑𝑠(𝑢)が最小となる𝑢を探す
• ラベルは有効
• 𝑝 𝑣 , 𝑣 は𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒
• 𝑣の𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐は最初の𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐
– 帰納法の仮定(1)より
• ラベルの有効性により頂点のラベルは減少しない
(1)(2)(3)は成り立つ
(4)は成り立つ
![Page 45: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/45.jpg)
correctness
• 𝑎𝑐𝑡𝑖𝑣𝑒頂点がなくなって木を成長させたとき
– ラベル𝐷𝑠 + 1をもつ頂点が存在しないとき
– Lemma1-(3?)により頂点𝑢 ∈ 𝑆, 𝑣 ∉ 𝑆の間に 残余辺(𝑢, 𝑣)は存在しない
• そのときのフロー = 最大フロー
![Page 46: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/46.jpg)
ふたつの補題
• Lemma3
– In growth step…
• 各頂点𝑣 ∈ 𝑆について、𝑠-𝑣パスは最短パス
• 各頂点𝑣 ∈ 𝑇について、𝑣-𝑡パスは最短パス
• Lemma4
– 𝐿 = 𝐷𝑠 + 𝐷𝑡 + 1は𝑎𝑢𝑔𝑚𝑒𝑛𝑡𝑖𝑛𝑔 𝑝𝑎𝑡ℎの長さの下界
– アルゴリズムは常に最短パスに沿ってフローを流す
![Page 47: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/47.jpg)
Lemma5
• 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙によりラベルは増加する
![Page 48: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/48.jpg)
Lemma5 : 証明
• 𝑜𝑟𝑝ℎ𝑎𝑛 𝑣 ∈ 𝑆の𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙を考える
– 𝑈 = {𝑢|𝑢 ∈ 𝑆, 𝑢, 𝑣 が残余辺}
– Lemma2-(2)より 𝑣の𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐は𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐に先行か等しい
– 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙をしてるってことは…
• 最初のscanで𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐を見つけられなかった
• 𝑣への𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐が存在しない
![Page 49: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/49.jpg)
Lemma5 : 証明
• Lemma2-(1)よりラベルは有効
– 各頂点𝑢 ∈ 𝑈について𝑑𝑠 𝑢 ≥ 𝑑𝑠 𝑣 − 1
– 𝑑𝑠 𝑢 ≥ 𝑑𝑠 𝑣
• 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙により𝑣の親が見つかれば…
– 𝑑𝑠′ 𝑣 = 𝑑𝑠 𝑢 + 1 > 𝑑𝑠 𝑣
𝒂𝒅𝒎𝒊𝒔𝒔𝒊𝒃𝒍𝒆 𝒂𝒓𝒄が存在しないので
![Page 50: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/50.jpg)
Lemma5 : 証明
• 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙により𝑣が𝑆から取り除かれた(N-vertex)
– 𝑑𝑠′ 𝑣 : そのときのラベル
– 𝑣はのちのち𝑤 ∈ 𝑆の𝑔𝑟𝑜𝑤𝑡ℎにより𝑆に再度取り込まれるかも
• 𝑤 ∈ 𝑈ならLemma2より𝑑𝑠(𝑤)は減少しないので
– 𝑣が𝑆に再度取り込まれたときは𝑑𝑠 𝑣 > 𝑑𝑠′ 𝑣
![Page 51: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/51.jpg)
• 𝑤 ∉ 𝑈のとき
– (𝑤, 𝑣)は𝑣が𝑆から取り除かれたあとに残余辺になった
– 𝑣, 𝑤 , 𝑣 ∉ 𝑆にフローを流した
• 𝑤 ∉ 𝑆のときだけ
– Wもある時点でSから取り除かれ再度Sに取り込まれた
• 𝑑𝑠 𝑤 = 𝐷𝑠 + 1 ≥ 𝑑𝑠′(𝑣)
– Lemma2より𝑑𝑠(𝑤)は減少しないので
• 𝑑𝑠 𝑣 = 𝑑𝑠 𝑤 + 1 ≥ 𝑑𝑠′ 𝑣 + 1
![Page 52: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/52.jpg)
Lemma6 : IBFSの計算量
• IBFS runs in 𝑂 𝑛2𝑚 time
![Page 53: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/53.jpg)
Lemma6 : 証明
• 3つのoperation
– Growth step with augmentation
– Growth step without augmentation
– Adoption step
![Page 54: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/54.jpg)
Lemma6 : 証明
• Growth step on 𝑣 without augmentation
– 𝑣のすべての辺をscanすれば𝑣は𝑖𝑛𝑎𝑐𝑡𝑖𝑣𝑒になる
– ラベルが変われば(増えれば)𝑣は再度𝑎𝑐𝑡𝑖𝑣𝑒になる
– 1ラベルにつき𝑑𝑒𝑔𝑟𝑒𝑒(𝑣)の辺をscanする
– 異なるラベルの数はn-1
)())1()(deg( nmOnvreeOv
![Page 55: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/55.jpg)
Lemma6 : 証明
• Adoption step on 𝑣
– Lemma5とLemma2-(4)により
• 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙後にラベルは増加し、その後も減少しない
– 1ラベルにつき各辺(𝑣, 𝑤)を2回scan
• 𝑂𝑟𝑝ℎ𝑎𝑛-𝑠𝑐𝑎𝑛
• 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙
– 異なるラベルの数はn-1
)(nmO
![Page 56: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/56.jpg)
Lemma6 : 証明
• Growth step on 𝑣 with augmentation
– Find s-t path
– Run augment
– 𝑇へのパスを見つけるために𝑣から出る辺をscan
• 前回augmentに使った辺を覚えておけば 辺のscanは1ラベルにつき1回
)(nmOwithoutのとき同様に 𝑣
前回のaugmentに使った
こっからscan
![Page 57: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/57.jpg)
Lemma6 : 証明
• Growth step on 𝑣 with augmentation
– Augmentationの実行
• 1回のaugmentationは𝑂(𝑛)
– 𝑣が𝑎𝑐𝑡𝑖𝑣𝑒な間は
• (𝑣, 𝑤)が再度飽和することはない
– 1ラベルにつき 𝑣, 𝑤 の飽和は1回
– 異なるラベルの数はn-1
– 𝑇へのパスを見つけるために𝑣から出る辺をscanも含むので
)(nmO
)( 2mnO
![Page 58: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/58.jpg)
VARIANTS OF IBFS
5
![Page 59: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/59.jpg)
Variants of IBFS
• 2つのバージョンを簡単に紹介
– Blocking flow version
– Delayed version
– 事前実験によると
• 定数ファクターが大きくて通常versionよりやや遅い
• 理論的観点では興味深い
• より詳細な実験・評価をする価値はある
![Page 60: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/60.jpg)
• Growth stepのはじめに
– 𝑏𝑙𝑜𝑐𝑘𝑖𝑛𝑔 𝑓𝑙𝑜𝑤を得られる補助ネットワークを構築可能
• 𝑣, 𝑤が同じ木に属する𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐 (𝑣, 𝑤)
• 残余辺 𝑣, 𝑤 𝑣 ∈ 𝑆, 𝑤 ∈ 𝑇
– 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙を遅らせることで𝑏𝑙𝑜𝑐𝑘𝑖𝑛𝑔 𝑓𝑙𝑜𝑤アルゴリズム
• 𝑜𝑟𝑝ℎ𝑎𝑛になったら同じレベルの頂点との接続を試みる
– ラベル(s/tからの距離)は増加
• 失敗したら𝑜𝑟𝑝ℎ𝑎𝑛になる(𝑟𝑒𝑙𝑎𝑏𝑒𝑙をしない)
• growth/augmentのあとに𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙を実行
Blocking flow version
によって誘導されるグラフ
![Page 61: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/61.jpg)
Delayed version
• IBFSでは有益な情報を無視している
– 例えば 𝐷𝑠 = 𝐷𝑡 = 10, 𝐿 = 21のとき
• 𝑑𝑠 𝑣 = 2の頂点𝑣 ∈ 𝑆について
• 𝑣から𝑡への距離の下界は19(21 − 2)
• 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙により𝑑𝑠 𝑣 = 5となった
• 𝑣からのみ到達可能な頂点も無視される
L=5+19=24になるまで 𝒗の処理を遅らせる
IBFSと比べて複雑だがよりよい状態遷移が起こるかも
![Page 62: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/62.jpg)
EXPERIMENTAL RESULTS
6
![Page 63: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/63.jpg)
Implementation Details
• S,Tを同時に成長させる
– 見つかるaugmenting pathが最短でなくなることも (shortest+1)
– S内でのs-vパス, T内でのw-tパスは共に最短
• 解析は有効
– 実験したらこの方がすこし速かった
• Low-levelな最適化をいくつか行った
– 公平を期すためBKにも同じ最適化を施した(UBK)
• BKより20%ほど速くなった
![Page 64: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/64.jpg)
result Augmenting pathの長さの総和
Growth stepでの 辺をscanした回数
Orphanが 辺をscanした回数
rootまでを Traverseした回数
全体的にIBFSの方が少し高速
IBFSはロバスト
![Page 65: Maximum flows by ibfs](https://reader033.vdocuments.net/reader033/viewer/2022052908/5596f8501a28ab6a228b45c7/html5/thumbnails/65.jpg)
Concluding Remarks
• Incremental BFSを提案
– BKよりロバストで実用的
• Aroraらが新たなpush-relabelアルゴリズムを提案
– Voronoi push-relabel (2010, ECCV)
– 多項式時間アルゴリズムでBKよりも優れている
– コードが公開されてないので直接比較出来なかったが…
• IBFSよりも高速?
• Delayed versionは研究する必要がある