《人工智慧》第二周問題集4 uninformed search - dfs/iterative deepening search
1. DFS
最常用的實現方法是recursion,也可以用LIFO queue。
time complexity要比bfs更糟,m是最深的層數。
dfs既不complete,又不optimal,time complexity又比bfs還要糟,那還為什麼要介紹dfs?
但是它的space complexity很低!
2. Depth-Limited Search(DLS)
對於bfs來說,completeness/optimal/time complexity都還好,而dfs這三項不行,但是space complexity很好,所以能不能combine這兩種方法?
先來解決completeness問題,在depth infinite的時候,dfs不completeness(陷入最左邊分支的黑洞了),最簡單的方式就是限制深度。
如果解不在l層以內,那麼則不complete。
3. 還能再改進嘛?
Iterative-Deepening Search(IDS)
想法就是把深度的限制慢慢的放寬。
那麼會重複搜索會不會很慢?從時間複雜度來看這些項都被忽略掉了,因為相比limit=l時都不是一個數量級。
但實際上浪費的並不多,只是看起來很浪費。數學上可以算出來差別大概只有10%。
IDS的一個使用場景是棋類,因為一般比賽都有時間上的要求,所以可以根據剩餘的時間選擇搜索的深度。
4. 下面介紹另外一種search:Bidirectional Search
如果我們直到goal state的話,我們也可以從goal往回展。
但是這種方法的限制比較大,一個是我們不一定直到goal state,並且因為要把兩個search tree對起來,space complexity也會增加到指數級別。
5. 總結
推薦閱讀:
※人臉識別有多火?從谷歌到山寨小廠都下手了
※智能製造蘊藏多少投資機會
※2017開發者盤點:是我在解決AI的問題,不是AI解決我的問題
※人工智慧機器人衝擊該如何應對
※在剛剛結束的東京國際機器人展上,有哪些值得研究的機器人?
TAG:人工智能 |