Gomory-Hu Tree (最小割树)
基本定义
割 cut
对于一张带权无向图 G = ( V , E ) G=(V,E) G=(V,E),定义一个割 (cut) 为两个集合 S , T ∈ V S,T\in V S,T∈V,满足 S ∩ T = ∅ , S ∪ T = V S\cap T = \emptyset, S\cup T = V S∩T=∅,S∪T=V。定义一条边为割边 (cut edge) 当且仅当它的两个端点分别在 S S S集合和 T T T集合内。定义一个割的容量 (capacity of a cut) 为所有的割边的边权的和。
定义s-t割 (s-t cut) 为满足 s ∈ S , t ∈ T s\in S,t\in T s∈S,t∈T的割。
流 flow
对于一张满足所有的边的容量 c ( u , v ) c(u,v) c(u,v)(即 u u u到 v v v这条边的边权)非负的带权有向图 G = ( V , E ) G=(V,E) G=(V,E),指定一个源点 (source)和汇点 (sink),则定义它的一个流网络 (flow network) 为一个映射 f : V × V → R f:V\times V \to R f:V×V→R,满足以下三个性质:
- f ( u , v ) ≤ c ( u , v ) f(u,v)\le c(u,v) f(u,v)≤c(u,v)
- f ( u , v ) = − f ( v , u ) f(u,v)=-f(v,u) f(u,v)=−f(v,u)
- 对于任意 u ≠ s , u ≠ t u\not= s, u\not = t u=s,u=t,满足 ∑ x ∈ V f ( x , u ) = ∑ x ∈ V f ( u , x ) \sum_{x\in V}f(x,u) = \sum_{x\in V} f(u,x) ∑x∈Vf(x,u)=∑x∈Vf(u,x)
最大流问题:找出一个从源点到汇点的可行流,使得该可行流的流量最大。
最大流最小割定理 max-flow min-cut theorem
最大流的流量等于最小割的容量。
符号 & 约定
对于 G = ( V , E ) G=(V,E) G=(V,E),令 W W W为 V V V的一个子集, δ ( W ) \delta(W) δ(W)表示所有恰好有一个端点在 W W W以内的的边构成的集合。
则我们也可以用一个满足 s ∈ W , t ∉ W s\in W, t\not\in W s∈W,t∈W的 δ ( W ) \delta (W) δ(W)来表示一个 s − t s-t s−t割。我们用 c ( W ) c(W) c(W)表示这个割的容量。
下文中均用 f ( u , v ) f(u,v) f(u,v)表示 u , v u,v u,v的最大流流量(也是最小割容量)。
一些引理
a)
设对于某一张带权图 G G G,用 f ( u , v ) f(u,v) f(u,v)表示从 u u u到 v v v的最大流(也等于最小割),则有: f ( u , v ) ≥ min { f ( u , w ) , f ( v , w ) } f(u,v) \ge \min \{ f(u,w),f(v,w) \} f(u,v)≥min{ f(u,w),f(v,w)}。
b) symmetry
对于任意 W ⊆ V W\subseteq V W⊆V,有 c ( W ) = c ( ∁ V W ) c(W) = c(\complement_VW) c(W)=c(∁VW)。
c) submodularity
对于任意的 A ⊆ V , B ⊆ A , v ∈ V A\subseteq V, B \subseteq A, v\in V A⊆V,B⊆A,v∈V,有 c ( A ∪ { v } ) − c ( A ) ≥ c ( B ∪ { v } ) − c ( B ) c(A \cup \{ v\}) - c(A) \ge c(B\cup\{v\}) - c(B) c(A∪{ v})−c(A)≥c(B∪{ v})−c(B)。
推广:
- 令 X ⊆ ∁ V A X \subseteq \complement_V A X⊆