网站大量收购独家精品文档,联系QQ:2885784924

启发式搜寻方法.PPT

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
启发式搜寻方法

第四章 啟發式搜尋方法 4.1 最佳擾先搜尋法 4.2 啟發函數 4.3 記憶體限制尋法 4.4 疊代改進演算法 4.1 最佳優先搜尋法 有許多方式,可以將知識套用在以狀態與運算元形成問題的過程上。不過,一旦有了定義明確的問題之後,我們可以選擇的機會就會變得比較有限。一般搜尋(General-Search)策略的話,唯一可以套用知識的地方,就是在佇列函數(queuing function)之中,它的作用在決定要優先擴展的節點。通常制訂這項決策所需的知識是由評量函數(evaluation function)提供的,這個函數會回傳一個數字,代表擴展該節點的有用程度。當它們以最佳的節點優先擴展的方式排序時,所形成的就是最佳優先搜尋(Best-First Search)策略。它可以使用一般搜尋策略直接導入,如圖4.1所示。 4.1.1 貪婪搜尋法 最簡單的最佳優先搜尋策略之一是讓到達目標的成本估計值為最小,也就是由評量函數預估由各節點狀態到達目標狀態所需的成本,並永遠優先擴展最接近目標狀態的節點。計算預估成本的函數稱為”經驗函數”,通常用字母h表示︰ h(n)=由節點n的狀態到達目標狀態的最低路 徑成本估計值 當最佳優先搜尋策略套用經驗函數h做為選擇下個擴展節點的依據時,這種搜尋方法就稱為”貪婪搜尋法”。若已知一個經驗函數h,則貪婪搜尋法的程式可以用下列方式敘述︰ 一般而言,經驗函數h可以是任意形式的函數。我們要求h(n) = 0,如果n是搜尋目標。 經驗函數具有問題相依(problem-specific)的特性,通常我們會針對不同問題採用不同的經驗函數求解,因此應該先選擇一個已知的問題作為討論經驗函數的範例。探討尋找從Arad到Bucharest的路徑的問題,相關的地圖也再列於圖4.2。圖4.3列出使用貪婪搜尋法由Arad到Bucharest的路徑擴展過程。 hSLD(n)=從n到目標位置的直線距離 4.1.2 A*搜尋 貪婪搜尋法使到達目標的預估成本h(n)為最低,並藉以大幅度降低搜尋成本。遺憾地,貪婪搜尋法既非最佳解也缺乏完整性。另一方面,”固定成本搜尋法”能讓已經展開的路徑成本g(n)為最低,不僅有最佳解而且具有完整性,然而效率可能非常差。最好能結合這兩種方法以取得兩者的優點。 f(n) = g(n) + h(n) f(n) = 經過節點n的最經濟的解答的估 計成本。 h函數稱為可用的經驗法則。可用的經驗法則最明顯的例子是我們用在要前往Bucharest的直線距離hSLD。直線距離是可用的,因為任何兩個點之間的最短路徑是直線。圖4.4顯示用hSLD做為啟發函數的A*搜尋法解決前往Bucharest問題的前面幾個步驟。 4.1.3 A*搜尋法的行為 做這個觀察的目的是建構一個A*正確執行的圖像。如果f從根節點開始的任何路徑都不會減小,我們觀念上可以描繪出狀態空間的輪廓。圖4.5顯示一個範例。在標示為400的輪廓內部,所有的節點的f值都小於或等於400,以此類推。 定義f*為最佳解路徑的成本,則: ?? (1)A*展開所有具有f(n)f*的節點。 ?? (2)A*可能正確的展開某些在「目標輪廓」上的節點,對於f(n)=f*,在找到目標狀態之前。 4.1.4 A*的最佳性證明 令G為最佳目標狀態,具有路徑成本f*。令G2為次佳的目標狀態,也就是一個目標狀態,其路徑成本g(G2) f*。現在我們想像A*從佇列選擇了G2。因為G2是一個目標狀態,這樣將會終止搜尋並得到次佳的解答(圖4.6)。我們將證明這是不可能的。 考慮節點n其現在為到G的最佳路徑上的葉節點 f* ? f(n)。 再者,如果n沒有被為了展開G2而選擇,我們必須得到 f(n) ? f(G2)。 組合這兩個式子,我們得到 f* ? f(G2)。 但因為G2是目標狀態,我們得到h(G2)=0;因此我們已經從我們的假設證明了: f*? g(G2)。 這和G2是次佳的假設矛盾,因此這樣的情形一定是A*永遠不會選擇次佳的目標展開。因此,因為A*只會在解答被展開之後傳回這個解答,所以A*最佳的演算法。 4.1.5 A*的完備性證明 存在無限多的節點的可能是只有:(a)有一個節點具有無限大的分支因子,或者(b)有一條路徑具有有限的路徑成本,但是在它上面有無數個節點。 因此,正確的敘述是,在存在一個正常數δ使得每一個運算成本最少為δ這樣的條件之下,A*在局部性有限圖是完備的(具有有限分支因子的圖)。 4.1.6 A*的複雜度 A*搜尋法,在所有這一類的演算法之中是是完備的、最佳的同時也是效率最佳的不可否認的。對

文档评论(0)

zhuwo + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档