65
Maximum Flows by Incremental Breadth–First Search

Maximum flows by ibfs

  • Upload
    nitmk

  • View
    957

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Maximum flows by ibfs

Maximum Flows by Incremental Breadth–First Search

Page 2: Maximum flows by ibfs

Introduction

• 最大フローの計算

– 典型的な最適化問題

– いろんなところで使われている

• 最小カット

– コンピュータビジョン(Graph cuts)では重要なツール

• Segmentation

• Stereo

• Multiview reconstruction

Page 3: Maximum flows by ibfs

Graph cuts

• 画像に対応するグリッドグラフ

– s,tは全頂点と接続

• BKアルゴリズム

– Boykov & Kolmogorov

– 実用的に高速だが…

– 多項式時間での上界は知られていない

指数時間かかるような例は知られていないが ビジョン以外のグラフでは実用的ではない

Page 4: Maximum flows by ibfs

Theoretical point of view

• augmenting path

– Ford-Fulkerson

– Edmonds-Karp

• network simplex

• blocking flow (Dinic)

• push-relabel Fast!

Page 5: Maximum flows by ibfs

Practical point of view

• blocking flow (Dinic)

• push-relabel

• visionのグラフでは

– BKが実用的

汎用に高速

Page 6: Maximum flows by ibfs

In this paper…

• BK + shortest augmentation path

– blocking flow (Dinic)とよく似たアルゴリズム

• 補助ネットワークの構築がボトルネック

– Incremental mannerにより低コストで 補助ネットワークを構築

• BKのように両方向から構築

Incremental Breadth First Search (IBFS)

Page 7: Maximum flows by ibfs

Definitions and Notation

• 割愛

– 必要ならばその都度定義

Page 8: Maximum flows by ibfs

BKアルゴリズム

– Growth

– Augment

– Adoption

s t

Page 9: Maximum flows by ibfs

BKアルゴリズム - growth

s t

Page 10: Maximum flows by ibfs

BKアルゴリズム - growth

s t

Page 11: Maximum flows by ibfs

BKアルゴリズム - growth

s t

Page 12: Maximum flows by ibfs

BKアルゴリズム - growth

s t

Page 13: Maximum flows by ibfs

BKアルゴリズム - augment

s t

Page 14: Maximum flows by ibfs

BKアルゴリズム - augment

s t

飽和

orphans

Page 15: Maximum flows by ibfs

BKアルゴリズム - adoption

s t v

u v

Orphan頂点v の親を探す

vと接続する残余容量が正の辺(u,v)

Page 16: Maximum flows by ibfs

BKアルゴリズム - adoption

s t v

u v

Orphan頂点v の親を探す

vと接続する残余容量が正の辺(u,v)

親が見つかった!! 親が見つからなかった

Free頂点になる

Page 17: Maximum flows by ibfs

BKアルゴリズム

• augmenting pathの一種

– 見つかるパスは最短ではない

– 多項式時間での上界は不明

Page 18: Maximum flows by ibfs

IBFS overview

• 探索木S,Tを幅優先木として保持

– s,tからの距離をDs, Dt

– 探索木Sの頂点のsからの距離はDs以下

≃ 木の高さ

s t

𝐷𝑠 = 𝐷𝑡=2

𝐿 = 𝐷𝑠 + 𝐷𝑡 + 1 augmenting pathの長さの下界

Page 19: Maximum flows by ibfs

各頂点の取りうる値

• S-vertex

• T-vertex

• S-orphan

• T-orphan

• N-vertex

s t

Page 20: Maximum flows by ibfs

IBFS overview

• 𝑑𝑠(𝑣) : 頂点𝑣 ∈ 𝑆 のラベル

• 𝑑𝑡(𝑣) : 頂点𝑣 ∈ 𝑇 のラベル

s t

2sd1sd

1td2td

Page 21: Maximum flows by ibfs

IBFS overview

• ラベルの有効性

– 残余辺(𝑢, 𝑣)について𝑑𝑠 𝑣 ≤ 𝑑𝑠 𝑢 + 1

– T側は対称

• 𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐 (𝑢, 𝑣)

– S側 : 残余辺(𝑢, 𝑣)について𝑑𝑠 𝑢 = 𝑑𝑠 𝑣 − 1

– T側 : 残余辺(𝑢, 𝑣)について𝑑𝑠 𝑣 = 𝑑𝑠 𝑢 − 1

1sd 2sd

Page 22: Maximum flows by ibfs

IBFS : Initially

• 𝑆 = 𝑠 , 𝑇 = 𝑡

• 𝑎𝑐𝑡𝑖𝑣𝑒 𝑙𝑖𝑠𝑡 = 𝑠, 𝑡

• 𝑑𝑠 𝑠 = 𝑑𝑡 𝑣 = 0

• 𝐷𝑠 = 𝐷𝑡 = 0

• 探索木Sを成長させると仮定

s t

Page 23: Maximum flows by ibfs

IBFS : growth

• 探索木Sを1段階成長させる

• 𝑑𝑠 𝑣 = 𝐷𝑠 の頂点𝑣をすべてactiveに

s t

2sd1sd

2sD a

a

a

a

Page 24: Maximum flows by ibfs

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

IBFS : growth

• active頂点𝑣を選択して残余辺 𝑣, 𝑤 を調べる

– 頂点𝑤がT-vertexなら

• augmentationへ

s t a

a

a

a

w v

2sd

2sD

1sd

Page 26: Maximum flows by ibfs

IBFS : augmentation

• BKと同じ

– 見つかったパスにフローを流す

• 最短s-tパスが見つかる(あとあと証明)

s t a

a

a

a

w v

Page 27: Maximum flows by ibfs

IBFS : adoption

• bridge(𝑣, 𝑤)以外の辺が飽和

– orphanが誕生

• orphanの親を探す

s t

a w v

Page 28: Maximum flows by ibfs

IBFS : adoption

• orphan頂点𝑣の親を探す

– 𝑑𝑠 𝑢 = 𝑑𝑠 𝑣 − 1となる残余辺(𝑢, 𝑣)を探す

• 𝑝 𝑣 = 𝑢

• 𝑣をS-vertexに

u

v

1sd 2sd

orphan

𝒗は同じラベルをもつ S-vertexになる

Page 29: Maximum flows by ibfs

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

IBFS

• ループが終了したとき、ラベル𝐷𝑠 + 1をもつ頂点が…

– 存在する

• 𝐷𝑠 += 1 して次のループへ

– 存在しない

• 終わり

Page 31: Maximum flows by ibfs

For efficiency

• 𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐

– どの辺までscanしたかを記憶

• ラベルが変わったとき

• N-vertexが木に加えられたとき

v

Scan済み

current arc こっからscan

先頭に戻す

Page 32: Maximum flows by ibfs

CORRECTNESS AND RUNNING TIME

4.1

Sを成長させたと仮定

Page 33: Maximum flows by ibfs

Lemma 1

• (𝑢, 𝑣)が残余辺ならば…

1. 𝑢 ∈ 𝑆, 𝑑𝑠 𝑢 ≤ 𝐷𝑠 𝑎𝑛𝑑 𝑣 ∉ 𝑆 → 𝑢はactiveなS-vertex

2. 𝑣 ∈ 𝑇, 𝑢 ∉ 𝑇 → 𝑑𝑡 𝑣 = 𝐷𝑡

3. 𝐷𝑠の増加後に𝑢 ∈ 𝑆 𝑎𝑛𝑑 𝑣 ∉ 𝑆 → 𝑑𝑠 𝑢 = 𝐷𝑠

s t a

a

a

a

a

2sd

2sD

1sd

Page 34: Maximum flows by ibfs

Lemma1 証明 : 帰納法

• 最初のループ(基底)

– 成り立つ

• 一つ前のループで成り立ってると仮定

– 次のループの初期状態では

• 𝑑𝑠 𝑢 = 𝐷𝑠となる頂点𝑢をすべてactiveにする

– ラベルを変えてないので(2)(3)は成り立つ

– (1)も成り立つ

Page 35: Maximum flows by ibfs

Lemma1 証明 : 帰納法

• Growth step on 𝑢 without augmentation

– 頂点𝑢はinactiveに

– 残余辺(𝑢, 𝑣)をすべてscan & 全ての𝑣をS-vertexに

– Tには何も影響がない

(1)は成り立つ

(2)は成り立つ u

Page 36: Maximum flows by ibfs

Lemma1 証明 : 帰納法

• Augmentation Step

– (𝑢, 𝑣)が飽和

– augmentにより新たな残余辺 𝑢, 𝑣 , 𝑢 ∈ 𝑆が誕生する可能性

• (𝑢, 𝑣)が飽和してるときに(𝑣, 𝑢)にフローを流した

– 𝑣 = 𝑝(𝑢)

• 𝑢 ∈ 𝑆なら当然v ∈ 𝑆でないと

– 逆(対称)の議論をすれば

• 新たに誕生した残余辺について(2)は適用できない(𝑢, 𝑣 ∈ 𝑇)

(1)は適用できない

Lemma1は適用できなくなる

s

v

u

Page 37: Maximum flows by ibfs

Lemma1 証明 : 帰納法

• Orphan-relabel(adoption) step

– 頂点𝑣が𝑆から消えることも…

• 𝑢 ∈ 𝑆, 𝑑𝑠(𝑢) ≤ 𝐷𝑠となる残余辺(𝑢, 𝑣)が存在すれば

– Orphan-relabelにより𝑣はS-vertex

• 逆(対称)の議論により

(1)は成り立つ

(2)は成り立つ

Page 38: Maximum flows by ibfs

Lemma1 証明 : 帰納法

• There are no active vertex

– 𝑢 ∈ 𝑆, 𝑣 ∉ 𝑆となる残余辺(𝑢, 𝑣)は…

• 𝑑𝑠(𝑢) > 𝐷𝑠のときだけ(𝑑𝑠 𝑢 = 𝐷𝑠 + 1)

– 木を1段階成長させる

• 𝐷𝑠 + +

• 𝑑𝑠 𝑢 = 𝐷𝑠

(3)は成り立つ

Page 39: Maximum flows by ibfs

Lemma2

1. 頂点𝑢 ∈ 𝑆 ∪ 𝑇は有効なラベル𝑑𝑠, 𝑑𝑡をもつ

2. ・各頂点𝑢 ∈ 𝑆について、𝑢の𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐は 𝑢へ入る最初の𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐に等しいか先行する ・各頂点𝑢 ∈ 𝑇について、𝑢の𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐は 𝑢から出る最初の𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐に等しいか先行する

3. ・ 𝑢 ∈ 𝑆なら(𝑝 𝑢 , 𝑢)は𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒

・ 𝑢 ∈ 𝑇なら 𝑢, 𝑝 𝑢 は𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒

4. 各頂点𝑣について、ラベル𝑑𝑠 𝑣 , 𝑑𝑡 𝑣 は減少しない

Page 40: Maximum flows by ibfs

Lemma2 証明

• 最初のループ(基底)

– 成り立つ

• 一つ前のループで成り立ってると仮定

– 次のループを考える

Page 41: Maximum flows by ibfs

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

Lemma2 証明

• Augmentation step

– ラベルを変えない

– 𝑝 𝑢 , 𝑢 にフローを流すと新たな残余辺(𝑢, 𝑝 𝑢 )が誕生

• 帰納法の仮定(3)より 𝑝 𝑢 , 𝑢 は𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒

– (𝑢, 𝑝 𝑢 )は𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒になりえない

• 𝑑𝑠 𝑝 𝑢 = 𝑑𝑠 𝑢 − 1

– 𝑝 𝑢 , 𝑢 にフローを流して飽和させた

• 𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒でなくなる

– 𝑢は𝑜𝑟𝑝ℎ𝑎𝑛になる

(4)は成り立つ

(2)は成り立つ

(1)は成り立つ

(3)は適用不可

Page 43: Maximum flows by ibfs

Lemma2 証明

• Adoption step on 𝑣

– 最初のscanではラベルを変えない

– 𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐からはじめる

• 帰納法の仮定(2)より最初の𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐 (𝑡𝑜 𝑣)が見つかる

• 𝑣の親がみつかったとき

– 𝑝 𝑣 , 𝑣 は𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒

– 𝑣の𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐は最初の𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐

(1)(4)は成り立つ

(2)(3)は成り立つ

Page 44: Maximum flows by ibfs

Lemma2 証明

• Orphan-relabel

– 残余辺(𝑢, 𝑣)の中で𝑑𝑠(𝑢)が最小となる𝑢を探す

• ラベルは有効

• 𝑝 𝑣 , 𝑣 は𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒

• 𝑣の𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐は最初の𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐

– 帰納法の仮定(1)より

• ラベルの有効性により頂点のラベルは減少しない

(1)(2)(3)は成り立つ

(4)は成り立つ

Page 45: Maximum flows by ibfs

correctness

• 𝑎𝑐𝑡𝑖𝑣𝑒頂点がなくなって木を成長させたとき

– ラベル𝐷𝑠 + 1をもつ頂点が存在しないとき

– Lemma1-(3?)により頂点𝑢 ∈ 𝑆, 𝑣 ∉ 𝑆の間に 残余辺(𝑢, 𝑣)は存在しない

• そのときのフロー = 最大フロー

Page 46: Maximum flows by ibfs

ふたつの補題

• Lemma3

– In growth step…

• 各頂点𝑣 ∈ 𝑆について、𝑠-𝑣パスは最短パス

• 各頂点𝑣 ∈ 𝑇について、𝑣-𝑡パスは最短パス

• Lemma4

– 𝐿 = 𝐷𝑠 + 𝐷𝑡 + 1は𝑎𝑢𝑔𝑚𝑒𝑛𝑡𝑖𝑛𝑔 𝑝𝑎𝑡ℎの長さの下界

– アルゴリズムは常に最短パスに沿ってフローを流す

Page 47: Maximum flows by ibfs

Lemma5

• 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙によりラベルは増加する

Page 48: Maximum flows by ibfs

Lemma5 : 証明

• 𝑜𝑟𝑝ℎ𝑎𝑛 𝑣 ∈ 𝑆の𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙を考える

– 𝑈 = {𝑢|𝑢 ∈ 𝑆, 𝑢, 𝑣 が残余辺}

– Lemma2-(2)より 𝑣の𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑎𝑟𝑐は𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐に先行か等しい

– 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙をしてるってことは…

• 最初のscanで𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐を見つけられなかった

• 𝑣への𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐が存在しない

Page 49: Maximum flows by ibfs

Lemma5 : 証明

• Lemma2-(1)よりラベルは有効

– 各頂点𝑢 ∈ 𝑈について𝑑𝑠 𝑢 ≥ 𝑑𝑠 𝑣 − 1

– 𝑑𝑠 𝑢 ≥ 𝑑𝑠 𝑣

• 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙により𝑣の親が見つかれば…

– 𝑑𝑠′ 𝑣 = 𝑑𝑠 𝑢 + 1 > 𝑑𝑠 𝑣

𝒂𝒅𝒎𝒊𝒔𝒔𝒊𝒃𝒍𝒆 𝒂𝒓𝒄が存在しないので

Page 50: Maximum flows by ibfs

Lemma5 : 証明

• 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙により𝑣が𝑆から取り除かれた(N-vertex)

– 𝑑𝑠′ 𝑣 : そのときのラベル

– 𝑣はのちのち𝑤 ∈ 𝑆の𝑔𝑟𝑜𝑤𝑡ℎにより𝑆に再度取り込まれるかも

• 𝑤 ∈ 𝑈ならLemma2より𝑑𝑠(𝑤)は減少しないので

– 𝑣が𝑆に再度取り込まれたときは𝑑𝑠 𝑣 > 𝑑𝑠′ 𝑣

Page 51: Maximum flows by ibfs

• 𝑤 ∉ 𝑈のとき

– (𝑤, 𝑣)は𝑣が𝑆から取り除かれたあとに残余辺になった

– 𝑣, 𝑤 , 𝑣 ∉ 𝑆にフローを流した

• 𝑤 ∉ 𝑆のときだけ

– Wもある時点でSから取り除かれ再度Sに取り込まれた

• 𝑑𝑠 𝑤 = 𝐷𝑠 + 1 ≥ 𝑑𝑠′(𝑣)

– Lemma2より𝑑𝑠(𝑤)は減少しないので

• 𝑑𝑠 𝑣 = 𝑑𝑠 𝑤 + 1 ≥ 𝑑𝑠′ 𝑣 + 1

Page 52: Maximum flows by ibfs

Lemma6 : IBFSの計算量

• IBFS runs in 𝑂 𝑛2𝑚 time

Page 53: Maximum flows by ibfs

Lemma6 : 証明

• 3つのoperation

– Growth step with augmentation

– Growth step without augmentation

– Adoption step

Page 54: Maximum flows by ibfs

Lemma6 : 証明

• Growth step on 𝑣 without augmentation

– 𝑣のすべての辺をscanすれば𝑣は𝑖𝑛𝑎𝑐𝑡𝑖𝑣𝑒になる

– ラベルが変われば(増えれば)𝑣は再度𝑎𝑐𝑡𝑖𝑣𝑒になる

– 1ラベルにつき𝑑𝑒𝑔𝑟𝑒𝑒(𝑣)の辺をscanする

– 異なるラベルの数はn-1

)())1()(deg( nmOnvreeOv

Page 55: Maximum flows by ibfs

Lemma6 : 証明

• Adoption step on 𝑣

– Lemma5とLemma2-(4)により

• 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙後にラベルは増加し、その後も減少しない

– 1ラベルにつき各辺(𝑣, 𝑤)を2回scan

• 𝑂𝑟𝑝ℎ𝑎𝑛-𝑠𝑐𝑎𝑛

• 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙

– 異なるラベルの数はn-1

)(nmO

Page 56: Maximum flows by ibfs

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

Lemma6 : 証明

• Growth step on 𝑣 with augmentation

– Augmentationの実行

• 1回のaugmentationは𝑂(𝑛)

– 𝑣が𝑎𝑐𝑡𝑖𝑣𝑒な間は

• (𝑣, 𝑤)が再度飽和することはない

– 1ラベルにつき 𝑣, 𝑤 の飽和は1回

– 異なるラベルの数はn-1

– 𝑇へのパスを見つけるために𝑣から出る辺をscanも含むので

)(nmO

)( 2mnO

Page 58: Maximum flows by ibfs

VARIANTS OF IBFS

5

Page 59: Maximum flows by ibfs

Variants of IBFS

• 2つのバージョンを簡単に紹介

– Blocking flow version

– Delayed version

– 事前実験によると

• 定数ファクターが大きくて通常versionよりやや遅い

• 理論的観点では興味深い

• より詳細な実験・評価をする価値はある

Page 60: Maximum flows by ibfs

• Growth stepのはじめに

– 𝑏𝑙𝑜𝑐𝑘𝑖𝑛𝑔 𝑓𝑙𝑜𝑤を得られる補助ネットワークを構築可能

• 𝑣, 𝑤が同じ木に属する𝑎𝑑𝑚𝑖𝑠𝑠𝑖𝑏𝑙𝑒 𝑎𝑟𝑐 (𝑣, 𝑤)

• 残余辺 𝑣, 𝑤 𝑣 ∈ 𝑆, 𝑤 ∈ 𝑇

– 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙を遅らせることで𝑏𝑙𝑜𝑐𝑘𝑖𝑛𝑔 𝑓𝑙𝑜𝑤アルゴリズム

• 𝑜𝑟𝑝ℎ𝑎𝑛になったら同じレベルの頂点との接続を試みる

– ラベル(s/tからの距離)は増加

• 失敗したら𝑜𝑟𝑝ℎ𝑎𝑛になる(𝑟𝑒𝑙𝑎𝑏𝑒𝑙をしない)

• growth/augmentのあとに𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙を実行

Blocking flow version

によって誘導されるグラフ

Page 61: Maximum flows by ibfs

Delayed version

• IBFSでは有益な情報を無視している

– 例えば 𝐷𝑠 = 𝐷𝑡 = 10, 𝐿 = 21のとき

• 𝑑𝑠 𝑣 = 2の頂点𝑣 ∈ 𝑆について

• 𝑣から𝑡への距離の下界は19(21 − 2)

• 𝑜𝑟𝑝ℎ𝑎𝑛-𝑟𝑒𝑙𝑎𝑏𝑒𝑙により𝑑𝑠 𝑣 = 5となった

• 𝑣からのみ到達可能な頂点も無視される

L=5+19=24になるまで 𝒗の処理を遅らせる

IBFSと比べて複雑だがよりよい状態遷移が起こるかも

Page 62: Maximum flows by ibfs

EXPERIMENTAL RESULTS

6

Page 63: Maximum flows by ibfs

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

result Augmenting pathの長さの総和

Growth stepでの 辺をscanした回数

Orphanが 辺をscanした回数

rootまでを Traverseした回数

全体的にIBFSの方が少し高速

IBFSはロバスト

Page 65: Maximum flows by ibfs

Concluding Remarks

• Incremental BFSを提案

– BKよりロバストで実用的

• Aroraらが新たなpush-relabelアルゴリズムを提案

– Voronoi push-relabel (2010, ECCV)

– 多項式時間アルゴリズムでBKよりも優れている

– コードが公開されてないので直接比較出来なかったが…

• IBFSよりも高速?

• Delayed versionは研究する必要がある