算法设计之概率算法
- 1.为什么需要概率算法?
与确定性算法相比,若冒险,可能做得更好!
- 概率算法的分类?
- 数字算法。
求数字问题的近似解求数字问题的近似解 - Monte Carlo算法 (MC算法)
这里我们指的MC算法是: 若问题只有1个正确的解,而无近似解的可能时使用MC算法。
特点:MC算法总是给出一个答案,但该答案未必正确,成功(即答案是正确的)的概率正比于算法执行的时间。
缺点:一般不能有效地确定算法的答案是否正确。
常见的场景:素数测定
所以MC算法的基本思想是:为了增加一个一致的、p-正确算法成功的概率,只需多次调用同一算法,然后选择出现次数最多的解。
3. Las Vegas(LV)
LV算法绝不返回错误的答案。
特点:获得的答案必定正确,但有时它仍根本就找不到答案。
与MC算法一样,成功的概率正比于算法的执行时间。
常见问题:N皇后问题。
4.Sherwood算法
当某些确定算法解决一个特殊问题平均的时间比最坏时间快得多时,我们可以使用Sherwood算法来减少,甚至是消除好的和坏的实例之间的差别。
常见的场景: 离散对数计算,搜索有序表
将输入实例随机化,从概率上消除实例的差异:
可将随机预处理使用到f的计算上:
① 使用函数u将x加密为某一随机实例y
② 将y提交给f计算出f(y)的值
③ 使用函数v转换为f(x)