CS521 Advanced Algorithm Design 学习笔记(二)Karger’s Min Cut Algorithm

文章介绍了Karger的最小割算法,这是一种解决图论中寻找最小割问题的随机算法。该算法通过随机选择边并融合端点,最终得到两个超点来猜测最小割。虽然单次运行的成功概率较低,但通过重复和竞赛策略,可以将算法复杂度降低到平方级别,并保证一定的成功率。算法分析表明,随机选取边穿越最小割的概率与图中剩余顶点数成反比。最后,文章指出一个图中最多有n(n-1)/2个最小割,并给出了算法的时间复杂度和成功概率的分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lecture 2 Karger’s Min Cut Algorithm

给定图G,求图中的最小割,即min⁡SE(S,S‾)\min_S E(S,\overline{S})minSE(S,S). 这个问题很容易被最大流问题解决,所以是polynomial的。但是我们这里给出Karger的随机算法。

思路:每次选取一个随机边,并且将其端点融合为一个“超点”,重复这一过程直到只剩下两个超点,我们将其输出为对min-cut的猜测。为什么这个过程可行呢?一个直觉是随机选边的时候一定更有可能选到边比较密的地方,而它们确实就是应当融合的边。

今天我们会首先学习一个至少以2/n22/n^22/n2的概率输出mincut的算法。显然,如果我们只是平凡地重复20n220n^220n2次,那么虽然成功概率很高,但是算法复杂度高达O(n4)O(n^4)O(n4). 因此,我们需要采取称为”repetition ensures fault tolerance”(竞争容错法)来把算法降低到O(n2)O(n^2)O(n2). 我们注意到,虽然运行这个算法直到剩下两个超点的成功概率很低,但是如果我们只运行到剩下n/2n/\sqrt{2}n/2个超点就停下,那么它保留了mincut的概率是1/21/21/2. 这样,我们让两个算法同时运行到n/2n/\sqrt{2}n/2,然后挑一个最好的,然后重复上面的过程。可以证明,这样的重复竞赛会得到一个成果概率超过1/log⁡n1/\log n1/logn的算法。

image-20230410113618504

为了分析这个算法的效果,我们给出下列引理:

  1. 图中顶点的度数和是边数的两倍:∑vd(v)=2∣E∣\sum_v d(v)=2|E|vd(v)=2∣E

  2. mincut中至多有2∣E∣/n2|E|/n2∣E∣/n条边

    简证:至少有一个顶点的度数至多为2∣E∣/n2|E|/n2∣E∣/n,把这个点和其他点割开即可

  3. 随机选取一条边,其穿过mincut的概率至多为2/n2/n2/n.

    简证:引理2+图中一共有∣E∣|E|E条边。

  4. 同理,当图中只剩下k个超点时,随机选取一条边,穿过mincut的概率至多为2/k2/k2/k

    简证:假设现在图中有ttt条边,则mincut的边数至多2t/k2t/k2t/k.

  5. Karger算法得到最小割的概率至少为2/n(n−1)2/n(n-1)2/n(n1)

    证明:
    Pr⁡( final cut is the minimum cut )=Pr⁡( first selected edge is not in mincut )×Pr⁡( second selected edge is not in mincut )×⋯≥(1−2n)(1−2n−1)(1−2n−2)⋯(1−24)(1−23)=n−2n⋅n−3n−1⋅n−4n−2⋯24⋅13=2n(n−1). \begin{aligned} & \operatorname{Pr}(\text { final cut is the minimum cut }) \\= & \operatorname{Pr}(\text { first selected edge is not in mincut }) \times \\ & \operatorname{Pr}(\text { second selected edge is not in mincut }) \times \cdots \\ \geq & \left(1-\frac{2}{n}\right)\left(1-\frac{2}{n-1}\right)\left(1-\frac{2}{n-2}\right) \cdots\left(1-\frac{2}{4}\right)\left(1-\frac{2}{3}\right) \\ = & \frac{n-2}{n} \cdot \frac{n-3}{n-1} \cdot \frac{n-4}{n-2} \cdots \frac{2}{4} \cdot \frac{1}{3} \\ = & \frac{2}{n(n-1)} . \end{aligned} ===Pr( final cut is the minimum cut )Pr( first selected edge is not in mincut )×Pr( second selected edge is not in mincut )×(1n2)(1n12)(1n22)(142)(132)nn2n1n3n2n44231n(n1)2.
    我们注意到,如果做lll次就停下来的话,算法的成功概率为:

(1−2n)(1−2n−1)(1−2n−2)⋯(1−l−2l)=2n(n−1)l(l−1)2 \left(1-\frac{2}{n}\right)\left(1-\frac{2}{n-1}\right)\left(1-\frac{2}{n-2}\right) \cdots\left(1-\frac{l-2}{l}\right)\\=\frac{2}{n(n-1)}\frac{l(l-1)}{2} (1n2)(1n12)(1n22)(1ll2)=n(n1)22l(l1)

特别地,取l=n/2l=n/\sqrt{2}l=n/2,则成功概率大于等于1/2.

算法:

for round=1,2:
	run the Karger's algorithm down to n/sqrt{2}+1 vertices
	rucurse on the resulting graph
return the minimum of the cuts found in two rounds

使用主定理,我们有T(n)=2(n2+T(n/2))=O(n2log⁡n).T(n)=2(n^2+T(n/\sqrt{2}))=O(n^2 \log n).T(n)=2(n2+T(n/2))=O(n2logn).

假设顶点数量为n时成功概率为P(n)P(n)P(n),则:
P(n)≥1−(1−12P(n/2+1))2 P(n)\geq 1-(1-\frac{1}{2} P(n/\sqrt{2}+1))^2 P(n)1(121P(n/2+1))2
可以解得P(n)=Ω(1/log⁡n)P(n)=\Omega(1/\log n)P(n)=Ω(1/logn)

从而,我们可以重复运行O(log⁡n2)O(\log n^2)O(logn2)次算法,以至多O(n2log⁡3n)O(n^2 \log^3 n)O(n2log3n)次运行,算法有成功概率1−1/poly(n)1-1/poly(n)11/poly(n).

推论:一个图中至多有n(n−1)/2n(n-1)/2n(n1)/2个mincut

证明:注意到引理5对任意mincut均成立。所以,由于对每个mincut,算法得到它的概率都大于等于2/n(n−1)2/n(n-1)2/n(n1),图中至多只能有n(n−1)/2n(n-1)/2n(n1)/2个mincut。考虑一个长为n的圈可以得知这个界是紧的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值