POJ2914_Minimum Cut_无向图最小割::stoer_wagner算法

题意

给出一个有边权的无向图,求最小割。

思路

如果按照网络流的做法,通过求最大流来求最小割。就需要确定一个源点然后枚举汇点,这样的复杂度极高,据说有O(n5)。所以这个题并不是这么做,而是用stoer_wagner算法。这一算法在求最小割的问题中具有普适性。

stoer_wagner算法

算法思路

整体思路和求最小生成树的prim算法有些相似,不过这里求的“有点像”“最大生成树”。构造一个集合A,一开始将任意一个点加入。之后重复地从剩下的点中选择点x,使集合A到x的流最大(也就是A内点到x的流之和),把x加入A中。把x加入A的时候要记得更新A到剩下点的流。一直重复到所有点都加入A中,则最后一个点的所有边的权值之和,就是以它为汇点,最后一个加入A的点为源点的最小割。此时更新最小割的值,然后将这两个点合并成一个点,重复上述操作,直到所有的点都合并成了一个点。此时便获得了全局最小割的值。

合并操作合法嘛?

合法。最后的两个点有两种情况,一种是它们在全局最小割的同一端,将它俩合并并不影响最小割的值;一种是它俩在最小割的两端,如果是这样那么这一次更新全局最小割就已经得到了最终答案。

为什么最后一个点的所有边权值之和就是到前一个点的最小割?

如果不切断这其中的任何一条边,最后一个点都能和前一个点连起来。而且每次都选流最大的,最后一个点就是整个图中到其他点的流之和最小的点。

其他点可以嘛?

其他点不一定满足。如下图
这里写图片描述
第一次更新中,最后一个点是6,前一个点是5,此时6的边权之和是5到6的最小割,这没问题。但是换成0到6,就显然不对了。至于这原理,现在还没想明白。

它还满足最小割是最大流的规
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值