关于模拟退火的简言
模拟退火,一种著名的神奇玄学算法,因为正确性是靠随机来保证的,所以是AC纯看rp。但是因为其思路的优越性,正确率并不低。再很多题目都不失为一种优秀的算法。甚至在有的题目中可以成为正解,比如有无限种情况,且需要求近似解的话,通常其他算法无法求出无限的情况,那么模拟退火就是唯一的办法。
思路
模拟退火的思路,就像前面说的那样,玄学。每次在当前状态的情况下,根据随机数,随机生产下一个状态,再根据一定的概率接受新的解。至于为什么会接受更劣的解呢?因为很多题目的答案可能是多峰函数。如下面这张图:
假如我们不接受劣解的话,一开始如果进入了左部分,很显然就找不到右部分的正解。所以我们要以一定的概率走出当前的局部最优解,去寻找全局最优解。
接下来我们进入到模拟退火的具体实现,首先,我们引入几个参数: E m a x E_{max} Emax ,当前找到的最优解 , E v E_{v} Ev ,当前找到的新解, E u E_u Eu 上一个选择的节点 Δ E \Delta E ΔE 表示当前找到的新节点与当前最优解的差即 E m a x − E v E_{max}-E_v Emax−Ev 。初温