📜  随机算法|第2组(分类和应用)

📅  最后修改于: 2021-05-04 08:15:34             🧑  作者: Mango

我们强烈建议您参考下面的帖子,以此作为前提条件。

随机算法|第一组(介绍和分析)

分类

随机算法分为两类。

拉斯维加斯:这些算法始终会产生正确或最佳的结果。这些算法的时间复杂度基于随机值,并且时间复杂度被评估为期望值。例如,随机化QuickSort总是对输入数组进行排序,并且QuickSort的最坏情况预期时间复杂度为O(nLogn)。

蒙特卡洛(Monte Carlo):可能会产生正确或最佳结果。这些算法具有确定的运行时间,通常更容易找出最坏情况下的时间复杂度。例如,此Karger算法的实现产生的最小割概率大于或等于1 / n 2 (n是顶点数),并且最坏情况下的时间复杂度为O(E)。另一个例子是用于原始性测试的费米方法。

理解分类的例子:

Consider a binary array where exactly half elements are 0
and half are 1. The task is to find index of any 1.  

用于此任务的拉斯维加斯算法是一直选择一个随机元素,直到找到1。一个蒙特卡罗算法则是一直选择一个随机元素,直到找到1或尝试了最大允许时间(例如k)。
拉斯维加斯算法始终找到1的索引,但是将时间复杂度确定为期望值。成功之前的预期试验次数为2,因此预期时间复杂度为O(1)。
蒙特卡洛算法找到概率为[1 –(1/2) k ]的1。蒙特卡洛的时间复杂度是O(k),这是确定性的

应用范围:

  • 考虑一种基本上可以进行排序的工具。让许多用户使用该工具,并且很少有用户总是将工具用于已排序的数组。如果该工具使用简单(而非随机)的QuickSort,那么这几个用户总是会遇到最坏的情况。另一方面,如果该工具使用Randomized QuickSort,则没有用户总是会遇到最坏的情况。每个人都会获得预期的O(n Log n)时间。
  • 随机算法在密码学中具有巨大的应用。
  • 负载均衡。
  • 数论应用:素数测试
  • 数据结构:散列,排序,搜索,订单统计和计算几何。
  • 代数身份:多项式和矩阵身份验证。交互式证明系统。
  • 数学编程:更快的线性编程算法,将线性程序解决方案四舍五入为整数程序解决方案
  • 图形算法:最小生成树,最短路径,最小切割。
  • 计数和枚举:矩阵永久计数组合结构。
  • 并行和分布式计算:避免死锁的分布式共识。
  • 概率存在证明:表明从适当的概率空间中提取的对象中,组合对象以非零概率出现。
  • 去随机化:首先设计一个随机算法,然后辩称可以将其去随机化以产生确定性算法。

资料来源:
http://theory.stanford.edu/people/pragh/amstalk.pdf
https://en.wikipedia.org/wiki/Randomized_algorithm