多向割和k-割

割的理论在精确算法的研究中占据了中心位置。

首先,我们来谈一下关于割的概念:

如下图所示,蓝色虚线即为一个割,它将整个图分成了两个集合(s和t),显然从图中删除这个割的边后会使整个图不连通

3.最大流和最小割

https://www.bilibili.com/video/BV1Q7411R7ie?from=search&seid=7776388931330246553(空降坐标46:42)

下面讲一下我对割和流的理解:

割的是容量——边上的权值

流的是流量——所有可能路径流经该边的次数

最大流——求出尽可能多的s->t的路径

最小割——划分为S和T集合所要割的边的权值之和最小

我将上图进行详细的展开,得到下图:

上图中s=1,t=5

s->t总共有三种路线分别为:1->2->4->5;1->2->3->5;1->3->5

1->2->4->5:由于2->4只有三条路线可走,所以流量为3,所以从1->2->4->5总共有三条路线走(要求不能重复走一段路)

1->2->3->5:由于1->2->4->5已经用了1->2中的三条路,那么1->2->3->5只有一条路可以走,所以流量为1

1->3->5:由于3->5有四条路线可走,所以流量为4(我认为图上的流量是错的)

由此可得,1->5的最大流=3+1+4=8

而按上图中蓝色虚线割为最小割,最小割=8

由此验证了最大流确实是等于最小割的!

到此,终于可以开始讨论本章的多向割和k-割问题!

一、多向割问题(参考https://blog.csdn.net/qq_41892735/article/details/106834662

多向割是一个边集合,删除它后会使S中的终点彼此都不连通,多向割问题就是寻找边权和最小的这种集合。

如下图所示:

右图的终点集合为{S1,S2,S3},按照右图的割法,红边即为S2的一个独立割集,删除它后使得S2与S1和S3均不连通。

然后我们发现这并不是权重最小的割集,观察发现下图是最小的割集:

所以,下面给出寻找最小独立割的一个算法(多向割):

1. 对每个i=1,...,k,计算si的最小权独立割,记为Ci.(把S-{si}的所有终点看作是一个独立的节点s,t为si,这样就转化为了计算最小独立割时使用最大流最小割定理,找到最大流也就找到了最小割)

2.丢弃这些割中的一个最重割,然后输出剩余割的并集,记为C(由于把前面k-1个si独立出去之后,最后一个sk自然也被独立了。所以没必要再算上它的割集)

左图中红色的为S1和S2的割集并集,我们发现S3自动就被这俩个割边独立了。

该证明详见《近似算法第36页》

二、最小k-割问题

首先讲一下k-割的概念:移除割边之后,形成了k个连通分支,就是k-割,k-割也是最小割。

k=2时正好为s-t割问题,k≥3时为一个np难问题。

找k-割的算法与多向割算法类似,从G开始,在每个连通分支中计算最小割,然后删除最轻割(保留割的边最多的集合,这样存在的连通分支最多);重复此过程直到存在k个连通分支。

但这个算法证明十分复杂,所以引入一个新概念——Gomory-Hu树(参考https://blog.csdn.net/jyxjyx27/article/details/42750833

这里只给出结果,过程参见上面的博客

                                      原图G                                                                                                   Gomory-Hu树T

所以我们可以发现T是顶点集V上的树,T的边可以不属于E,设e是T的一条边,从T中删除它会产生两个连通分支,设S和S'是这两个分支的顶点集,图G中由划分(S,S’)的割是G中与边e关联的割。

性质:1.对于每对顶点u,v∈V,G中最小u-v割的权与T中的一样

           2.对于每条边e∈T,w'(e)是G中与e关联的割的权

我个人理解, Gomory-Hu树上的边全是由每对顶点的最小割边组成,原图有n个顶点这个 Gomory-Hu树就有n-1个边(且是最小u-v割),所以给出 Gomory-Hu树即可求出最小k-割,也就是说只需要求n-1次最小割即可。

我们得到如下算法:

1.计算G的Gomory-Hu树T

2.设C为G中与T的边关联的n-1个割中最轻的k-1个割的并集,输出C

这里我们需要用到下面的引理:

设S是G中与T的l条边关联的割的并集,则从G中删除S后留下的图至少包含l+1个分支。(因为从T中删除l条边,会留下l+1个连通分支,从G中删除会使这l+1个连通分支之间不连通,所以G至少得到l+1个连通分支)

证明参见《近似算法》第38页

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值