图论-最小割树 Gomory−HuTree

图论-最小割树 Gomory−HuTree

作用:可以快速求出网络流图中任意两点间的最小割。
学此算法前,你必须对网络流最小割算法的性质很熟练 [学]

参考文献

https://blog.csdn.net/jyxjyx27/article/details/42750833


Description

【模板】最小割树(Gomory-Hu Tree)


给定一个 n n n 个点 m m m 条边的无向连通图, Q Q Q 次询问两点之间的最小割。
数据范围: n ≤ 500 , m ≤ 1500 , Q ≤ 1 0 5 n\le 500,m\le 1500,Q\le 10^5 n500,m1500,Q105


Introduction

就算是网络最大流最快算法 HLPP \texttt{HLPP} HLPP 时间复杂度 Θ ( V 2 E ) \Theta(V^2\sqrt E) Θ(V2E ), 也会在这题轻松 TLE \color{#329}\texttt{TLE} TLE。所以不需要有侥幸心理。

网络流任意两点间的最小割有一个特性:任意两点间的最小割最多出现 n − 1 n-1 n1 种。所以就有巨佬想到构造一棵树,使得网络流图上任意两点的最小割正好等于树上对应两点的最小割。然后任意两点间的最小割就可以倍增 Θ ( log ⁡ n ) \Theta(\log n) Θ(logn) 求了。然后这样的一棵树就是这个网络流图的最小割树。

Explanation

下图为网络流图和未生成 Gomory−Hu   Tree \texttt{Gomory−Hu~Tree} GomoryHu Tree 点集。
ght1.jpg
ght2.jpg

Step 1

任选网络流图中两点,跑一次最小割。

选点 1 1 1 6 6 6(图中金色节点),最小割为 5 5 5
割边为 1 ↔ 3 , 2 ↔ 3 , 2 ↔ 5 , 2 ↔ 4 1\leftrightarrow3,2\leftrightarrow3,2\leftrightarrow5,2\leftrightarrow4 13,23,25,24
点集被分为 ( 1 , 2 ) (1,2) (1,2) ( 3 , 4 , 5 , 6 ) (3,4,5,6) (3,4,5,6)
ght3.jpg

Step 2

将原点集分为被最小割割开的两个点集,中间连边最小割。表示两个点集的点之间的最小割最大为选中两点的最小割(因为这么割两边的点必定分开)。

点集被分为 ( 1 , 2 ) (1,2) (1,2) ( 3 , 4 , 5 , 6 ) (3,4,5,6) (3,4,5,6)
中间连边流量 5 5 5 表示这两个点集的点之间最小割最大为

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值