s Maximum Flow by Incremental Breadth First Search Sagi Hed Tel Aviv University Haim Kaplan Tel Aviv University Renato F. Werneck Microsoft Research Andrew V. Goldberg Microsoft Research Robert E. Tarjan Princeton University & HP Labs
Maximum Flow Input: directed graph G=(V,E), vertices s, t є V and capacity assignment c(e) for e є E Output: flow function f satisfying - conservation: for every v≠s,t Σ (u,v)єE f(u,v) = Σ (v,u)єE f(v,u) capacity:for every ef(e) ≤ c(e) with maximal |f|=sum of flow out of s (into t) Well studied problem Equivalent to the Minimum s-t Cut problem Solution methods: Augmenting Path (and blocking flow), Network Simplex, Push-Relabel
Maximum Flow in Computer Vision Graphs have specific structure Regular low degree grids Arc capacities: different models for grid arcs and s-t arcs
BK Boykov and Kolmogorov developed an algorithm (BK) which is the fastest in practice on the vision instances [Boykov, Kolmogorov 04] Used as the standard min-cut algorithm in computer vision Usually outperforms Push-Relabel implementation by considerable factors Problem: BK has no known polynomial time guarantee… Best bound is O(mnF) for integral capacities (F is the maximal flow value) Indeed on some instances, BK performs poorly and is outperformed by Push-Relabel implementation
Our Contribution IBFS We develop the IBFS algorithm – Incremental Breadth First Search Has many similarities to BK However, performs shortest path or nearly shortest path augmentations Competative in practice to BK Usually outperforms BK by small factors Has a polynomial worst case time guarantee O(mn 2 )
Augmenting Path Algorithms Augmenting path algorithms constantly maintain a flow function f, f constantly increases. When the algorithm terminates f is maximal Augmentation: add (maximal) X to flow along an s-t path Residual graph: G f = (V,E f ) E f = {(u,v) | (u,v) є E V f(u,v) 0} Extend f and c to f(v,u)=-f(u,v) and c(v,u)=0 for (u,v) є E Ford & Falkerson: augmentations in G f give maximal flow s
BK Overview Maintain trees S, T in the residual graph Iterate 3 phases: Growth, Augmentation, Adoption Growth: grow S and T bi-directionally s t ST s
BK Overview Augmentation: when the trees meet, we augment flow Adoption: after an augmentation, we try to reconnect “orphaned” sub-trees s t ST s
IBFS Overview We maintain S, T as BFS trees with heights ≈ D s, D t Augment on shortest or nearly shortest paths (+1) s t ST s shortest+1 shortest
IBFS Overview Adoption / how to rebuild the trees: If subtree reconnects at the same level, we’re done s t ST DsDs DtDt s
IBFS Overview Otherwise: Relabel: set label to lowest potential parent + 1 Make children into orphan sub-trees s t ST s
IBFS Overview BFS trees => worst case bound O(mn 2 ) (must also maintain a current arc) s s t ST
IBFS vs. BK Maintaining BFS trees => more work rebuilding the trees after each augmentation Shortest augmenting paths => less work in each augmentation Shortest augmenting paths lead to less augmentations => growth steps We get rid of the parent traversal step s
IBFS Experiments Ran on computer vision instances public benchmark [ our own creation [ BK implementation available publicly [ We compare to a modified version of BK, with the same low level optimizations as our own (≈ 20% faster) IBFS outperforms BK on all but two instances: 2 different capacity versions of the instance “bone” Factors are mostly modest. For few they are large. s
IBFS Experiments OTOrphansGrowthPushes SpeedupInstance BK IBFSBKIBFSBKIBFS digged hessi1a house anthra ; bone_subx liver babyface bone bunny-med camel-med gargoyle-med kz2-venus s Operation Counts (per vertex)
s