北大公開課-人工智能基礎(chǔ) 24 局部搜索與群體智能之局部搜索算法(一)爬山法


爬山法是局部搜索算法的一種

通過迭代,找到這個局部內(nèi)最?。ㄉ焦龋┗蛘咦畲笾担ㄉ椒澹?/p>
(最陡峭版本的)爬山算法邏輯
定義兩個變量 current 當(dāng)前節(jié)點
和neighbour 相鄰節(jié)點
首先,將當(dāng)前節(jié)點current 設(shè)置為初始問題狀態(tài) make-node(problem. initial-state)
然后開始循環(huán) loop do
? ? ? ? 將當(dāng)前節(jié)點的后繼節(jié)點successor 計入neighbour相鄰節(jié)點
? ? ? ? 如果 相鄰節(jié)點 小于等于 當(dāng)前節(jié)點的,則返回當(dāng)前節(jié)點的狀態(tài)
? ? ? ? 否則,將該相鄰節(jié)點(也就是大于當(dāng)前節(jié)點的后繼節(jié)點)計入當(dāng)前節(jié)點
直到當(dāng)前節(jié)點的后繼節(jié)點均小于等于當(dāng)前節(jié)點,則返回當(dāng)前節(jié)點,為該局部的最大值。

爬山算法是一種最基礎(chǔ)的局部搜索算法
它同樣也是一種貪婪算法
因為該爬山算法并不考慮整體效果,而只考慮當(dāng)前節(jié)點和它相鄰節(jié)點的比較值
速度很快,內(nèi)存占用小

八皇后問題,在一個國際象棋棋盤上,放置八個皇后,使他們不會相互沖突,有幾種擺法。

爬山法的缺點,只能找到局部的最大值,而非全局最大值。

幾種特殊的爬山法——隨機(jī)爬山法
(1)隨機(jī)選擇后繼節(jié)點,進(jìn)行爬山,保留更高的后繼節(jié)點。
(2)隨機(jī)生成后繼節(jié)點進(jìn)行爬山

(3)隨機(jī)生成初始節(jié)點——進(jìn)行爬山,這樣一定能找到一個全局最大值。
