【計算智能】第二章 問題求解的搜索技術

盲目搜索

深度優先搜索 (Depth-first Search)

廣度優先搜索(Breadth-first Search)

迭代加深搜索(iterative deepning)

在這裏插入圖片描述

啓發式搜索

啓發式搜索是利用啓發信息作指導所進行的搜索。
啓發信息是用評價函數f(n)對結點n的“有希望”程度建立一種數值的評估。
f(n)由兩部分組成:f(n)=g(n)+h(n)

  • 從S到n的最佳代價g(n)g^*(n)的估計g(n)
    g(n)選取迄今爲止搜索的從S到n的各條路徑代價的最小值
  • 從n到t的最佳代價h(n)h^*(n)的估計h(n)
    h(n)涉及對未搜索路徑的估計,精度依賴於問題的啓發信息,h(n)也稱爲啓發函數

f(n)=g(n)+h(n)f(n)=g(n)+h(n)作爲f(n)=g(n)+h(n)f^*(n)=g^*(n)+h^*(n)的估計,估計值越小的結點,被認爲希望度越高,應該優先擴展。

最佳優先搜索(Best-first Search)

對於搜索過程中遇到的每個新狀態(或說新結點),按評價函數計算出它的最佳代價估計值,從當前估計值的最小狀態開始繼續搜索,這就是以結點的代價估計值爲標準的最佳優先搜索。

  • 搜索策略
    將結點表按距目標的估計距離進行排序,再以結點的估計距離爲標準選擇待擴展節點

  • 算法步驟

  1. 用N表示已經排序的初始結點表(從小到大)
  2. 如果N爲空集,則退出並給出失敗信號
  3. n取爲N的首結點,並在N中刪除結點n,放入已訪問結點列表
  4. 如果n爲目標結點,則退出並給出成功信號
  5. 否則,將n的後繼結點加到N中,記爲N’,對N’中的結點按距目標的估計距離排序,並返回2步

啓發式圖搜索算法

啓發式圖搜索算法的搜索空間處理的是圖結構(而非樹結構)
用G表示當前已生成的顯式搜索圖

  • 用一張open表存放已生成而尚未進行擴展的結點
  • 用一張closed表存放已生成且處理過的結點
    這兩張表除了結點的描述狀態外,還包括結點的代價估計值f和g、後繼元素、主鏈的前驅指針:指明該結點在通向初始結點的最優通路上的父節點

圖搜索過程(A算法):

  1. 建立一個只由初始結點S組成的搜索圖G,open=(S); closed=() 空表
  2. If open爲空表 then 退出並給出失敗信息
  3. n = first(open); remove(n, open); add(n, closed);
  4. If n爲目標結點 then 退出(成功) (可給出S到n的路徑)
  5. 否則,擴展結點n,生成不是n的祖先的後繼結點集M={m} 把每個m作爲n的後繼結點加入G
  6. If m沒有在open和closed表中出現過
    Then add(m, open)
  7. If m在open表中有重複結點k,且g(m)<g(k)
    Then remove(k,open); add(m, open)
  8. If m在closed表中有重複結點k,且g(m)<g(k) then
    ①將closed表中的結點k改爲結點m(只需修改主鏈指針和f、g)
    ②按後繼元素,修改k在open表和closed表中的後繼元素f,g
    的值
  9. 按f值,自小到大對open表中的結點重新排序,並返回2步

若對所有結點n,都有h(n)≤h*(n),則算法A一定能找到一條到達目標結點的最佳路徑,此時算法A稱爲算法A*。

當啓發函數h(n)=0,即毫無啓發信息,g(n)=d(n),其中d(n)表示結點n的深度,此時A算法退化爲廣度優先搜索。

優化與搜索

爬山搜索

  • 搜索策略
    爬山搜索是最佳優先搜索的變形,爬山搜索不保存搜索過的所有結點,而只保存當前遇到的那些最佳結點
  • 算法步驟
  1. 取n爲初始結點
  2. 如果n的估計值大於其所有子結點的值,則返回n並退出
  3. 否則,取n爲其具有最大值的子結點,返回第二步
  • 算法特點
    得到的是局部最優解,不能保證是全局最優解,依賴於初始解的選擇

梯度搜索

梯度搜索是目標函數具有連續可微性質的爬山搜索方法
算法步驟:

  1. 選取初始值x0Rx_0∈R
  2. xn=xn1+β(df(xn1)dx)x_n=x_{n-1}+β(\frac{df(x_{n-1})}{dx})
  3. df(xn)dx<ϵ|\frac{df(x_n)}{dx}|<\epsilon時,停止搜索

博弈搜索

博弈樹的極小極大搜索

在這裏插入圖片描述

第一步:先生成博弈樹(2-4)
在這裏插入圖片描述
第二步:進行結點靜態估價(6-8)
在這裏插入圖片描述

在這裏插入圖片描述

α-β剪枝

  1. α值、β值的計算方法
  • α值
    一個MAX結點的α值等於其後繼結點當前最大的最終推導值
  • β值
    一個MIN結點的β值等於其後繼結點當前最小的最終推導值
  1. α-β兼職的規則
  • α剪枝
    若MIN結點的β值小於等於其任何父結點MAX的α值,則可以終止該MIN結點以下的搜索,並且這個MIN結點的最終倒推值可取爲它的β值

  • β剪枝
    若任意MAX結點的α值大於等於其父結點MIN的β值,則可以終止該MAX結點以下的搜索,且這個MAX結點的最終推導值可取爲它的α值

  1. 例題

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章