随机算法的重要性
介绍:
- 随机化是一个重要的概念,因此随机化算法被用于各种领域,例如数论、计算几何、图论和分布式计算。
- 随机算法的输入类似于确定性算法的输入,还有一系列随机位可供算法用于进行随机选择。
- 换句话说,随机算法是一种行为取决于输入的算法,类似于确定性算法,并且随机选择是其逻辑的一部分。
- 结果,即使对于相同的输入,该算法也会给出不同的输出。
- 换句话说,算法表现出随机性;因此,它的运行时间通常用随机变量来解释。
好处:
- 随机算法以其简单性而闻名。
- 任何确定性算法都可以轻松转换为随机算法。这些算法很容易理解和实现。
- 随机算法非常有效。
- 与任何确定性算法相比,它们使用很少的执行时间和空间。
- 与确定性算法相比,随机算法表现出更好的渐近界。
- 换句话说,随机算法的算法复杂度优于大多数确定性算法。
- 在许多关键应用中,可靠性是一个重要问题,因为并非所有随机算法都能给出正确的答案。
- 此外,许多随机算法可能不会终止。
- 因此,可靠性是一个需要处理的重要问题。
- 随机算法的质量取决于用作算法一部分的随机数生成器的质量。
- 与其他设计范例不同,随机算法不使用单一的设计原则。
- 相反,人们应该将随机算法视为使用一组原则设计的算法。
- 相反,人们应该将随机算法视为使用一组原则设计的算法。
以下小节列出了一些设计原则:
见证理念:
- 该原则涉及检查给定输入是否具有属性 X 的问题。
- 它是通过找到称为见证人或证书的特定对象来建立的。
- 识别见证人以证明输入确实具有所需的属性 X。
- 通过进行较少的试验,可以查明该属性是否真的存在。
- 证人的在场是基于证人缺席的财产 X 的有力证明。使用素性检验的例子来说明这个原理。
指纹识别:
- 根据定义,指纹是代表较大对象的较短消息。
- 指纹是一种技术,其中仅通过比较它们各自的短指纹来比较两个大对象 A 和 B。
- 如果两个指纹不匹配,则对象 A 和 B 不同。
- 但是,如果指纹匹配,则有强有力的间接证据表明两个对象是相同的。
检查身份:
- 让我们假设给定一个代数表达式,问题是检查表达式的计算结果是否为零。
- 检查恒等式的原理是插入给定代数方程的随机变量并检查表达式的计算结果是否为零。
- 如果它不为零,那么给定的表达式不是一个恒等式。
- 否则,有强有力的间接证据表明该表达式同样为零。
随机抽样和订购:
- 算法的性能有时会通过随机化输入分布或顺序来提高。
- 可以观察到,对于输入的某些排序,算法的性能可以更高或刚好可以接受。
- 在这里,随机化导致随机排序、分区和抽样。
- 此外,随机算法使用随机样本收集有关输入分布的信息。这可以通过招聘问题来说明。
挫败对手:
- 随机算法可以看作是人和对手之间的博弈,即提出算法的人和对手试图通过设计合适的输入来挫败算法,从而使算法花费更长的时间。
- 换句话说,随机算法可以被视为从大量确定性算法中选择一个算法,并且这种选择可以被认为是通过随机输入使事情变得困难的场景,从而使任务变得更加困难。