模擬退火詳解
阿新 • • 發佈:2021-07-16
本演算法建議謹慎使用,否則一不小心就會變成模擬退役
爬山演算法
爬山演算法是一種貪心搜尋,每次從當前狀態的所有後繼狀態中選擇一個最優解繼續搜尋,直到達到一個區域性最優解後不再搜尋。
優點:好寫
缺點:容易陷入區域性最優解出不來
就像下圖一樣
多隨機幾個初始狀態就能減小(不能消除)缺點
模擬退火
模擬退火來源於金屬的冷卻過程
溫度高時,金屬內能較大,原子活動範圍大。
溫度低時,金屬內能較小,原子活動範圍小。
搜尋的時候也類似
T(溫度)初始值很大,每次呈上一個小於1的數,T越大,搜尋狀態越容易轉移
T比較大的時候,不用管下一個搜尋狀態是好是壞,大概率轉移
T比較小的時候,類似爬山演算法
可以看 這個裡邊的gif理解
為了保證正確性,可以多做幾次。
或者可以用上ctime,控制程式執行時間,卡題目時限,在規定時間多執行幾次
就像下面這樣
while(clock()<Time){}
注意不同的系統返回的時間的單位可能不同!
P1337 [JSOI2004]平衡點 / 吊打XXX 題解
在各種題目中都能用到,正確性不能保證,很少用作正解,但好的時候能媲美標算。
還有在各種提交答案題中都能用到