计算几何中的模拟退火

模拟退火(SA,Simulated Annealing)

 

这是一种随机算法,其实模拟退火也算一种贪心算法。但是它在搜索过程中引入了随机因素。模拟退火算法以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。

 

顺便说一下爬山算法:爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。

爬山算法的原理很简单,但是他很容易陷入进一个局部的最优解从而得不出想要的答案。

这里网上有一个非常好的关于爬山算法和模拟退火算法的比喻:

爬山算法:兔子朝着比现在高的地方跳去。它找到了不远处的最高山峰。但是这座山不一定是珠穆朗玛峰。这就是爬山算法,它不能保证局部最优值就是全局最优值。

模拟退火:兔子喝醉了。它随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。但是,它渐渐清醒了并朝最高方向跳去。这就是模拟退火。

 

当然,作为一种随机算法,模拟退火有可能不能每一次都正确的得到需要的最优值。。不过,在参数设置的合适的情况下,得到最优解的概率还是很高的。这种情况下,模拟退火的效率比穷举要高。所以,有时候还是要拼RP的。。。

 

而模拟退火在计算几何中的应用多是:求平面最近点对,最远点,多边形的费马点,等等。还可以结合其他算法对搜索进行优化,用的地方还是挺多的。

几道简单的模拟退火的题目:

      POJ 1379 Run Away
      http://poj.org/problem?id=1379
 
      POJ 2420 A Star not a Tree?
      http://poj.org/problem?id=2420
 
      POJ 2069 Super Star
      http://poj.org/problem?id=2069
 

 

 

posted @ 2012-08-19 09:20  XDruid  阅读(689)  评论(0编辑  收藏  举报