【问题标题】:Karger Algorithm with weights带权重的 Karger 算法
【发布时间】:2019-12-23 14:11:03
【问题描述】:
假设给定一个无向、无权图 G= (V, E) 和一些成本函数 c:E→R>0,为每条边 e∈E 分配一个正成本 c(e)。目标是计算最小成本的 G 的最小割(即,由最少数量的边组成的割中的最小成本割)。给出一个算法,它很有可能在多项式时间内找到这样一个最小成本最小割。你的算法的运行时间是多少?
提示:Karger 算法
方法一:
做 Karger n^c 次(仍然是多项式,在 c 的 n 上提高指数)并比较得到的最小切割。与 c >=1
方法二:
当 Karger 处于收缩边缘时,提高高权重的概率。不影响运行时
或者两者兼而有之?
【问题讨论】:
标签:
algorithm
random
graph
graph-algorithm
kargers-algorithm
【解决方案1】:
方法 我似乎没有向 Karger 算法添加任何内容。来自the introduction to this article:“通过对这个基本算法进行足够多次的迭代,可以高概率找到最小割。” 换句话说,方法 I 已经是算法的一部分。 p>
方法 II 在技术上是不必要的(无论如何,Karger 的算法最终都会找到最小割),并且可能会严重损害算法。例如,考虑一个可以通过删除一条特定边来切割的图,但否则需要两条或更多条边进行切割(数字代表一条边的成本):
如果该特定边的成本最高(本例中为 999),则提高选择该边进行收缩的概率降低找到(最小成本)最小割的概率。事实上,它降低了找到(任何成本)最小切割的可能性。
所以您需要做的就是运行标准算法。在每次迭代中,您需要检查新找到的切割是否比当前最佳切割具有更少的边。如果是这样,则新找到的剪辑是最好的剪辑(到目前为止)。如果新找到的切割与当前最佳切割的边数相同,则比较成本以查看哪个更好。