北大公開課-人工智能基礎(chǔ)13 通過搜索求解問題之搜索求解(樹搜索和圖搜索比較)


用樹狀搜索拓?fù)鋱D,簡化圖搜索問題,簡化成邏輯節(jié)點(diǎn)及其相互關(guān)系


使用樹搜索,解決圖搜索問題

功能:通過樹搜索(問題)方案, 返回一個(gè)解決方案或報(bào)錯(cuò)(無路可走狀態(tài))
初始化定義出發(fā)狀態(tài)(問題的初始狀態(tài))
循環(huán)
如果出發(fā)狀態(tài)為空,則返回 報(bào)錯(cuò)
選擇一個(gè)初始狀態(tài)相鄰的節(jié)點(diǎn)
如果 該相鄰節(jié)點(diǎn)狀態(tài)為解決問題狀態(tài),則返回 對(duì)應(yīng)的解決方案
“初始狀態(tài)”是一種數(shù)據(jù)結(jié)構(gòu),用戶存儲(chǔ)所有的當(dāng)前(陰影部分)的節(jié)點(diǎn)信息
循環(huán)擴(kuò)展持續(xù)進(jìn)行,直到找到一個(gè)解,或者沒有其他狀態(tài)可擴(kuò)展(無路可走)。
初始狀態(tài)又成為open list, 將后繼節(jié)點(diǎn)添加到初始狀態(tài)frontier中

紅字部分為圖搜索算法比樹搜索算法多出的部分
定義了拓展?fàn)顟B(tài)explored,也稱為closed list,拓展?fàn)顟B(tài)初始值為空
如果frontier為空,也即沒有可擴(kuò)展的節(jié)點(diǎn),則返回失敗
從frontier中,取出一個(gè)葉節(jié)點(diǎn)
如果該葉節(jié)點(diǎn)包含目標(biāo)狀態(tài),則返回對(duì)應(yīng)的解
然后將該節(jié)點(diǎn)擴(kuò)展到explored這個(gè)數(shù)據(jù)結(jié)構(gòu)中
繼續(xù)擴(kuò)展該節(jié)點(diǎn),并將后繼節(jié)點(diǎn)添加到frontier數(shù)據(jù)結(jié)構(gòu)中,
僅當(dāng)frontier或explored兩個(gè)數(shù)據(jù)集中都不存在該節(jié)點(diǎn)時(shí),我們繼續(xù)上述循環(huán)(直到該節(jié)點(diǎn)包含目標(biāo)狀態(tài)為止)。
