随机算法简介

一、随机数值算法算法

  • 主要用于数值问题求解
  • 输出每每是近似解
  • 近似解的精确度与算法执行时间成正比

eg1:计算$\pi$值性能

 设一个半径为r的圆及其外切圆排序

向正方形随机投掷n个点,设有k个点落在圆内,则能够得出落在圆内的几率是$\frac{\pi r^{2}}{4r^{2}}=\frac{k}{n}$,因此$\pi =\frac{4k}{n}$数学

eg2:计算定积分随机数

二、Monte Carlo算法数据

  • 算法并不总能得到问题的正确解
  • 算法以较高的几率得到正确解
  • 不存在有效过程判断算法输出的解是否为正确解
  • 运行时间固定,但结果是否正确是随机的

eg:素数断定算法】集合

三、Las Vegas算法时间

为了确保最终得到问题的正确解,能够反复运行p-正确的LasVegas算法,直到找到正确解。其中运行遍数的数学指望是$\frac{1}{p}$实例

  • 算法一旦获得问题的解,则必定是正确的。也可能不能得到问题的解
  • 反复运行算法,最终能够获得问题的解
  • 运行时间随机,获得的解是正确的

eg:找出给定集合中第K小的元素。

四、Sherwood算法

当一个肯定算法的最坏时间复杂度与其最好时间复杂度的差异较大时,能够在肯定算法中引入随机性将它改形成一个随机算法,以消除或减小算法在好坏实例之间的时间复杂度的差异。

  • 利用随机算法改造肯定型算法,使得算法性能与输入数据无关
  • 总能获得问题的正确解
  • 其精髓不是避免最坏状况发生,而是设法消除最坏行为与特定实例之间的关联性

eg:随机快速排序算法。

相关文章
相关标签/搜索