對於搜索的新理解
阿新 • • 發佈:2018-02-07
目的 搜索 最大 叠代加深 ont 廣搜 back 什麽 lsp
搜索是什麽?
1.問題全狀態空間
2.搜索空間
3.解路徑
分類
一,盲目搜索(只是搜索的順序不同)
1.深度優先搜索
2.寬度優先搜索
二,啟發式搜索
A*算法
分類來講
1.深度優先搜索
例題:皇後問題
存在的問題:1.深度問題,2.死循環問題
解決辦法:1.對搜索深度加以限制
2.記錄從初始狀態到當前狀態的路徑
性質:一般不能保證找到最優解
當深度現在不合理時,可能找不到解,可以將算法改為可變深度限制
最壞的情況,搜索空間相當於窮舉
是一個通用的與問題無關的方法
節省內存,只存儲從初始節點到當前節點的路徑
2.寬度優先搜索
優先擴展深度淺的節點
通常用一個隊列來實現
例題:八數碼
性質:當問題有解時,一定能找到解
當問題為單位耗散值,且問題有解時,一定能找到最優解
方法與問題無關,具有通用性
效率較低
存儲量比較大
【對比】
深搜 | 廣搜 |
不保證最優解,除非枚舉所有情況 | 每步代價相同時,一定能找到最優解 |
空間消耗低 | 空間消耗高 |
具有通用性 | |
效率低 |
叠代加深搜索(dbfs)
解決寬搜內存大和深搜不能保證最優解的問題
解決方案:枚舉最大的代價,用深搜判斷是否有解--》卡時間
3.啟發式搜索(A*搜索)
關鍵在於對當前局面作出預估,判斷當前局面到目的的局面至少還需要多少步
估價函數決定了A*算法的優劣
練習題:1.01迷宮
2.高手去散步
3.血色先鋒隊
對於搜索的新理解