随机算法简介
1、随机数值算法
- 主要用于数值问题求解
- 输出往往是近似解
- 近似解的精确度与算法执行时间成正比
eg1:计算$\pi$值
设一个半径为r的圆及其外切圆
向正方形随机投掷n个点,设有k个点落在圆内,则可以得出落在圆内的概率是$\frac{\pi r^{2}}{4r^{2}}=\frac{k}{n}$,所以$\pi =\frac{4k}{n}$
eg2:计算定积分
2、Monte Carlo算法
- 算法并不总能获得问题的正确解
- 算法以较高的概率获得正确解
- 不存在有效过程判断算法输出的解是否为正确解
- 运行时间固定,但结果是否正确是随机的
eg:素数判定算法】
3、Las Vegas算法
为了确保最终获得问题的正确解,可以反复运行p-正确的LasVegas算法,直到找到正确解。其中运行遍数的数学期望是$\frac{1}{p}$
- 算法一旦得到问题的解,则一定是正确的。也可能不能获得问题的解
- 反复运行算法,最终可以得到问题的解
- 运行时间随机,得到的解是正确的
eg:找出给定集合中第K小的元素。
4、Sherwood算法
当一个确定算法的最坏时间复杂度与其最好时间复杂度的差别较大时,可以在确定算法中引入随机性将它改造成一个随机算法,以消除或减少算法在好坏实例之间的时间复杂度的差别。
- 利用随机算法改造确定型算法,使得算法性能与输入数据无关
- 总能得到问题的正确解
- 其精髓不是避免最坏情况发生,而是设法消除最坏行为与特定实例之间的关联性
eg:随机快速排序算法。