随机算法概率最大化

时间:2010-12-12 07:11:31

标签: algorithm probability

我是一名计算机科学本科生,我正在攻读总决赛。我遇到了一个与各种动态编程类型问题不一致的问题。我会这样总结一下:

我得到了一个有效的随机算法A,它返回一个独立的集合。该算法返回最大独立集,概率至少为1 /(n ^ 3),其中n是图中顶点的数量。使用A建议另一种算法,该算法以概率至少1/2返回最大集合。

我研究过随机算法,但这似乎只是一个简单的实现案例。如果我要运行A n ^ 3次,则最大独立集合接近1的概率。然后我可以说运行它n ^ 3/2次会产生预期的效果吗?我只是想让这更难吗?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

关闭但不准确,其中一次运行返回正确答案的概率至少为1 / n ^ 3。这意味着在一次运行中得到错误答案的概率是(1-1 / n ^ 3),这意味着在M次运行后获得正确答案的概率是1-(1-1 / n ^ 3)^ M

现在回想一下e (Wikipedia link)的公式,如果你运行n ^ 3次,概率是1-1 / e,大于1/2(尽管不是非常接近1),它也是微不足道的得到确切的运行次数,以达到1/2 - (n ^ 3)* ln(2)。

答案 1 :(得分:0)

我没有研究最大独立集,所以我不能给你太多帮助。但是,在声明运行时间之前,应首先写出算法。

如果为n ^ 3运行算法A,则得到n ^ 3个最大独立集。但是,您只需要返回一组最大值。你如何在n ^ 3中找出正确的一个?在这里,您可能需要一个在您的问题中缺失的验证算法。

根据问题本身(最大独立集),您可以获得足够的信息来找到正确的最大独立集合,该集合要求运行次数远小于O(n ^ 3)。