前言
贪心,是一个很好的算法,只可惜适用的范围不广。随机化,是一个很好的算法,只可惜正确率不高。
如果将这两个算法结合起来,我们能不能得到一个适用范围广、正确率较高的算法呢?
答案是肯定的。
模拟退火( S i m u l a t e d A n n e a l i n g Simulated Annealing SimulatedAnnealing,简称 S A SA SA),一个随机化与贪心结合的算法,就可以轻松解决许多难题(前提是你的RP较好或是数据范围较小)。
一个经典的故事
为了找出地球上最高的山,一群有志气的兔子们开始想办法。
- 兔子朝着比现在高的地方跳去。它们找到了不远处的最高山峰。但是这座山不一定是珠穆朗玛峰。这就是爬山算法,它不能保证局部最优值就是全局最优值。
- 兔子喝醉了。他随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。但是,它渐渐清醒了并朝最高方向跳去。这就是模拟退火。
- 兔子们知道一个兔的力量是渺小的。它们互相转告着&