扩展 question of streetparade 的问题,我想问一下随机算法和启发式算法之间有什么区别,如果有的话。
可以说随机算法实际上是启发式算法的一种类型吗?
Booth方法通常用于加速NP完全问题的生成和测试解决方案。
随机算法使用随机性
它们使用所有组合,但不按顺序使用,而是从整个可能性范围中选择随机组合,希望更快地找到解决方案。实现快速简便,单次迭代也很快(常数时间)。
启发式算法
它们并非基于随机选择组合,而是基于对使用过程、输入数据集或用途的某些知识进行选择。因此,它们将组合的数量显着降低到只有那些可能是解决方案的组合,并仅使用这些组合,但通常使用所有这些组合,直到找到解决方案为止。
实现复杂度取决于问题,单次迭代通常比随机方法慢得多(常数时间),因此只有在可能性数量足够减少以使实际加速可见时才会使用启发式,即使启发式算法复杂度通常要低得多,有时常数时间也足够大,甚至会使事情变慢...(在运行时间方面)
可以将Booth方法组合在一起使用。