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

Lecture 2 Karger’s Min Cut Algorithm

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

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

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

image-20230410113618504

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

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

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

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

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

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

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

    简证:假设现在图中有 t t t条边,则mincut的边数至多 2 t / k 2t/k 2t/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 − 2 n ) ( 1 − 2 n − 1 ) ( 1 − 2 n − 2 ) ⋯ ( 1 − 2 4 ) ( 1 − 2 3 ) = n − 2 n ⋅ n − 3 n − 1 ⋅ n − 4 n − 2 ⋯ 2 4 ⋅ 1 3 = 2 n ( 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.
    我们注意到,如果做 l l l次就停下来的话,算法的成功概率为:

( 1 − 2 n ) ( 1 − 2 n − 1 ) ( 1 − 2 n − 2 ) ⋯ ( 1 − l − 2 l ) = 2 n ( 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 / 2 l=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 ( n 2 + T ( n / 2 ) ) = O ( n 2 log ⁡ 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 − 1 2 P ( 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 ⁡ n 2 ) O(\log n^2) O(logn2)次算法,以至多 O ( n 2 log ⁡ 3 n ) O(n^2 \log^3 n) O(n2log3n)次运行,算法有成功概率 1 − 1 / p o l y ( n ) 1-1/poly(n) 11/poly(n).

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值