昨天学习了模拟退火算法以及一个小智力题:海盗分赃~
模拟退火算法前先看了爬山算法,爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解寻找一个最有解作为当前解,直到达到一个局部最优解,但是缺点就是容易陷入局部最优解。模拟退火算法就是跳出了局部最优解的问题,即以一定的概率接受一个比当前解要差的解从而可能跳出局部最优解,获得全局最优解。这儿一定的概率就是P(dE) = exp( dE/(kT) ) 根据热力学的原理,在温度为T时,出现能量差为dE的降温的概率为P(dE)。
k是常数,exp表示自然指数,且dE<0。这条公式说白了就是:温度越高,出现一次能量差为dE的降温的概率就越大;温度越低,则出现降温的概率就越小。又由于dE总是小于0(否则就不叫退火了),因此dE/kT < 0 ,所以P(dE)的函数取值范围是(0,1) 。
部分来源:https://www.cnblogs.com/heaad/archive/2010/12/20/1911614.html
关于海盗分赃的问题十分有趣,海盗是一次性全部抽签,还是动态按顺序依次抽签