概率算法是步骤不明确,答案不一定。
与概率性算法相对的是确定性算法,确定性算法既每一计算步骤都是确定的,有穷的步骤,明确的答案。
1.数值随机化算法
常用于数值问题的求解,得到的往往是近似解,且近似解的精确度随着计算时间的增加而不断提高。
2.Las Vegas(拉斯维加斯算法)
总是或者给出正确的解,或者无解。
注:得到的一定是正确的解。
拉斯维加斯算法。假如有一把锁,给我100把钥匙,只有1把是对的。于是我每次随机拿1把钥匙去试,打不开就再换1把。我试的次数越多,打开(最优解)的机会就越大,但在打开之前,那些错的钥匙都是没有用的。这个试钥匙的算法,就是拉斯维加斯的——尽量找最好的,但不保证能找到。
3.Monte Carlo(蒙特卡罗算法)
总是给出解,但是偶尔可能会产生非正确的解。(疑惑,都不知道得到的是不是对的)
注:多次运行算法,每次运行时的随机选择都互相独立,可以使产生非正确解的概率减小到任意小。
举个例子,假如筐里有100个苹果,让我每次闭眼拿1个,挑出最大的。于是我随机拿1个,再随机拿1个跟它比,留下大的,再随机拿1个……我每拿一次,留下的苹果都至少不比上次的小。拿的次数越多,挑出的苹果就越大,但我除非拿100次,否则无法肯定挑出了最大的。这个挑苹果的算法,就属于蒙特卡罗算法——尽量找好的,但不保证是最好的。
4.舍伍德算法
总能求得问题的一个解,且解总是正确的。
注:当一个算法在最坏情况下的复杂性与其在平均情况下的复杂性有较大差别时,可在这个确定性算法中引入随机性将它改造成一个舍伍德算法。