一.随机化算法分类
随机算法通常分成4类:
数值随机算法(Numericalrandomized algorithm):
随机算法有时也称概率算法(probabilistic algorithm),但也有人对两者这样区分
如果取得结果的途径是随机的,则称为随机算法,如拉斯维加斯算法;
如果取得的解是否正确存在随机性,称为概率算法,如蒙特卡罗算法。
蒙特卡罗算法(MonteCarlo):不保证所求得的解是正确的,也就是说,蒙特卡罗算法求得的解有时是错误的。不过,由于可以设法控制这类算法得到错误解的概率,并因它的简单高效,是很有价值的一类随机算法。一般情况下,蒙特卡罗算法求得正确解的概率随计算时间的增加而增大。但无论如何不能确保解的正确性,而且通常无法有效地判断所求得的解究竟是否正确,这是蒙特卡罗算法的缺陷。
拉斯维加斯算法(LasVegas):求得的解总是正确的,但有时拉斯维加斯算法可能始终找不到解。使用拉斯维加斯算法求解同一问题的同一实例,能够得到相同的结果,但算法的执行时间会不一样。一般情况下,求得正确解的概率随计算时间的增加而增大。因此,为了减少求解失败的概率,可以使用一个拉斯维加斯算法对同一实例,重复多次执行该算法。
舍伍德算法(Sherwood):总能求得问题的正确解。当一个确定性算法在最坏情况下的计算复杂度与其在平均情况下的计算复杂度两者相差较大时,可以在这个确定算法中引入随机性将它改造成一个舍伍德算法,用来消除或减少问题的不同实例之间这种在计算时间上的差别。舍伍德算法的精髓不是避免算法的最坏情况行为,而是设法消除这种最坏行为与特定实例之间的关联性。