Gomory-Hu Tree学习笔记

· · 个人记录

关于Gomory-Hu Tree

什么是Gomory-Hu Tree?

Gomory-Hu Tree就是最小割树,用来解决无向图任意两点间最小割.不过,Gomory-Hu Tree只能得到最小割的大小,并不能得到方案

Gomory-Hu Tree有什么性质?

Gomory-Hu Tree上两点 s,t 之间的最小边权,就是原图中s,t 之间的最小割

无向图最小割

给定一个无向联通图,边有边权,每条边被割断的代价就是它的边权.给定两个点 s,t ,求使得 s,t 不联通的最小代价

与有向图最小割相似,无向图最小割也可以用最大流求解.具体的说,对一条无向边建两条方向相反的边显然不会影响答案,因为相反边的流量可以看作当前边的负流量,两条边任意时刻显然只会有一条边有流量.

但是如果询问次数较多,这个方法显然不是很优秀.这个时候就需要Gomory-Hu Tree.

Gomory-Hu Tree的构造方法

考虑分治.

每次在当前点集中随便选两个点 s,t,暴力计算关于 s,t 的最小割,在Gomory-Hu Tree上连一条连接 s,t,边权为最小割大小的边,对与 s,t 联通的点集分别递归继续操作

一些定义

$V_s$ 表示按最小割分割后与 $s$ 联通的点的点集 $Meg_{u,v}$ 表示Gomory-Hu Tree上 $u,v$ 两点间边权的最小值 # 一条引理 >$\forall u\in V_s,v\in V_t$,有$Cut_{u,v}\leq Cut_{s,t}

证明

十分显然,如果用 Cut_{s,t} 的代价不能使 u,v 不连通,同时 us 联通,vt 联通,那么显然 st联通

推论

对于一个点对 u,v,考虑在构造Gomory-Hu Tree的每一次分治过程中,如果 u,v 在选择的点对 s,t 的两侧,都有Cut_{u,v}\leq Cut_{s,t}

那么必然有 Cut_{u,v}\leq Meg_{u,v}

另一条引理

对于任意三点 a,b,c,必然有 Cut_{a,b}\geq\min\{Cut_{a,c},Cut_{b,c}\}

证明

考虑 Cut_{a,b},Cut_{a,c},Cut_{b,c} 中最小的一对,不妨设它为 Cut_{a,b}

再考虑割掉关于 a,b 的最小割之后,ca 联通还是与 b 联通,不妨设与 b 联通

根据之前那个引理,有 Cut_{a,b}\geq Cut_{a,c}

因为钦点了 Cut_{a,b} 是最小的,又有 Cut_{a,b}\leq Cut_{a,c}

所以 Cut_{a,b}=Cut_{a,c}

那么在 Cut_{a,b},Cut_{a,c},Cut_{b,c} 中一定有两个较小值,一个较大值,所以引理成立

推论

3 个点的情况推广到任意多个点,那么有 Cut_{a,b}\geq \min\{Cut_{a,w_1},Cut_{w_1,w_2}...Cut_{w_k,b}\}

如果把这个结论放在Gomory-Hu Tree上,那么又有 Cut_{u,v}\geq Meg_{u,v}

结合以上两条引理,那么有 Cut_{u,v}=Meg_{u,v}

推论

对于一个 n 个点的无向图,最多只有 n-1 种值不同的最小割

很多地方的题解都认为这条定理是在证明Gomory-Hu Tree中必要的.但是根据以上构造过程以及两条引理,我们并没有使用这条定理.倒不如说,通过Gomory-Hu Tree证明这条定理是非常显然的.

代码

在这里