人工智慧 搜尋 啟發式搜尋

2021-09-26 07:29:06 字數 2522 閱讀 3457

搜尋演算法的形式化描述:

《狀態state、動作motion、狀態轉移state transition、路徑path、測試目標test target>

一、啟發式搜尋(有資訊搜尋)(heuristic  search)

代表演算法:貪婪最佳優先搜尋(greedy best-first search)、a*搜尋

啟發式搜尋需要有:

1、輔助資訊,也就是與求解問題相關的額外資訊,就跟做數學題時的已知條件一樣,根據已知條件求解。

2、評價函式(evaluation function)

f(n),從當前節點n出發,根據評價函式來選擇後續節點。

3、啟發函式(heuristic function)

h(n),計算從節點n到目標節點所形成路徑的最小代價值。

例如下圖所示的乙個城市路線圖,要求搜尋目標為找到一條從arad-->buchareat的最短路徑

輔助資訊:任意乙個城市與bucharest的直線距離

利用gbfs演算法:

f(n)=h(n):下乙個節點=當前節點到目標節點為最小代價的節點

過程:從起始狀態(start state)arad根據輔助資訊尋找下乙個可能成為最短路徑的城市,也就是尋找與arad相鄰的城市中與buchareat的直線距離最短的那個城市作為下乙個狀態(state),也就是sibiu,依次往下尋找,最後找到最短路徑:

因為這個搜尋過程每次在確定下乙個候選節點的時候,總是選擇那個到達目標城市直線距離最短的節點, 所以稱其為貪婪最佳優先搜尋。但是通過結果我們可以發現,演算法得到的路線arad-->sibu-->fagaras-->bucharest比arad-->rimnicu vilcea-->pitesti-->bucharest路線還多出32公里,因此gbfs演算法不是最優的而且也是不完備的。因為它可能沿著一條無限路徑走下去而不回來做其他嘗試,距離目標節點直線距離最近的節點組成的路徑不可能都是最短路徑,這種搜尋演算法得到的實際路線可能會繞路,或者根本到達不了目標節點。比如,搜尋從iasi-->fagaras的最短路徑,根據gbfs演算法由啟發式建議需先擴充套件neamt,這樣就形成了一條死迴圈路徑。最壞的情況下,gbfs演算法的時間複雜度和空間複雜度都是o(b^m),其中b是節點的分支因子數目,m是搜尋空間的最大深度。因此,需要設計乙個良好的啟發式函式(heuristic function)。

為了解決gbfs演算法的不足,a*演算法被提出。

下面我們介紹一下a*演算法:

評價函式:f(n)=g(n)+h(n)  

其中,g(n) 表示從起始節點到節點n的開銷代價值,

h(n) 表示從節點n到目標節點路徑中所估算的最小開銷代價值,

f(n) 視為經過節點n、具有最小開銷代價值的路徑。

為了保證a*演算法是最優(optimal),需要啟發函式 h(n) 是可容的(admissible heuristic)和一致的(consistency,或者也稱單調性,即 monotonicity)

演算法過程;

以上我們可以得出a*演算法是最優的,其保持最優的條件就是啟發函式具有可溶性(admissible)和一致性 (aconsistency)。

上述將直線距離作為啟發函式h(n),則啟發函式一定是可容的,因為直線距離最短,不會高估開銷代價。

g(n)是從起始節點到節點n的實際代價開銷,且f(n) = g(n) + h(n),因為g(n)是確定的,我們預估的是h(n),h(n)是不會高估開銷代價的,因此f(n)不會高估經過節點n路徑的實際開銷。

一致性條件:h(n) <= c(n,a,n')+h(n')構成了三角不等式。這裡節點n、節點n'和目標節點gn之間組成了乙個三角形。如果存在一條經過節點n',從節點n到目標節點gn的路徑,其代價開銷小於h(n),則破壞了h(n)是從節點n到目標節點gn所形成的具有最小開銷代價的路徑這一定義。

人工智慧 有資訊搜尋 (啟發式)

一 最佳優先搜尋 根據評價函式選擇表現的最佳的節點進行擴充套件 最佳優先搜尋 best first search 演算法 不同的方法有不同的評價函式 啟發函式,標記h x h n 從節點n到目標的最低耗散估計值 啟發函式是額外資訊的一種最普通的形式 二 貪婪最佳優先搜尋 最先擴充套件離目標節點最近的...

啟發式搜尋

啟發式搜尋 heuristically search 又稱為有資訊搜尋 informed search 它是利用問題擁有的啟發資訊來引導搜尋,達到減少搜尋範圍 降低問題複雜度的目的,這種利用啟發資訊的搜尋過程稱為啟發式搜尋。例題 八數碼問題 運用優先佇列,根據目前已經確定的位置算出目前的價值,並匯入...

啟發式搜尋

啟發式搜尋 啟發式搜尋就是在狀態空間中的搜尋對每乙個搜尋的位置進行評估,得到最好的位置,再從這個位置進行搜尋直到目標。這樣可以省略大量無謂的搜尋路徑,提高了效率。在啟發式搜尋中,對位置的估價是十分重要的。採用了不同的估價可以有不同的效果。在啟發式搜尋中,我們每次找到當前 最有希望是最短路徑 的狀態進...