人工智能3:通過搜索進行問題求解


      形式化、搜索、執行。

一、形式化

      1. 初始狀態

      2. 可能行動

      3. 轉移模型

      4. 目標測試

      5. 路徑耗散

二、算法性能

      1. 完備性

      2. 最優性

      3. 時間復雜度

      4. 空間復雜度

三、無信息搜索策略

      1. 寬度優先搜索

      先擴展根結點,接着擴展根結點的所有后繼,然后再擴展它們的后繼。一般地,在下一層的任何結點擴展之前,搜索樹上本層深度的所有結點都應該已經擴展過。使用FIFO隊列。

      性能:完備的、最優的。時間和空間需求太大。

      2. 一致代價搜索

      擴展的是路徑消耗g(n)最小的結點n,也就是對任何單步代價函數都是最優的算法。可以通過將邊緣結點集組合成按g值排序的隊列來實現。目標檢測應用於結點被選擇擴展時,而不是生成時。也就是要先算所有的代價值。

      性能:如果沒有為0的代價就是完備的。最優的。時間和空間消耗比寬度優先搜索還要打。

      3. 深度優先搜索

      總是擴展搜索樹的當前邊緣結點集中最深的結點。使用LIFO隊列。最新生成的結點最早被選擇擴展。效率嚴重依賴於使用圖搜索還是樹搜索。

      性能:圖搜索是完備的,樹搜索不完備。不是最優的。時間復雜度受限於狀態空間的規模。空間復雜度性能非常好。當狀態空間分支因子為b最大深度為m,只需存儲O(bm)個結點。

      一種變形:回溯搜索。所用內存空間更少。

      4. 深度受限搜索

      解決了無窮路徑的問題。

      性能:不完備。不是最優的。

      5. 迭代加深的深度優先搜索

      經常和深度優先搜索結合使用來確定最好的深度界限。做法是不斷增大深度限制,直到找到目標。

      6. 雙向搜索

       同時運行兩個搜索,一個從初始狀態向前搜索同時另一個從目標狀態向后搜索,希望它們在中間某點相遇。可以這樣實現:目標測試替換為檢查兩個方向的搜索的邊緣結點集是否相交;如果交集不為空就找到了一個解。

四、有信息(啟發式)搜索策略

      最佳優先搜索,結點是基於評價函數f(n)值被選擇擴展的。大多數的最佳優先搜索算法的f由啟發函數構成:

      h(n) = 結點n到目標結點的最小代價路徑的代價估計值。

      1. 貪婪最佳優先搜索

      試圖擴展離目標最近的結點,理由是這樣可能可以很快找到解。只用啟發式信息,即f(n)=h(n)。

      2. A*搜索:縮小總評估代價

      它對結點的評價結合了g(n),即到達此結點已經花費的代價,和h(n),從該結點到目標結點所化代價:f(n)=g(n)+h(n)=經過結點n的最小代價解的估計代價。

      保證最優性的條件:(1)h(n)是一個可采納啟發式,指它從不會過高估計到達目標的代價。(2)一致性:就是三角不等式,一條邊長度不大於另兩條邊之和。

      3. 存儲受限的啟發式搜索

      迭代加深A*(IDA*)算法。和典型的迭代加深算法的主要區別是所用的截斷值是f代價(g+h)而不是搜索深度。

      遞歸最佳優先搜索(RBFS)。MA*和SMA*算法。這幾種是魯棒的、最優的搜索算法,它們使用有限的內存;只要時間充足,它們能求解A*算法因為內存不足不能求解的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM