最小割问题-Karger‘s algorithm

上一篇文章我们提到了最小割问题,最小割问题在研究网络最薄弱环节相关问题上具备广泛应用。而这个问题如今也依旧是一个open problem。而今天我们就介绍一种求解最小割问题的概率型算法-Karger's algorithm。 该算法是karger读博期间发现的一种非常简单的算法。

其核心步骤就是我们随机在图上找两个点进行 constraction 合并操作。如下图所示:

注意2,3由于合并为了一个点,所以2 3两点之间的边我们就当做没有了,同时要消除由于合并形成的自环。 

重复上述步骤到图只剩下两个点为止。

是的,这就是全部的步骤,是不是太简单了?同学们肯定好奇,这么简单,开玩笑,能有用吗?

接下来我们就分析一下这个算法到底能不能有用。

为了方便起见,我们就假设我们上面的分法就是最小割的情形了。红色虚线我们成为交叉边(cross edges),我们假设交叉边一共有k条, 总共的边一共是m条,即最小割为k。

Lemma 1:图中每个顶点的度至少为k。

Proof:一个顶点的度意为该顶点有多少条边。由于最小割为k,那么我们总能将图中的顶点分成这样的一种情况,即我们目标的顶点在A,其余剩下的点全部在B,由于最小割是k,所以该顶点至少有k条边。 证毕 

我们继续考虑,什么情况下我们的算法能够成功呢?如果某一个步中我们constraction的边恰好是交叉边呢?显然,如果是这种情况,那么本来应该分别在A B中的点就会在同一边,算法失败。所以,算法成功的条件必须是每一步算法都选到不是交叉边的边合并。

Lemma 2:第一步成功的概率为1-\frac{k}{m}

Proof: 共计m条边,其中k条是交叉边,我们是随机选择的。证毕

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值