版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2023/9/221第3章搜索策略問(wèn)題求解系統(tǒng)劃分為兩大類(lèi)知識(shí)貧乏系統(tǒng)
依靠搜索技術(shù)解決問(wèn)題知識(shí)貧乏、缺乏針對(duì)性效率低知識(shí)豐富系統(tǒng)
依靠推理技術(shù)解決問(wèn)題基于豐富知識(shí)的推理技術(shù),直截了當(dāng)效率高2023/9/222第3章搜索策略兩大類(lèi)搜索技術(shù):1、一般圖搜索、啟發(fā)式搜索2、基于問(wèn)題歸約的與或圖搜索兩種典型的推理技術(shù):1、基于歸結(jié)的演繹推理歸結(jié)反演2、基于規(guī)則的演繹推理正向演繹推理逆向演繹推理2023/9/2233.1引言
對(duì)于給定的問(wèn)題,智能系統(tǒng)的行為一般是找到能夠達(dá)到所希望目標(biāo)的動(dòng)作序列,并使其所付出的代價(jià)最小、性能最好?;诮o定的問(wèn)題,問(wèn)題求解的第一步是目標(biāo)的表示。搜索就是找到智能系統(tǒng)的動(dòng)作序列的過(guò)程。2023/9/224搜索算法的輸入是給定的問(wèn)題,輸出時(shí)表示為動(dòng)作序列的方案。一旦有了方案,就可以執(zhí)行該方案所給出的動(dòng)作了。(執(zhí)行階段)因此,求解問(wèn)題包括:目標(biāo)表示搜索執(zhí)行2023/9/225(1)初始狀態(tài)集合:定義了初始的環(huán)境。(2)操作符集合:把一個(gè)問(wèn)題從一個(gè)狀態(tài)變換為另一個(gè)狀態(tài)的動(dòng)作集合。(3)目標(biāo)檢測(cè)函數(shù):用來(lái)確定一個(gè)狀態(tài)是不是目標(biāo)。(4)路徑費(fèi)用函數(shù):對(duì)每條路徑賦予一定費(fèi)用的函數(shù)。其中,初始狀態(tài)集合和操作符集合定義了問(wèn)題的搜索空間。一般給定問(wèn)題就是確定該問(wèn)題的一些基本信息,一個(gè)問(wèn)題由4部分組成:2023/9/226和通常的搜索空間不同,人工智能中大多數(shù)問(wèn)題的狀態(tài)空間在問(wèn)題求解之前不是全部知道的。
在人工智能中,搜索問(wèn)題一般包括兩個(gè)重要的問(wèn)題:搜索什么搜索什么通常指的就是目標(biāo)。在哪里搜索在哪里搜索就是“搜索空間”。搜索空間通常是指一系列狀態(tài)的匯集,因此稱(chēng)為狀態(tài)空間。2023/9/227所以,人工智能中的搜索可以分成兩個(gè)階段:狀態(tài)空間的生成階段在該狀態(tài)空間中對(duì)所求問(wèn)題狀態(tài)的搜索搜索可以根據(jù)是否使用啟發(fā)式信息分為盲目搜索啟發(fā)式搜索2023/9/228盲目搜索只是可以區(qū)分出哪個(gè)是目標(biāo)狀態(tài)。一般是按預(yù)定的搜索策略進(jìn)行搜索。沒(méi)有考慮到問(wèn)題本身的特性,這種搜索具有很大的盲目性,效率不高,不便于復(fù)雜問(wèn)題的求解。
啟發(fā)式搜索是在搜索過(guò)程中加入了與問(wèn)題有關(guān)的啟發(fā)式信息,用于指導(dǎo)搜索朝著最有希望的方向前進(jìn),加速問(wèn)題的求解并找到最優(yōu)解。
2023/9/229根據(jù)問(wèn)題的表示方式分為狀態(tài)空間搜索與或圖搜索狀態(tài)空間搜索是用狀態(tài)空間法來(lái)求解問(wèn)題所進(jìn)行的搜索與/或圖搜索是指用問(wèn)題規(guī)約方法來(lái)求解問(wèn)題時(shí)所進(jìn)行的搜索。2023/9/2210考慮一個(gè)問(wèn)題的狀態(tài)空間為一棵樹(shù)的形式。寬度優(yōu)先搜索深度優(yōu)先搜索如果根節(jié)點(diǎn)首先擴(kuò)展,然后是擴(kuò)展根節(jié)點(diǎn)生成的所有節(jié)點(diǎn),然后是這些節(jié)點(diǎn)的后繼,如此反復(fù)下去。在樹(shù)的最深一層的節(jié)點(diǎn)中擴(kuò)展一個(gè)節(jié)點(diǎn)。只有當(dāng)搜索遇到一個(gè)死亡節(jié)點(diǎn)(非目標(biāo)節(jié)點(diǎn)并且是無(wú)法擴(kuò)展的節(jié)點(diǎn))的時(shí)候,才返回上一層選擇其他的節(jié)點(diǎn)搜索。2023/9/2211無(wú)論是寬度優(yōu)先搜索還是深度優(yōu)先搜索,遍歷節(jié)點(diǎn)的順序一般都是固定的,即一旦搜索空間給定,節(jié)點(diǎn)遍歷的順序就固定了。這種類(lèi)型的遍歷稱(chēng)為“確定性”的,也就是盲目搜索。對(duì)于啟發(fā)式搜索,在計(jì)算每個(gè)節(jié)點(diǎn)的參數(shù)之前無(wú)法確定先選擇哪個(gè)節(jié)點(diǎn)擴(kuò)展,這種搜索一般也稱(chēng)為非確定的。2023/9/2212完備性:如果存在一個(gè)解答,該策略是否保證能夠找到?時(shí)間復(fù)雜性:需要多長(zhǎng)時(shí)間可以找到解答?空間復(fù)雜性:執(zhí)行搜索需要多少存儲(chǔ)空間?最優(yōu)性:如果存在不同的幾個(gè)解答,該策略是否可以發(fā)現(xiàn)最高質(zhì)量的解答?搜索策略評(píng)價(jià)標(biāo)準(zhǔn):2023/9/2213有許多智力問(wèn)題(如梵塔問(wèn)題、旅行商問(wèn)題、八皇后問(wèn)題、農(nóng)夫過(guò)河問(wèn)題等)和實(shí)際問(wèn)題(如路徑規(guī)劃、機(jī)器人行動(dòng)規(guī)劃等)都可以歸結(jié)為狀態(tài)空間搜索。用狀態(tài)空間搜索來(lái)求解問(wèn)題的系統(tǒng)均定義一個(gè)狀態(tài)空間,并通過(guò)適當(dāng)?shù)乃阉魉惴ㄔ跔顟B(tài)空間中搜索解答路徑。3.2基于狀態(tài)空間的搜索技術(shù)2023/9/2214狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示(1)狀態(tài)空間的表示★狀態(tài)空間記為SP,可表示為二元組:SP=(S,O)S——問(wèn)題求解(即搜索)過(guò)程中所有可能到達(dá)的合法狀態(tài)構(gòu)成的集合;O——操作算子的集合,操作算子的執(zhí)行會(huì)導(dǎo)致問(wèn)題狀態(tài)的變遷;狀態(tài)——用于記載問(wèn)題求解(即搜索)過(guò)程中某一時(shí)刻問(wèn)題現(xiàn)狀的快照;抽象為矢量形式Q=[q0,q1,…,qn]T每個(gè)元素qi稱(chēng)為狀態(tài)分量
給定每個(gè)狀態(tài)分量qi的值就得到一個(gè)具體的狀態(tài)
Qk=[q0k,q1k,…,qnk]T2023/9/2215狀態(tài)表示狀態(tài)的變遷操作算子問(wèn)題的狀態(tài)空間是一個(gè)表示該問(wèn)題的全部可能狀態(tài)及其變遷的有向圖。節(jié)點(diǎn)狀態(tài)有向弧狀態(tài)的變遷
弧上的標(biāo)簽導(dǎo)致?tīng)顟B(tài)變遷的操作算子
用狀態(tài)空間搜索來(lái)求解問(wèn)題的系統(tǒng)均定義一個(gè)狀態(tài)空間,并通過(guò)適當(dāng)?shù)乃阉魉惴ㄔ跔顟B(tài)空間中搜索解答路徑。2023/9/2216例1:走迷宮是人們熟悉的一種游戲。狀態(tài)空間搜索2023/9/2217格子、入口和出口——節(jié)點(diǎn)——狀態(tài)通道——有向弧——操作算子迷宮可以由一個(gè)有向圖表示2023/9/2218
例2:在一個(gè)3×3的方格棋盤(pán)上放置著1,2,3,4,5,6,7,8八個(gè)數(shù)碼,每個(gè)數(shù)碼占一格,且有一個(gè)空格。這些數(shù)碼可在棋盤(pán)上移動(dòng),其移動(dòng)規(guī)則是:與空格相鄰的數(shù)碼方可移入空格。 現(xiàn)在的問(wèn)題是:對(duì)于指定的初始棋局和目標(biāo)棋局,給出數(shù)碼的移動(dòng)序列。該問(wèn)題稱(chēng)為八數(shù)碼問(wèn)題。
56741382初始棋局56748321目標(biāo)棋局移動(dòng)數(shù)碼2023/9/2219231847652318476528314765231847652831476528316475283147652831647528316475283714658321476528143765283145761237846512384765283641752831675483214765283714652814376528314576123847652023/9/22202023/9/2221
例3:錢(qián)幣翻轉(zhuǎn)問(wèn)題。設(shè)有3個(gè)錢(qián)幣,其初始狀態(tài)為(正、反、正),欲得的目標(biāo)狀態(tài)為(正、正、正)或(反、反、反)。問(wèn)題是允許每次只能且必須翻轉(zhuǎn)一個(gè)錢(qián)幣,連翻三次。問(wèn)能否達(dá)到目標(biāo)狀態(tài)。分析:通過(guò)引入一個(gè)三維變量將問(wèn)題表示出來(lái)。設(shè)三維變量為:Q=[q1,q2,q3],式中qi(i=1,2,3)=1表示錢(qián)幣為正面,qi(i=1,2,3)=0表示錢(qián)幣為反面。則三個(gè)錢(qián)幣可能出現(xiàn)的狀態(tài)有8種組合:Q0=(0,0,0),Q1=(0,0,1),Q2=(0,1,0),Q3=(0,1,1),Q4=(1,0,0),Q5=(1,0,1),Q6=(1,1,0),Q7=(1,1,1)。即初始狀態(tài)為Q5,目標(biāo)狀態(tài)為Q0或Q7,要求步數(shù)為3。2023/9/2222錢(qián)幣問(wèn)題的狀態(tài)空間圖2023/9/2223狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示(2)狀態(tài)空間表示的經(jīng)典例子“傳教士和野人問(wèn)題”★問(wèn)題的描述:N個(gè)傳教士帶領(lǐng)N個(gè)野人劃船過(guò)河;3個(gè)安全約束條件:1)船上人數(shù)不得超過(guò)載重限量,設(shè)為K個(gè)人;2)任何時(shí)刻(包括兩岸、船上)野人數(shù)目不得超過(guò)傳教士;3)允許在河的某一岸或者在船上只有野人而沒(méi)有傳教士;2023/9/2224狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示(2)狀態(tài)空間表示的經(jīng)典例子“傳教士和野人問(wèn)題”特例:N=3,K=2狀態(tài)分量m——傳教士在左岸的實(shí)際人數(shù)狀態(tài)分量c——野人在左岸的實(shí)際人數(shù)狀態(tài)分量b——指示船是否在左岸(1、0)3個(gè)安全約束條件m≧c(左岸安全)且N-m≧N-c(右岸安全);(想一想,為什么不考慮船安全?)m=0且0≤c≤N(左岸沒(méi)有傳道士,右岸一定安全);N-m=0且0≤N-c≤N(右岸沒(méi)有傳道士,左岸一定安全);2023/9/2225設(shè)初始狀態(tài)下傳教士、野人和船都在左岸,目標(biāo)狀態(tài)下這三者均在右岸,問(wèn)題狀態(tài)以(m,c,b)表示。問(wèn)題的求解任務(wù)可描述為:(3,3,1)→(0,0,0)該簡(jiǎn)單問(wèn)題可能到達(dá)的合法狀態(tài):可能狀態(tài)總數(shù):4×4×2=32根據(jù)條件得出合法狀態(tài):20m≧c且N-m≧N-c(左岸安全且右岸安全)m=1,c=1;m=2,c=2
m=0且0≤c≤N(左岸沒(méi)有傳道士)m=0,c=0,1,2,3
N-m=0且0≤N-c≤N(右岸沒(méi)有傳道士)m=3,c=0,1,2,3不可能到達(dá)的合法狀態(tài):(0,0,1),(0,3,0),(3,0,1),(3,3,0)可能到達(dá)的合法狀態(tài)共16個(gè)2023/9/2226狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示(2)狀態(tài)空間表示的經(jīng)典例子“傳教士和野人問(wèn)題”定義2類(lèi)操作算子:L(x,y)——指示從左岸到右岸的劃船操作R(x,y)——指示從右岸到左岸的劃船操作x+y≤K=2(船的載重限制);x和y取值的可能組合只有5個(gè)10,20,11,01,02
(允許在船上只有野人而沒(méi)有傳教士)共有10個(gè)操作算子2023/9/2227渡河問(wèn)題的狀態(tài)空間有向圖2023/9/2228狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示總結(jié)狀態(tài)空間表示方法:★用狀態(tài)空間方法表示問(wèn)題時(shí),首先必須定義狀態(tài)的描述形式,通過(guò)使用這種描述形式可把問(wèn)題的一切狀態(tài)都表示出來(lái)。另外,還要定義一組操作,通過(guò)使用這些操作可把問(wèn)題由一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)。
問(wèn)題的求解過(guò)程是一個(gè)不斷把操作作用于狀態(tài)的過(guò)程。如果在使用某個(gè)操作后得到的新?tīng)顟B(tài)是目標(biāo)狀態(tài),就得到了問(wèn)題的一個(gè)解。這個(gè)解是從初始狀態(tài)到目標(biāo)狀態(tài)所用操作構(gòu)成的序列。
2023/9/2229狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示總結(jié)狀態(tài)空間表示方法:★要使問(wèn)題由一種狀態(tài)轉(zhuǎn)變到另一種狀態(tài)時(shí),就必須使用一次操作。這樣,在從初始狀態(tài)轉(zhuǎn)變到目標(biāo)狀態(tài)時(shí),就可能存在多個(gè)操作序列(即得到多個(gè)解)。那么,其中使用操作最少或較少的解才為最優(yōu)解(因?yàn)橹挥性谑褂貌僮鲿r(shí)所付出的代價(jià)為最小的解才是最優(yōu)解)。
對(duì)其中的某一個(gè)狀態(tài),可能存在多個(gè)操作.使該狀態(tài)變到幾個(gè)不同的后繼狀態(tài).那么到底用哪個(gè)操作進(jìn)行搜索呢?這就有賴于搜索策略了.不同的搜索策略有不同的順序,這就是本章后面要討論的問(wèn)題。
2023/9/2230課堂練習(xí)有一農(nóng)夫帶一只狐貍、一只小羊和一籃菜過(guò)河(從左岸到右岸)。假設(shè)船太小,農(nóng)夫每次只能帶一樣?xùn)|西過(guò)河;考慮到安全,無(wú)農(nóng)夫看管時(shí),狐貍和小羊不能在一起,小羊和那籃菜也不能在一起。請(qǐng)為該問(wèn)題的解決設(shè)計(jì)狀態(tài)空間,并畫(huà)出狀態(tài)空間圖。
2023/9/2231解析以變量m、f、s、v分別指示農(nóng)夫、狐貍、小羊、菜,且每個(gè)變量只可取值1(表示在左岸)或0(表示在右岸)。問(wèn)題狀態(tài)可以四元組(m、f、s、v)描述,設(shè)初始狀態(tài)下均在左岸,目標(biāo)狀態(tài)下都到達(dá)右岸。從而,問(wèn)題求解任務(wù)可描述為
(1,1,1,1)->(0,0,0,0)思考:為什么不把船的狀態(tài)放到狀態(tài)空間中去?由于問(wèn)題簡(jiǎn)單,狀態(tài)空間中可能的狀態(tài)總數(shù)為2×2×2×2=16,由于要遵從安全限制,合法的狀態(tài)只有(除初、目狀態(tài)外):
1110,1101,1011,1010,0101,0001,0010,0100;
不合法狀態(tài)有:0111,1000,1100,0011,0110,1001設(shè)計(jì)二類(lèi)操作算子:Lx、Rx,x為m、f、s、v時(shí)分別指示農(nóng)夫獨(dú)自,帶狐貍,帶小羊,帶菜過(guò)河;狀態(tài)空間圖如下所示.由于Lx和Rx是互逆操作,故而解答路徑可有無(wú)數(shù)條,但最近的只有二條;都是7個(gè)操作步.2023/9/2232解析:四元組(m、f、s、v)代表(農(nóng)夫、狐貍、小羊、菜)2023/9/2233狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示(3)狀態(tài)空間的搜索狀態(tài)空間的搜索記為SE,可表示為五元組:SE=(S,O,E,I,G);E——搜索引擎;I——問(wèn)題的初始狀態(tài),I∈S;G——問(wèn)題的目標(biāo)狀態(tài)集合,G
S。搜索引擎E——可以設(shè)計(jì)為實(shí)現(xiàn)任何搜索算法的控制系統(tǒng)?;舅枷搿ㄟ^(guò)搜索引擎E尋找一個(gè)操作算子的調(diào)用序列,使問(wèn)題從初始狀態(tài)I變遷到目標(biāo)狀態(tài)G之一。解答路徑——初-目變遷過(guò)程中的狀態(tài)序列或相應(yīng)的操作算子調(diào)用序列。2023/9/2234狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示或圖(一般圖)一個(gè)狀態(tài)可以有多個(gè)可供選擇的操作算子;操作算子間的選擇是一種“或”的關(guān)系;這樣的有向圖稱(chēng)為或圖。2023/9/2235狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示(3)狀態(tài)空間的搜索或圖(一般圖)一個(gè)狀態(tài)可以有多個(gè)可供選擇的操作算子;操作算子間的選擇是一種“或”的關(guān)系,這樣的有向圖稱(chēng)為或圖。狀態(tài)空間一般都表示為或圖(一般圖)搜索圖——在搜索解答路徑的過(guò)程中畫(huà)出搜索時(shí)涉及到的節(jié)點(diǎn)和弧線,構(gòu)成所謂的搜索圖。狀態(tài)空間搜索一般圖搜索2023/9/2236狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示(3)狀態(tài)空間的搜索狀態(tài)空間、搜索圖和解答路徑之間的關(guān)系S0Sg2023/9/2237狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示(4)一般圖搜索例子——八數(shù)碼游戲
求解的問(wèn)題:給定初始布局(即初始狀態(tài))和目標(biāo)布局(即目標(biāo)狀態(tài)),如何移動(dòng)數(shù)碼才能從初始布局到達(dá)目標(biāo)布局?解答就是一個(gè)合法的棋牌走步序列。初始布局目標(biāo)布局移動(dòng)數(shù)碼2023/9/2238狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示(4)一般圖搜索例子——八數(shù)碼游戲
用一般圖搜索方法解決該問(wèn)題的步驟:1、為問(wèn)題狀態(tài)的表示建立數(shù)據(jù)結(jié)構(gòu)2、制定操作算子集合3、設(shè)計(jì)搜索引擎第一步:為問(wèn)題狀態(tài)的表示建立數(shù)據(jù)結(jié)構(gòu)3×3的一個(gè)矩陣S矩陣元素Sij∈{0,1,2,3,4,5,6,7,8},其中1≤i,j≤3數(shù)字0表示空格數(shù)字1-8表示相應(yīng)的棋牌八數(shù)碼問(wèn)題就可表示為:2023/9/2239狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示初始布局目標(biāo)布局移動(dòng)數(shù)碼(4)一般圖搜索例子——八數(shù)碼游戲
2023/9/2240狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示(4)一般圖搜索例子——八數(shù)碼游戲
第二步:制定操作算子集直觀方法——為每個(gè)棋牌制定一套可能的走步:左、上、右、下四種移動(dòng)。需要32個(gè)操作算子簡(jiǎn)易方法——僅為空格制定這4種走步。僅需4個(gè)操作算子第三步:設(shè)計(jì)搜索引擎
問(wèn)題狀態(tài)空間的大小與問(wèn)題涉及的元素個(gè)數(shù)是程指數(shù)級(jí)爆炸式增長(zhǎng)(即,組合爆炸問(wèn)題)如,棋盤(pán)布局(問(wèn)題狀態(tài))總共有9!=362880個(gè)研究焦點(diǎn)是解決組合爆炸問(wèn)題,通過(guò)壓縮搜索空間,提高搜索效率。2023/9/2241狀態(tài)空間搜索
——1.狀態(tài)空間及其搜索的表示狀態(tài)空間、搜索圖和解答路徑之間的關(guān)系S0Sg2023/9/2242狀態(tài)空間搜索
——2.一般圖搜索策略
(1)搜索術(shù)語(yǔ)★1、節(jié)點(diǎn)深度根節(jié)點(diǎn)指示初始狀態(tài),令其深度為0;搜索圖中的其他節(jié)點(diǎn)的深度dn就可以遞歸地定義為其父節(jié)點(diǎn)深度dn-1加1:dn=dn-1+1。
根節(jié)點(diǎn)深度=0第n-1層節(jié)點(diǎn)dn-1第n層節(jié)點(diǎn)dn=
dn-1+1搜索圖2023/9/2243狀態(tài)空間搜索
——2.一般圖搜索策略
(1)搜索術(shù)語(yǔ)★2、節(jié)點(diǎn)擴(kuò)展應(yīng)用操作算子將上一狀態(tài)(節(jié)點(diǎn)ni)變遷到下一狀態(tài)(節(jié)點(diǎn)nj)節(jié)點(diǎn)ni稱(chēng)為被擴(kuò)展節(jié)點(diǎn)(父節(jié)點(diǎn))節(jié)點(diǎn)nj稱(chēng)為ni的子節(jié)點(diǎn)節(jié)點(diǎn)ni節(jié)點(diǎn)nj2023/9/2244(1)搜索術(shù)語(yǔ)★3、路徑節(jié)點(diǎn)ni到nj的路徑是由相鄰節(jié)點(diǎn)間的弧線構(gòu)成的折線要求路徑是無(wú)環(huán)的4、路徑代價(jià)——相鄰節(jié)點(diǎn)ni和ni+1間的路徑代價(jià)記為C(ni,ni+1)通常令任意相鄰節(jié)點(diǎn)間的路徑代價(jià)相同,并以路徑長(zhǎng)度1指示。即C(ni,ni+1)=1。狀態(tài)空間搜索
——2.一般圖搜索策略節(jié)點(diǎn)ni節(jié)點(diǎn)ni+1節(jié)點(diǎn)nj2023/9/2245狀態(tài)空間搜索
——2.一般圖搜索策略
(1)搜索術(shù)語(yǔ)★4、路徑代價(jià)目標(biāo)狀態(tài)節(jié)點(diǎn)ng節(jié)點(diǎn)ni節(jié)點(diǎn)nkC(nk,ng)
C(ni,nk)
C(ni,ng)
2023/9/2246狀態(tài)空間搜索
——2.一般圖搜索策略(2)一般圖搜索算法★符號(hào)說(shuō)明:s-初始狀態(tài)節(jié)點(diǎn)G-搜索圖OPEN-存放待擴(kuò)展節(jié)點(diǎn)的表CLOSE-存放已被擴(kuò)展的節(jié)點(diǎn)的表MOVE-FIRST(OPEN)-取OPEN表首的節(jié)點(diǎn)作為當(dāng)前要被擴(kuò)展的節(jié)點(diǎn)n,同時(shí)將節(jié)點(diǎn)n移至CLOSE表一般圖搜索算法劃分為二個(gè)階段:1、初始化
2、搜索循環(huán)
2023/9/2247狀態(tài)空間搜索
——2.一般圖搜索策略(2)一般圖搜索算法★算法劃分為二個(gè)階段:1、初始化建立只包含初始狀態(tài)節(jié)點(diǎn)s的搜索圖G:={s}OPEN:={s}CLOSE:={}2、搜索循環(huán)MOVE-FIRST(OPEN)-取出OPEN表首的節(jié)點(diǎn)n作為擴(kuò)展的節(jié)點(diǎn),同時(shí)將其移到close表擴(kuò)展出n的子節(jié)點(diǎn),插入搜索圖G和OPEN表適當(dāng)?shù)臉?biāo)記和修改指針排序OPEN表通過(guò)循環(huán)地執(zhí)行該算法,搜索圖G會(huì)因不斷有新節(jié)點(diǎn)加入而逐步長(zhǎng)大,直到搜索到目標(biāo)節(jié)點(diǎn)。2023/9/2248以下面的八數(shù)碼為例,看一般圖的搜索算法初始布局目標(biāo)布局移動(dòng)數(shù)碼狀態(tài)空間搜索
——2.一般圖搜索策略2023/9/22492023/9/22502023/9/22512023/9/22522023/9/22532023/9/22542023/9/22552023/9/22562023/9/22572023/9/22582023/9/22592023/9/22602023/9/22612023/9/22622023/9/22632023/9/22642023/9/22652023/9/22662023/9/22672023/9/2268狀態(tài)空間搜索
——2.一般圖搜索策略(2)一般圖搜索算法——搜索過(guò)程中的指針修改★節(jié)點(diǎn)n擴(kuò)展后的子節(jié)點(diǎn)分為3類(lèi):(i)全新節(jié)點(diǎn)(ii)已出現(xiàn)在OPEN表中的節(jié)點(diǎn)(iii)已出現(xiàn)的CLOSE表中的節(jié)點(diǎn)指針標(biāo)記和修改的方法:(i)類(lèi)節(jié)點(diǎn):加入OPEN表,建立從子節(jié)點(diǎn)到父節(jié)點(diǎn)n的指針(ii)類(lèi)節(jié)點(diǎn)、(iii)類(lèi)節(jié)點(diǎn)比較經(jīng)由老父節(jié)點(diǎn)、新父節(jié)點(diǎn)n到達(dá)初始狀態(tài)節(jié)點(diǎn)的路徑代價(jià)
經(jīng)由節(jié)點(diǎn)n的代價(jià)比較小,則移動(dòng)子節(jié)點(diǎn)指向老父節(jié)點(diǎn)的指針,改為指向新父節(jié)點(diǎn)n
(iii)類(lèi)節(jié)點(diǎn)還得從CLOSE表中移出,重新加入OPEN表。2023/9/2269狀態(tài)空間搜索
——2.一般圖搜索策略Sn4ninjn1n2n3n31n32節(jié)點(diǎn)ni是當(dāng)前擴(kuò)展的節(jié)點(diǎn);擴(kuò)展出4個(gè)后續(xù)節(jié)點(diǎn);n1、n2是新節(jié)點(diǎn),只需建立指向父節(jié)點(diǎn)的指針,并加入OPEN表;2023/9/2270狀態(tài)空間搜索
——2.一般圖搜索策略Sn4ninjn1n2n3n31n32n4已經(jīng)存在于OPEN表,并且已有父節(jié)點(diǎn)njn4經(jīng)nj的路徑代價(jià)大取消n4指向nj的指針改為建立n4指向新父節(jié)點(diǎn)ni的指針n3已經(jīng)存在于CLOSE表,并且已有父節(jié)點(diǎn)nj需要做和n4同樣的比較和指針修改工作。并且要重新加入open表。2023/9/22713.3
盲目搜索
提高搜索效率的關(guān)鍵——優(yōu)化OPEN表中節(jié)點(diǎn)的排序方式。簡(jiǎn)單的排序策略——按預(yù)先確定的順序或隨機(jī)地排序新加入到OPEN表中的節(jié)點(diǎn)。
常用的簡(jiǎn)單方式:
寬度優(yōu)先——擴(kuò)展當(dāng)前節(jié)點(diǎn)后生成的子節(jié)點(diǎn)總是置于OPEN表的后端,即OPEN表作為隊(duì)列使用,先進(jìn)先出,使搜索優(yōu)先向橫廣方向發(fā)展。
深度優(yōu)先——擴(kuò)展當(dāng)前節(jié)點(diǎn)后生成的子節(jié)點(diǎn)總是置于OPEN表的前端,即OPEN表作為棧使用,后進(jìn)先出,使搜索優(yōu)先向縱深方向發(fā)展。2023/9/2272寬度優(yōu)先寬度優(yōu)先——擴(kuò)展當(dāng)前節(jié)點(diǎn)后生成的子節(jié)點(diǎn)總是置于OPEN表的后端,即OPEN表作為隊(duì)列,先進(jìn)先出,使搜索優(yōu)先向橫向方向發(fā)展。過(guò)程:指從初始節(jié)點(diǎn)S0開(kāi)始,向下逐層搜索,在n層節(jié)點(diǎn)未搜索完之前,不進(jìn)入n+1層搜索。同層節(jié)點(diǎn)的搜索次序可以任意。即先按生成規(guī)則生成第一層節(jié)點(diǎn),在該層全部節(jié)點(diǎn)中沿寬(廣)度進(jìn)行橫向掃描,檢查目標(biāo)節(jié)點(diǎn)Sg是否在這些子節(jié)點(diǎn)中。若沒(méi)有,則再將所有笫一層節(jié)點(diǎn)逐一擴(kuò)展,得到第二層節(jié)點(diǎn)。并逐一檢查第二層節(jié)點(diǎn)中是否包含有Sg,如此依次按照先生成、先檢查、先擴(kuò)展的原則進(jìn)行下去,直到發(fā)現(xiàn)Sg為止
2023/9/2273寬度優(yōu)先實(shí)例23184765283147652318476523184765283147652831647528314765283164752831647528371465832147652814376528314576123784651238476512567312384765目標(biāo)8234187654910111213141516172023/9/2274寬度優(yōu)先搜索
如果搜索是以接近起始節(jié)點(diǎn)的程度依次擴(kuò)展節(jié)點(diǎn)的,那么這種搜索就叫做寬度優(yōu)先搜索。這種搜索是逐層進(jìn)行的,在對(duì)下一層的任意節(jié)點(diǎn)進(jìn)行搜索之前,必須搜索完本層的所有節(jié)點(diǎn)?!跋犬a(chǎn)生的節(jié)點(diǎn)先擴(kuò)展”2023/9/2275(1)把初始節(jié)點(diǎn)S0,放入OPEN表。
(2)如果OPEN表為空。則問(wèn)題無(wú)解,失敗并退出。
(3)把OPEN表中的第一個(gè)節(jié)點(diǎn)取出放入CLOSE表中,并按順序冠以編號(hào)n;
(4)考察節(jié)點(diǎn)n是否為目標(biāo)節(jié)點(diǎn)。若是,則求得了問(wèn)題的解,成功并退出。
(5)若節(jié)點(diǎn)n不可擴(kuò)展,則轉(zhuǎn)第(2)步;
(6)擴(kuò)展節(jié)點(diǎn)n,將其子節(jié)點(diǎn)放到OPEN表的尾部,并為每一個(gè)子節(jié)點(diǎn)都配置指向父節(jié)點(diǎn)的指針,然后轉(zhuǎn)第(2)步。采用隊(duì)列結(jié)構(gòu),寬度優(yōu)先算法可以表示如下:2023/9/2276
例通過(guò)挪動(dòng)積木塊,希望從初始狀態(tài)達(dá)到一個(gè)目的狀態(tài),即三塊積木堆疊在一起。積木A在頂部,積木B在頂中間,積木C在底部。請(qǐng)畫(huà)出按照寬度優(yōu)先搜索策略所產(chǎn)生的搜索樹(shù)。這個(gè)問(wèn)題的唯一操作算子為MOVE(X,Y),即積木X搬到Y(jié)(積木或桌面)上面。如“挪動(dòng)積木A到桌面上表示為MOVE(A,Table)。該操作算子可運(yùn)用的先決條件是:(1)被挪動(dòng)積木的頂部必須為空。(2)如Y是積木(不是桌面),則積木Y的頂部也必須為空。(3)同一狀態(tài)下,運(yùn)用操作算子的次數(shù)不得多于一次。2023/9/2277積木問(wèn)題的寬度優(yōu)先搜索樹(shù)
2023/9/2278寬度優(yōu)先搜索的性質(zhì)當(dāng)問(wèn)題有解時(shí),一定能找到解(完備性)當(dāng)問(wèn)題為單位代價(jià)時(shí),且問(wèn)題有解時(shí),一定能找到最優(yōu)解(最優(yōu)性)方法與問(wèn)題無(wú)關(guān),具有通用性效率較低屬于圖搜索方法2023/9/2279寬度優(yōu)先搜索是一種盲目搜索,時(shí)間和空間復(fù)雜度都比較高,當(dāng)目標(biāo)節(jié)點(diǎn)距離初始節(jié)點(diǎn)較遠(yuǎn)時(shí)會(huì)產(chǎn)生許多無(wú)用的節(jié)點(diǎn),搜索效率低。寬度優(yōu)先搜索中,時(shí)間需求是一個(gè)很大的問(wèn)題,特別是當(dāng)搜索的深度比較大時(shí),尤為嚴(yán)重,但是空間需求是比執(zhí)行時(shí)間更嚴(yán)重的問(wèn)題。
寬度優(yōu)先搜索優(yōu)點(diǎn):目標(biāo)節(jié)點(diǎn)如果存在,用寬度優(yōu)先搜索算法總可以找到該目標(biāo)節(jié)點(diǎn),而且是最?。醋疃搪窂剑┑墓?jié)點(diǎn)。寬度優(yōu)先搜索的優(yōu)點(diǎn)和缺點(diǎn)2023/9/2280深度優(yōu)先深度優(yōu)先——擴(kuò)展當(dāng)前節(jié)點(diǎn)后生成的子節(jié)點(diǎn)總是置于OPEN表的前端,即OPEN表作為棧,后進(jìn)先出,使搜索優(yōu)先向縱深方向發(fā)展。過(guò)程:從初始節(jié)點(diǎn)S0開(kāi)始,按生成規(guī)則生成下一級(jí)各子節(jié)點(diǎn),檢查是否出現(xiàn)目標(biāo)節(jié)點(diǎn)Sg;若未出現(xiàn),則按“最晚生成的子節(jié)點(diǎn)優(yōu)先擴(kuò)展”的原則,再用生成規(guī)則生成再下一級(jí)的子節(jié)點(diǎn),再檢查是否出現(xiàn)Sg;若仍未出現(xiàn),則再擴(kuò)展最晚生成的子節(jié)點(diǎn)。如此下去,沿著最晚生成的子節(jié)點(diǎn)分枝,逐級(jí)“縱向”深入搜索。
2023/9/2281深度優(yōu)先實(shí)例231847652318476528314765231847652831476528316475283147652831647528316475283714658321476528143765283145761237846512384765283641752831675483214765283714652814376528314576123468911131416181912384765目標(biāo)571012151720212023/9/2282深度優(yōu)先搜索在深度優(yōu)先搜索中,首先擴(kuò)展最新產(chǎn)生的(最深的)節(jié)點(diǎn),深度相等的節(jié)點(diǎn)可以任意排列?!白钔懋a(chǎn)生的節(jié)點(diǎn)最先擴(kuò)展”起始節(jié)點(diǎn)深度為0任何其他節(jié)點(diǎn)的深度等于其父輩節(jié)點(diǎn)深度加上1
:dn=dn-1+12023/9/2283深度優(yōu)先搜索很明顯這樣做,不一定找到最佳解,而且由于深度的限制,可能找不到解,然而,若不加深度限制,可能沿著一條路線無(wú)限制地?cái)U(kuò)展下去,這當(dāng)然是不允許的。為保證找到解,應(yīng)選擇適當(dāng)?shù)纳疃冉缦蓿蛘卟扇〔粩嗉哟笊疃冉缦薜霓k法,反復(fù)搜索,直到找到解。這種改進(jìn)的方法叫做迭代加深搜索。2023/9/2284(1)把初始節(jié)點(diǎn)S0放入OPEN表;
(2)如果OPEN表為空,則問(wèn)題無(wú)解,失敗并退出。
(3)把OPEN表中的第一個(gè)節(jié)點(diǎn)取出放入CLOSE表中,并按順序冠以編號(hào)n;
(4)考察節(jié)點(diǎn)n是否為目標(biāo)節(jié)點(diǎn)。若是,則求得了問(wèn)題的解,成功并退出。
(5)若節(jié)點(diǎn)n不可擴(kuò)展,則轉(zhuǎn)第(2)步;
(6)擴(kuò)展節(jié)點(diǎn)n,將其子節(jié)點(diǎn)放到OPEN表的首部,并為其配置指向父節(jié)點(diǎn)的指針,然后轉(zhuǎn)第(2)步?;跅?shí)現(xiàn)的深度優(yōu)先搜索算法:2023/9/2285
例卒子穿陣問(wèn)題:要求一卒子從頂部通過(guò)圖所示的列陣到達(dá)底部。要求卒子行進(jìn)中不可進(jìn)入到代表敵兵駐守的區(qū)域內(nèi)(標(biāo)注1),并不準(zhǔn)后退。假定限制值為5。請(qǐng)畫(huà)出按照深度優(yōu)先搜索策略所產(chǎn)生的搜索樹(shù)2023/9/2286卒子穿陣的深度優(yōu)先搜索樹(shù)2023/9/2287深度優(yōu)先搜索的性質(zhì)一般不能保證找到最優(yōu)解當(dāng)深度限制不合理時(shí),可能找不到解,可以將算法改為可變深度限制最壞情況時(shí),搜索空間等同于窮舉是一個(gè)通用的與問(wèn)題無(wú)關(guān)的方法2023/9/2288深度優(yōu)先搜索的優(yōu)點(diǎn)是比寬度優(yōu)先搜索算法需要較少的空間,該算法只需要保存搜索樹(shù)的一部分,它由當(dāng)前正在搜索的路徑和該路徑上還沒(méi)有完全展開(kāi)的節(jié)點(diǎn)標(biāo)志所組成。深度優(yōu)先搜索的存儲(chǔ)器要求是深度約束的線性函數(shù)。深度優(yōu)先搜索的優(yōu)點(diǎn)2023/9/2289深度優(yōu)先搜索的缺點(diǎn)
既不是完備的,也不是最優(yōu)的。主要問(wèn)題是可能搜索到了錯(cuò)誤的路徑上。很多問(wèn)題可能具有很深甚至是無(wú)限的搜索樹(shù),如果不幸選擇了一個(gè)錯(cuò)誤的路徑,則深度優(yōu)先搜索會(huì)一直搜索下去,而不會(huì)回到正確的路徑上。這樣一來(lái)對(duì)于這些問(wèn)題,深度優(yōu)先搜索要么陷入無(wú)限的循環(huán)而不能給出一個(gè)答案,要么最后找到一個(gè)答案,但路徑很長(zhǎng)而且不是最優(yōu)的答案。2023/9/2290比較
適用場(chǎng)合
深度優(yōu)先——當(dāng)一個(gè)問(wèn)題有多個(gè)解答或多條解答路徑,且只須找到其中一個(gè)時(shí);往往應(yīng)對(duì)搜索深度加以限制。
寬度優(yōu)先——確保搜索到最短的解答路徑。共同優(yōu)缺點(diǎn):
可直接應(yīng)用一般圖搜索算法實(shí)現(xiàn),不需要設(shè)計(jì)特別的節(jié)點(diǎn)排序方法,從而簡(jiǎn)單易行,適合于許多復(fù)雜度不高的問(wèn)題求解任務(wù)。
節(jié)點(diǎn)排序的盲目性,由于不采用領(lǐng)域?qū)iT(mén)知識(shí)去指導(dǎo)排序,往往會(huì)在白白搜索了大量無(wú)關(guān)的狀態(tài)節(jié)點(diǎn)后才碰到解答,所以也稱(chēng)為盲目搜索。
2023/9/2291有界深度搜索和迭代加深搜索
有界深度優(yōu)先搜索過(guò)程總體上按深度優(yōu)先算法方法進(jìn)行,但對(duì)搜索深度需要給出一個(gè)深度限制dm,當(dāng)深度達(dá)到了dm的時(shí)候,如果還沒(méi)有找到解答,就停止對(duì)該分支的搜索,換到另外一個(gè)分支進(jìn)行搜索。2023/9/2292(1)把初始節(jié)點(diǎn)S0放入OPEN表中,置S0的深度d(S0)=0。
(2)如果OPEN表為空,則問(wèn)題無(wú)解,失敗并退出。
(3)把OPEN表中的第一個(gè)節(jié)點(diǎn)取出放入CLOSE表中。并按順序冠以編號(hào)n。(4)考察節(jié)點(diǎn)n是否為目標(biāo)節(jié)點(diǎn)。若是,則求得了問(wèn)題的解,成功并退出。
(5)如果節(jié)點(diǎn)n的深度d(n)=dm,則轉(zhuǎn)第(2)步。
(6)如果節(jié)點(diǎn)n不可擴(kuò)展,則轉(zhuǎn)第(2)步。
(7)擴(kuò)展節(jié)點(diǎn)n。將其子節(jié)點(diǎn)放入OPEN表的首部,并為其配置指向父節(jié)點(diǎn)的指針。然后轉(zhuǎn)第(2)步。有界深度搜索算法2023/9/2293策略說(shuō)明:(1)深度限制dm很重要。當(dāng)問(wèn)題有解,且解的路徑長(zhǎng)度小于或等于dm時(shí),則搜索過(guò)程一定能夠找到解,但是和深度優(yōu)先搜索一樣這并不能保證最先找到的是最優(yōu)解。但是當(dāng)dm取得太小,解的路徑長(zhǎng)度大于dm時(shí),則搜索過(guò)程中就找不到解,即這時(shí)搜索過(guò)程甚至是不完備的。2023/9/2294(2)深度限制dm不能太大。當(dāng)dm太大時(shí),搜索過(guò)程會(huì)產(chǎn)生過(guò)多的無(wú)用節(jié)點(diǎn),既浪費(fèi)了計(jì)算機(jī)資源,又降低了搜索效率。(3)有界深度搜索的主要問(wèn)題是深度限制值dm的選取。2023/9/2295改進(jìn)方法:(迭代加深搜索)先任意給定一個(gè)較小的數(shù)作為dm,然后按有界深度算法搜索,若在此深度限制內(nèi)找到了解,則算法結(jié)束;如在此限制內(nèi)沒(méi)有找到問(wèn)題的解,則增大深度限制dm,繼續(xù)搜索。2023/9/2296迭代加深搜索,試圖嘗試所有可能的深度限制:首先深度為0,然后深度為1,然后為2,等等。如果初始深度為0,則該算法只生成根節(jié)點(diǎn),并檢測(cè)它。如果根節(jié)點(diǎn)不是目標(biāo),則深度加1,通過(guò)典型的深度優(yōu)先算法,生成深度為1的樹(shù)。當(dāng)深度限制為m時(shí),樹(shù)的深度為m。2023/9/2297迭代加深搜索看起來(lái)會(huì)很浪費(fèi),因?yàn)楹芏喙?jié)點(diǎn)都可能擴(kuò)展多次。然而對(duì)于很多問(wèn)題,這種多次的擴(kuò)展負(fù)擔(dān)實(shí)際上很小,直覺(jué)上可以想象,如果一棵樹(shù)的分支系數(shù)很大,幾乎所有的節(jié)點(diǎn)都在最底層上,則對(duì)于上面各層節(jié)點(diǎn)擴(kuò)展多次對(duì)整個(gè)系統(tǒng)來(lái)說(shuō)影響不是很大。
2023/9/2298
ProcedureIterative-deepeningBegin (1)設(shè)置當(dāng)前深度限制=1;(2)把初始節(jié)點(diǎn)壓入棧,并設(shè)置棧頂指針;(3)While棧不空并且深度在給定的深度限制之內(nèi)doBegin
彈出棧頂元素;
If棧頂元素=goal,返回并結(jié)束;Else以任意的順序把棧頂元素的子女壓入棧中; EndEndwhild(4)深度限制加1,并返回2;End.迭代加深搜索算法2023/9/2299總結(jié)寬度優(yōu)先搜索、深度優(yōu)先搜索和迭代加深搜索都可以用于生成和測(cè)試算法。寬度優(yōu)先搜索需要指數(shù)數(shù)量的空間,深度優(yōu)先搜索的空間復(fù)雜度和最大搜索深度呈線性關(guān)系。2023/9/22100迭代加深搜索對(duì)一棵深度受控的樹(shù)采用深度優(yōu)先的搜索。它結(jié)合了寬度優(yōu)先和深度優(yōu)先搜索的優(yōu)點(diǎn)。和寬度優(yōu)先搜索一樣,它是最優(yōu)的,也是完備的。但對(duì)空間要求和深度優(yōu)先搜索一樣是適中的。2023/9/22101搜索最優(yōu)策略的比較表注:b是分支系數(shù),d是解答的深度,m是搜索樹(shù)的最大深度,l是深度限制。2023/9/221023.4啟發(fā)式搜索★一般圖搜索算法常用的簡(jiǎn)單方式:深度優(yōu)先寬度優(yōu)先【缺點(diǎn):節(jié)點(diǎn)排序的盲目性】在白白搜索了大量無(wú)關(guān)的狀態(tài)節(jié)點(diǎn)后才碰到解答,效率低提高一般圖搜索效率的關(guān)鍵★優(yōu)化OPEN表中節(jié)點(diǎn)的排序方式盲目搜索2023/9/22103125634最理想情況:每次排序后OPEN表表首元素n總在解答路徑上2023/9/22104啟發(fā)式搜索啟發(fā)式知識(shí)指導(dǎo)OPEN表排序的一般圖搜索:全局排序——對(duì)OPEN表中的所有節(jié)點(diǎn)排序,使最有希望的節(jié)點(diǎn)排在表首。A算法,A*算法(重點(diǎn)掌握!)局部排序——僅對(duì)新擴(kuò)展出來(lái)的子節(jié)點(diǎn)排序,使這些新節(jié)點(diǎn)中最有希望者能優(yōu)先取出考察和擴(kuò)展;爬山法(了解,對(duì)深度優(yōu)先法的改進(jìn));2023/9/22105啟發(fā)式搜索
——1.A算法(掌握)【基本思想】設(shè)計(jì)體現(xiàn)啟發(fā)式知識(shí)的評(píng)價(jià)函數(shù)f(n);指導(dǎo)一般圖搜索中OPEN表待擴(kuò)展節(jié)點(diǎn)的排序:【評(píng)價(jià)函數(shù)f(n)=g(n)+h(n)】★n-搜索圖G中的節(jié)點(diǎn);f(n)-G中從初始狀態(tài)節(jié)點(diǎn)s,經(jīng)由節(jié)點(diǎn)n到達(dá)目標(biāo)節(jié)點(diǎn)ng,估計(jì)的最小路徑代價(jià);g(n)-G中從s到n,目前實(shí)際的路徑代價(jià);h(n)-從n到ng,估計(jì)的最小路徑代價(jià);2023/9/22106啟發(fā)式搜索
——1.A算法(掌握)Snng目標(biāo)狀態(tài)節(jié)點(diǎn)ng初始狀態(tài)節(jié)點(diǎn)S節(jié)點(diǎn)n搜索圖Gh(n):
n-ng的估計(jì)最小路徑代價(jià)
g(n):s-n的實(shí)際路徑代價(jià)
f(n):s-n-ng的估計(jì)最小路徑代價(jià)
2023/9/22107啟發(fā)式搜索
——1.A算法(掌握)【評(píng)價(jià)函數(shù)f(n)=g(n)+h(n)】n-搜索圖G中的節(jié)點(diǎn);f(n)-G中從s經(jīng)n到ng,估計(jì)的最小路徑代價(jià);g(n)-G中從s到n,目前實(shí)際的路徑代價(jià);h(n)-從n到ng,估計(jì)的最小路徑代價(jià);
h(n)值-依賴于啟發(fā)式知識(shí)加以計(jì)算;h(n)稱(chēng)為啟發(fā)式函數(shù)★
。如何用評(píng)價(jià)函數(shù)來(lái)實(shí)現(xiàn)A算法?(掌握?。?023/9/22108啟發(fā)式搜索
——1.A算法(掌握)A算法的設(shè)計(jì)與一般圖搜索相同,劃分為二個(gè)階段★:1、初始化建立只包含初始狀態(tài)節(jié)點(diǎn)s的搜索圖G:={s}OPEN:={s}CLOSE:={}2、搜索循環(huán)MOVE-FIRST(OPEN)-取出OPEN表首的節(jié)點(diǎn)n
⑥擴(kuò)展出n的子節(jié)點(diǎn),插入搜索圖G和OPEN表⑦適當(dāng)?shù)臉?biāo)記和修改指針(子節(jié)點(diǎn)父節(jié)點(diǎn))⑧排序OPEN表(評(píng)價(jià)函數(shù)f(n)的值排序)通過(guò)循環(huán)地執(zhí)行該算法,搜索圖會(huì)因不斷有新節(jié)點(diǎn)加入而逐步長(zhǎng)大,直到搜索到目標(biāo)節(jié)點(diǎn)。2023/9/22109啟發(fā)式搜索
——1.A算法(掌握)算法A的設(shè)計(jì)與一般圖搜索類(lèi)似,劃分為二個(gè)階段★:1、初始化2、搜索循環(huán)MOVE-FIRST(OPEN)-取出OPEN表首的節(jié)點(diǎn)n
⑥擴(kuò)展出n的子節(jié)點(diǎn),插入搜索圖G和OPEN表對(duì)每個(gè)子節(jié)點(diǎn)ni,計(jì)算f(n,ni)=g(n,ni)+h(ni)⑦適當(dāng)?shù)臉?biāo)記和修改指針(子節(jié)點(diǎn)父節(jié)點(diǎn))⑧排序OPEN表(評(píng)價(jià)函數(shù)f(n)的值排序)2023/9/22110啟發(fā)式搜索
——1.A算法(掌握)⑥擴(kuò)展出n的子節(jié)點(diǎn),插入搜索圖G和OPEN表對(duì)每個(gè)子節(jié)點(diǎn)ni,計(jì)算f(n,ni)=g(n,ni)+h(ni)⑦適當(dāng)?shù)臉?biāo)記和修改指針(子節(jié)點(diǎn)父節(jié)點(diǎn))(i)全新節(jié)點(diǎn):f(ni)=f(n,ni)(ii)已出現(xiàn)在OPEN表中的節(jié)點(diǎn)(iii)已出現(xiàn)的CLOSE表中的節(jié)點(diǎn)IF
f(ni)>f(n,ni)
THEN
修改指針指向新父結(jié)點(diǎn)n
f(ni)=f(n,ni)⑧排序OPEN表(f(n)值從小到大排序)2023/9/221112.若OPEN表是空表,則失敗退出;算法A3.選擇OPEN表上的第一個(gè)節(jié)點(diǎn),把它從OPEN表移出并放進(jìn)CLOSE表中,稱(chēng)此節(jié)點(diǎn)為節(jié)點(diǎn)n;
1.建立一個(gè)只包含起始節(jié)點(diǎn)S的搜索圖G,把S放到一個(gè)叫OPEN的未擴(kuò)展節(jié)點(diǎn)表中;建立一個(gè)叫做CLOSE的已擴(kuò)展節(jié)點(diǎn)表,其初始為空表;5.擴(kuò)展節(jié)點(diǎn)n,同時(shí)生成不是n的祖先的那些子節(jié)點(diǎn)的集合M,把M的這些成員作為n的后繼節(jié)點(diǎn)添入圖G中;對(duì)于M中每個(gè)子節(jié)點(diǎn)ni,計(jì)算f(n,ni)=g(n,ni)+h(ni);4.若n為一目標(biāo)節(jié)點(diǎn),則有解成功退出,此解是追蹤圖G中沿著指針從n到S這條路徑而得到的;2023/9/221126.對(duì)那些未曾在G中出現(xiàn)過(guò)的M成員(全新結(jié)點(diǎn))設(shè)置一個(gè)通向n的指針。把M的這些成員加進(jìn)OPEN表。對(duì)已經(jīng)在OPEN表上的每一個(gè)M成員,比較子節(jié)點(diǎn)ni經(jīng)由新、老父節(jié)點(diǎn)的評(píng)價(jià)函數(shù)值f(n,ni)、f(ni);若f(n,ni)<f(ni)點(diǎn),則令f(ni)=f(n,ni),并移動(dòng)子節(jié)點(diǎn)指向老父節(jié)點(diǎn)的指針,改為指向新父節(jié)點(diǎn)。對(duì)已在CLOSE表上的每個(gè)M成員,作與第2類(lèi)同樣的處理,并把這些子結(jié)點(diǎn)從CLOSE表移出,重新加入OPEN表。7.按f(n)排序OPEN表中的節(jié)點(diǎn),f(n)值最小者排在首位,重排OPEN表;8.轉(zhuǎn)2。此過(guò)程生成一個(gè)明確的圖G(搜索圖)和一個(gè)G的子集T(搜索樹(shù))。2023/9/22113啟發(fā)式搜索
——1.A算法(掌握)A算法實(shí)例——八數(shù)碼游戲1)設(shè)計(jì)評(píng)價(jià)函數(shù)f(n)f(n)=d(n)+w(n),其中d(n)-節(jié)點(diǎn)n在搜索圖中的節(jié)點(diǎn)深度,對(duì)g(n)的度量;w(n)-代表啟發(fā)式函數(shù)h(n),其值是節(jié)點(diǎn)n與目標(biāo)狀態(tài)節(jié)點(diǎn)ng相比較,不考慮空格,錯(cuò)位的棋牌個(gè)數(shù);初始布局目標(biāo)布局移動(dòng)數(shù)碼2023/9/22114啟發(fā)式搜索
——1.A算法(掌握)啟發(fā)式算法A實(shí)例——八數(shù)碼游戲1)設(shè)計(jì)評(píng)價(jià)函數(shù)f(n)f(n)計(jì)算實(shí)例初始布局s目標(biāo)布局ngw(s):錯(cuò)位的棋牌個(gè)數(shù)d(s):當(dāng)前節(jié)點(diǎn)深度
f(s)h(n):n-ng的最小路徑代價(jià)g(n):s-n的最小路徑代價(jià)
f(n):s-n-ng的最小路徑代價(jià)
注:W(S)不考慮空格2023/9/22115狀態(tài)空間搜索
——2.一般圖搜索策略
(1)搜索術(shù)語(yǔ)1、節(jié)點(diǎn)深度根節(jié)點(diǎn)指示初始狀態(tài),令其深度為0;搜索圖中的其他節(jié)點(diǎn)的深度dn就可以遞歸地定義為其父節(jié)點(diǎn)深度dn-1加1:dn=dn-1+1。
根節(jié)點(diǎn)深度=0第n-1層節(jié)點(diǎn)dn-1第n層節(jié)點(diǎn)dn=
dn-1+1搜索圖G2023/9/22116啟發(fā)式搜索
——1.A算法(掌握)啟發(fā)式算法A實(shí)例——八數(shù)碼游戲1)設(shè)計(jì)評(píng)價(jià)函數(shù)f(n)f(n)計(jì)算實(shí)例初始布局s目標(biāo)布局ngw(s):錯(cuò)位的棋牌個(gè)數(shù)d(s):當(dāng)前節(jié)點(diǎn)深度
f(s)h(n):n-ng的最小路徑代價(jià)g(n):s-n的最小路徑代價(jià)
f(n):s-n-ng的最小路徑代價(jià)
0
4
4
注:W(S)不考慮空格2023/9/22117初始化OPEN:={s4}
CLOSE:={}
目標(biāo)布局ng2023/9/22118循環(huán)1CLOSE:={s4}
OPEN:={a
b
c}
OPEN:={a6
b4
c6}
OPEN:={b4
a6
c6}
目標(biāo)布局ng2023/9/22119循環(huán)2CLOSE:={s4
b4}
OPEN:={a6 c6
d
e
i}
OPEN:={a6 c6
d5
e5
i6}
OPEN:={d5
e5 a6 c6
i6}
目標(biāo)布局ng2023/9/22120循環(huán)3CLOSE:={s4 b4
d5}
OPEN:={e5 a6 c6 i6
j
k}
OPEN:={e5 a6 c6 i6
j7
k6}
OPEN:={e5 a6 c6 i6
k6
j7}
目標(biāo)布局ng2023/9/22121循環(huán)4CLOSE:={s4,b4,d5,e5}
OPEN:={a6 c6 i6 k6 j7
l
m}
OPEN:={a6 c6 i6 k6 j7
l5
m7}
OPEN:={l5 a6 c6 i6 k6 j7
m7}
目標(biāo)布局ng2023/9/22122CLOSE:={s4,b4,d5,e5,l5}
循環(huán)5OPEN:={a6 c6 i6 k6 j7 m7
n}
OPEN:={a6 c6 i6 k6 j7 m7
n5}
OPEN:={n5 a6 c6 i6 k6 j7 m7}
目標(biāo)布局ng2023/9/22123循環(huán)6CLOSE:={s4,b4,d5, e5,l5,n5}
OPEN:={a6 c6 i6 k6 j7 m7
o
g}
OPEN:={a6 c6 i6 k6 j7 m7
o7
g5}
OPEN:={g5 a6 c6 i6 k6 j7 m7
o7}
目標(biāo)布局ng2023/9/22124循環(huán)7成功結(jié)束目標(biāo)布局ng2023/9/22125最理想搜索圖G2023/9/22126判斷失誤2023/9/22127
例2
給定4L和3L的水壺各一個(gè),水壺上沒(méi)有刻度,可以向水壺中加水。如何在4L的壺中準(zhǔn)確地得到2L水?
(x,y)——4L壺里的水有xL,3L壺里的水有yL,n表示搜索空間中的任一節(jié)點(diǎn)。則給出下面的啟發(fā)式函數(shù):2023/9/22128h(n)=2
如果0<x<4并且0<y<3
=4 如果0<x<4或者0<y<3
=8 如果x=0并且y=3
或者x=4并且y=0 =10 如果x=0并且y=0
或者x=4并且y=3假定g(n)表示搜索樹(shù)中搜索的深度,則根據(jù)圖搜索策略得下圖的搜索空間。
2023/9/22129水壺問(wèn)題的狀態(tài)空間擴(kuò)展圖在第0步,由節(jié)點(diǎn)O可以得到g+h=10。在第1步,得到兩個(gè)節(jié)點(diǎn)M和N,其估價(jià)函數(shù)值都為1+8=9,因此可以任選一個(gè)節(jié)點(diǎn)擴(kuò)展。2023/9/22130水壺問(wèn)題的狀態(tài)空間擴(kuò)展圖假定選擇了節(jié)點(diǎn)M,在第2步擴(kuò)展M得到兩個(gè)后繼了點(diǎn)P和R,對(duì)于P有2+4=6,對(duì)于R有2+10=12?,F(xiàn)在,在節(jié)點(diǎn)P、R、N中,節(jié)點(diǎn)P具有最小的估價(jià)函數(shù)值,所以選擇節(jié)點(diǎn)P擴(kuò)展。在第3步,可以得到節(jié)點(diǎn)S,其中3+4=7。現(xiàn)在,在節(jié)點(diǎn)S、R、N中,節(jié)點(diǎn)S的估價(jià)函數(shù)值最小,所以下一步就會(huì)選擇S節(jié)點(diǎn)擴(kuò)展。該過(guò)程一直進(jìn)行下去,直到到達(dá)目標(biāo)節(jié)點(diǎn)。
2023/9/22131啟發(fā)式搜索
——2.實(shí)現(xiàn)啟發(fā)式搜索的關(guān)鍵因素(理解)實(shí)現(xiàn)啟發(fā)式搜索應(yīng)考慮的關(guān)鍵因素★:(1)搜索算法的可采納性(Admissibility);(2)啟發(fā)式函數(shù)h(n)的強(qiáng)弱及其影響;2023/9/22132啟發(fā)式搜索
——2.實(shí)現(xiàn)啟發(fā)式搜索的關(guān)鍵因素(1)搜索算法的可采納性(Admissibility)-1968★1)定義在存在從初始狀態(tài)節(jié)點(diǎn)到目標(biāo)狀態(tài)節(jié)點(diǎn)解答路徑的情況下,若一個(gè)搜索法總能找到最短(代價(jià)最?。┑慕獯鹇窂剑瑒t稱(chēng)該狀態(tài)空間中的搜索算法具有可采納性,也叫最優(yōu)性。如,寬度優(yōu)先的搜索算法是可采納的,只是搜索效率不高。2)A算法的可采納性——定義f*(n)=g*(n)+h*(n)n-搜索圖G中最短解答路徑的節(jié)點(diǎn);f*(n)-s經(jīng)節(jié)點(diǎn)n到ng的實(shí)際最短解答路徑的路徑代價(jià);g*(n)-該路徑前段(從s到n)的路徑代價(jià);h*(n)-該路徑后段(從n到ng)的路徑代價(jià);2023/9/22133啟發(fā)式搜索
——2.實(shí)現(xiàn)啟發(fā)式搜索的關(guān)鍵因素(1)搜索算法的可采納性(Admissibility)★3)評(píng)價(jià)函數(shù)f與f*的比較f(n)、g(n)、h(n)分別是f*(n)、g*(n)、h*(n)的近似值(估計(jì)值)理想情況下:若g(n)=g*(n)、h(n)=h*(n),則搜索過(guò)程中,每次都正確選擇,不擴(kuò)展任何無(wú)關(guān)的節(jié)點(diǎn)。實(shí)際情況:設(shè)計(jì)接近f*的f是很困難的在算法執(zhí)行過(guò)程中,g(n)容易從已經(jīng)生成的搜索樹(shù)中計(jì)算出來(lái)Sn搜索圖Gng2023/9/22134啟發(fā)式搜索
——2.實(shí)現(xiàn)啟發(fā)式搜索的關(guān)鍵因素(1)搜索算法的可采納性(Admissibility)★3)評(píng)價(jià)函數(shù)f與f*的比較理想情況下:若g(n)=g*(n)、h(n)=h*(n),不擴(kuò)展無(wú)關(guān)的節(jié)點(diǎn)實(shí)際情況:設(shè)計(jì)接近f*的f是很困難的在算法執(zhí)行過(guò)程中,g(n)容易從已經(jīng)生成的搜索樹(shù)中計(jì)算出來(lái),比如就以節(jié)點(diǎn)深度d(n)當(dāng)做g(n),且有g(shù)(n)>=g*(n)h(n)盡可能靠近h*(n)——A算法的關(guān)鍵。2023/9/22135啟發(fā)式搜索
——2.實(shí)現(xiàn)啟發(fā)式搜索的關(guān)鍵因素(1)搜索算法的可采納性(Admissibility)4)改進(jìn)啟發(fā)式函數(shù)——八數(shù)碼游戲f(n)=d(n)+w(n),其中w(n)-表示錯(cuò)位的棋牌個(gè)數(shù),不夠貼切,錯(cuò)誤的擴(kuò)展了節(jié)點(diǎn)d;p(n)-節(jié)點(diǎn)n與目標(biāo)狀態(tài)節(jié)點(diǎn)比較,錯(cuò)位棋牌在不受阻攔的情況下,移動(dòng)到目標(biāo)狀態(tài)相應(yīng)位置所需走步(移動(dòng)次數(shù))的總和;p(n)比w(n)更接近于h*(n)-p(n)不僅考慮了棋牌的錯(cuò)位因素,還考慮了錯(cuò)位的距離(移動(dòng)距離)2023/9/22136啟發(fā)式搜索
——2.實(shí)現(xiàn)啟發(fā)式搜索的關(guān)鍵因素4)改進(jìn)啟發(fā)式函數(shù)——八數(shù)碼游戲f(s)計(jì)算實(shí)例初始布局s目標(biāo)布局ngw(s):錯(cuò)位的棋牌個(gè)數(shù)d(s):當(dāng)前節(jié)點(diǎn)深度
f(s)0
4
4
p(s):錯(cuò)位棋牌移動(dòng)距離d(s):當(dāng)前節(jié)點(diǎn)深度
f(s)0
5
5
1
1
1
2
2023/9/22137初始化OPEN:={s5}
CLOSE:={}
目標(biāo)布局ng2023/9/22138循環(huán)1CLOSE:={s5}
OPEN:={a
b
c}
OPEN:={a7
b5
c7}
OPEN:={b5 a7 c7}
目標(biāo)布局ng2023/9/22139循環(huán)2CLOSE:={s5
b5}
OPEN:={a7 c7
d
e
i}
OPEN:={a7 c7
d7
e5
i7}
OPEN:={e5 a7 c7
d7
i7}
目標(biāo)布局ng2023/9/22140循環(huán)3CLOSE:={s5 b5
e5}
OPEN:={a7 c7 d7 i7 l m}
OPEN:={a7 c7 d7 i7 l5 m7}
OPEN:={l5 a7 c7 d7 i7 m7}
目標(biāo)布局ng2023/9/22141CLOSE:={s5,b5,e5,l5}
循環(huán)4OPEN:={a7 c7 d7 i7
m7 n}
OPEN:={a7 c7 d7 i7
m7 n5}
OPEN:={n5 a7 c7 d7 i7
m7}
目標(biāo)布局ng2023/9/22142CLOSE:={s5,b5, e5,l5,
n5}
循環(huán)5OPEN:={a7 c7 d7 i7
m7
o g}
OPEN:={a7 c7 d7 i7
m7
o7 g5}
OPEN:={g5 a7 c7 d7 i7
m7
o7}
目標(biāo)布局ng2023/9/22143循環(huán)6成功結(jié)束最理想搜索圖G目標(biāo)布局ng2023/9/22144避免了錯(cuò)誤選擇2023/9/22145啟發(fā)式搜索
——2.實(shí)現(xiàn)啟發(fā)式搜索的關(guān)鍵因素(1)搜索算法的可采納性(Admissibility)5)A*算法定義★:1、在A算法中,規(guī)定h(n)≤h*(n);2、經(jīng)如此限制以后的A算法就是A*算法。A*算法是可采納的,即總能搜索到最短解答路徑【回顧:八數(shù)碼游戲的h(n)】w(n)-錯(cuò)位的棋牌個(gè)數(shù)p(n)-錯(cuò)位棋牌在不受阻攔的情況下,移動(dòng)到目標(biāo)狀態(tài)相應(yīng)位置所需走步(移動(dòng)次數(shù))的總和;上述兩者均是可采納的。(想想為什么)2023/9/22146啟發(fā)式搜索
——2.實(shí)現(xiàn)啟發(fā)式搜索的關(guān)鍵因素(1)搜索算法的可采納性(Admissibility)5)A*算法定義:1、在A算法中,規(guī)定h(n)≤h*(n);2、經(jīng)如此限制以后的A算法就是A*算法。A*算法是可采納的,即總能搜索到最短解答路徑證明:【《人工智能上冊(cè)》陸汝鈐P248】1)如果存在一條從初始狀態(tài)到目標(biāo)狀態(tài)的解答路徑,則一定存在一條最短解答通路;2)設(shè)狀態(tài)n’是最短解答路徑上的一個(gè)狀態(tài),那么經(jīng)過(guò)有限步后,n’必然會(huì)成為OPEN表的第一個(gè)節(jié)點(diǎn);3)因?yàn)樽疃探獯鹇窂街挥杏邢迋€(gè)節(jié)點(diǎn)n’,所以有限步后算法必然因到達(dá)目標(biāo)狀態(tài)ng。這就是最優(yōu)解。證明完畢。2023/9/22147啟發(fā)式搜索
——2.實(shí)現(xiàn)啟發(fā)式搜索的關(guān)鍵因素(1)搜索算法的可采納性(Admissibility)5)滿足可采納性條件的算法——A*算法證明:2)設(shè)狀態(tài)n’是最短解答路徑上的一個(gè)狀態(tài),那么經(jīng)過(guò)有限步后,n’必然會(huì)成為OPEN表的第一個(gè)節(jié)點(diǎn);f(n’)=g(n’)+h(n’)∵根據(jù)假設(shè),n’在最短解答路徑上∴經(jīng)過(guò)有限步驟后,g(n’)=g*(n’)∴f(n’)=g*(n’)+h(n’)∵h(yuǎn)(n)≤h*(n)∴f(n’)=g*(n’)+h(n’)≤g*(n’)+h*(n’)=f*(n’)∵f*(n’)=f*(ng)∴f(n’)≤f*(ng)2023/9/22148啟發(fā)式搜索
——2
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生產(chǎn)流程再造之路
- 色彩魔法課堂
- 碩士之旅:理論探索與實(shí)踐
- 增材制造與創(chuàng)新設(shè)計(jì):從概念到產(chǎn)品 課件 第4、5章 增材制造前處理及工藝規(guī)劃、增材制造后處理及經(jīng)驗(yàn)總結(jié)
- 農(nóng)業(yè)盛季財(cái)務(wù)透析
- 垃圾分類(lèi)你我共建
- 邁向明日啟航夢(mèng)想
- 外匯質(zhì)押合同(2篇)
- 2024深圳二手房購(gòu)房定金及房屋維修保養(yǎng)服務(wù)合同3篇
- 標(biāo)準(zhǔn)格式離婚協(xié)議書(shū)
- 2024年大學(xué)試題(宗教學(xué))-佛教文化筆試考試歷年高頻考點(diǎn)試題摘選含答案
- 七年級(jí)語(yǔ)文下冊(cè)專(zhuān)項(xiàng)練習(xí)知識(shí)(對(duì)聯(lián))
- 三年級(jí)下冊(cè)語(yǔ)文必背古詩(shī)詞
- 老年人譫妄中西醫(yī)結(jié)合診療專(zhuān)家共識(shí)
- 團(tuán)餐食品安全年度匯報(bào)
- 華西解剖學(xué)課件緒論和骨學(xué)總論
- 2024平安保險(xiǎn)測(cè)評(píng)題庫(kù)
- 膀胱癌診斷治療指南
- 窗簾方案模板
- 僵尸企業(yè)注銷(xiāo)工作總結(jié)范文
- 人教版五年級(jí)上冊(cè)數(shù)學(xué)脫式計(jì)算練習(xí)200題及答案
評(píng)論
0/150
提交評(píng)論