随机算法分类


14

来自维基百科,关于随机算法

一个具有区分算法使用随机输入减少的预期运行时间或内存使用情况,但总是有一个正确的结果在有限时间终止,并且 概率算法其中,根据不同的随机输入,有机会产生错误结果(蒙特卡罗算法)或通过发出失败或失败终止信号未能产生结果(拉斯维加斯算法)的结果。

  1. 我想知道第一种“ 算法 ”如何使用随机输入来减少预期的运行时间或内存使用率,但是总是在有限的时间内以正确的结果终止?
  2. 它和可能无法产生结果的拉斯维加斯算法之间有什么区别?
  3. 如果我理解正确,则概率算法和随机算法不是同一概念。概率算法只是一种随机算法,另一种是那些使用随机输入来减少预期的运行时间或内存使用量,但总是在有限的时间内以正确的结果终止的算法?

Answers:


12
  1. Øñ2Øñ日志ñØñ2Øñ日志ñ

  2. 这给出了拉斯维加斯算法的子集。拉斯维加斯算法还考虑到了可能性(低概率)根本不会终止的可能性,而不仅仅是终止一点时间。

  3. 这些反过来实际上只是蒙特卡罗算法的一种,其中答案可能是错误的(概率很小),至少在概念上与可能不回答有所不同。

我当然遗漏了很多细节,您可能想要查看ZPP,RP和BPP复杂度类,这些类将这些想法形式化。


谢谢!那么,随机算法,蒙特卡洛算法和概率算法是同一概念吗?
蒂姆(Tim)

是的,尽管蒙特卡洛算法是概率算法的一种特定类型(对应于BPP类-还有其他类似PP的类是概率性的,但是-可能!-包含的概率大于BPP)。我不确定为什么这句话会出现在Wikipedia文章中,也许有人对概率分析感到困惑,这是不同的。
路加·马蒂森

8

两种术语随机算法概率算法在两种不同的情况下使用。随机算法是使用随机性的算法,与不使用确定性算法的算法相反。概率算法,例如用于素数测试的概率算法,是使用随机性并且可能以(希望)小的概率产生错误的算法。

必须在Monte Carlo算法Las Vegas算法之间进行重要区分。拉斯维加斯算法是始终返回正确答案的随机算法,但其运行时间取决于投掷硬币的时间。一个示例是整数分解算法-它们总是返回正确的因子,但是其运行时间取决于随机性。当说明拉斯维加斯算法(例如分解算法)的运行时间时,我们实际上是在说明预期的运行时间;如果我们不走运,该算法可以运行更长的时间。

另一方面,蒙特卡洛算法是随机算法,其运行时间被提前设置。这样的算法可能会出错,但是通常错误概率非常低。一个很好的例子是概率素数测试。这些算法非常快,但可能会出错。但是,错误概率很低,以至于在实践中他们从不犯错。

通过在足够长的时间后停止执行,每种拉斯维加斯算法都可以转换为蒙特卡洛算法,因此从某种意义上说,拉斯维加斯算法比蒙特卡洛算法“更好”。


您可以引用这些定义的参考吗?
肖邦

维基百科应该有一些相关的参考资料。
Yuval Filmus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.