引入概念:Global Minimum Cut
这节课我们需要解决的问题:在一个无向连通图中,我们想把这个图分成两个,要如何切断最少的边的数量完成这个行为
由于求解这个问题的复杂度较高,并且当我们使用常规算法时,面对粘稠图会非常的无力,所以说,我们可以放大一些范围,牺牲一些准确性来获得更高效的时间复杂度。
# Karger’s Contraction Algorithm
这个算法的原理就是,不断随机合并图上的一些点,直到只剩两个超级点,并且他们之间存在一堆线,这就是我们获得的 min-cut。
支撑原理是,当我们合并两个在同一边的点的时候,他们之间的需要分割的线并不会减少,所以我们可以这样做。
我们需要证明:我们能获得真正的最小点的机会至少为 2/n^2
复杂度:
然后对这个算法进行优化
由于在一开始的时候进行切割,切割到最小组合的概率还较小,但是随着点的合并,这个概率会越来越大
所以,我们可以聪明一点
我们在点缩减到 n / 根号 2 的时候,将图复制一份,再独立进行原算法,并且递归重复这一步骤,即每个子图都在缩减时复制一份,并在最终选择结果时选择好的那一份。
这样,可以把复杂度缩减到
然后,开始计算他的成功概率等
在章节最后,尝试用这种方法处理了一些其他的问题。。。。