下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2020/7/31,1,第3章 搜索策略,問(wèn)題求解系統(tǒng)劃分為兩大類 知識(shí)貧乏系統(tǒng) 依靠搜索技術(shù)解決問(wèn)題 知識(shí)貧乏、缺乏針對(duì)性 效率低 知識(shí)豐富系統(tǒng) 依靠推理技術(shù)解決問(wèn)題 基于豐富知識(shí)的推理技術(shù),直截了當(dāng) 效率高,2020/7/31,2,第3章 搜索策略,兩大類搜索技術(shù): 1、一般圖搜索、啟發(fā)式搜索 2、基于問(wèn)題歸約的與或圖搜索 兩種典型的推理技術(shù): 1、基于歸結(jié)的演繹推理 歸結(jié)反演 2、基于規(guī)則的演繹推理 正向演繹推理 逆向演繹推理,2020/7/31,3,3.1 引言,對(duì)于給定的問(wèn)題,智能系統(tǒng)的行為一般是找到能夠達(dá)到所希望目標(biāo)的動(dòng)作序列,并使其所付出的代價(jià)最小、性能最好。 基于給定的問(wèn)題,問(wèn)
2、題求解的第一步是目標(biāo)的表示。 搜索就是找到智能系統(tǒng)的動(dòng)作序列的過(guò)程。,2020/7/31,4,搜索算法的輸入是給定的問(wèn)題,輸出是表示為動(dòng)作序列的方案。 一旦有了方案,就可以執(zhí)行該方案所給出的動(dòng)作了。(執(zhí)行階段) 因此,求解問(wèn)題包括:,目標(biāo)表示 搜索 執(zhí)行,2020/7/31,5,(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部
3、分組成:,2020/7/31,6,和通常的搜索空間不同,人工智能中大多數(shù)問(wèn)題的狀態(tài)空間在問(wèn)題求解之前不是全部知道的。,在人工智能中,搜索問(wèn)題一般包括兩個(gè)重要的問(wèn)題:,搜索什么 搜索什么通常指的就是目標(biāo)。 在哪里搜索 在哪里搜索就是“搜索空間”。搜索空間通常是指一系列狀態(tài)的匯集,因此稱為狀態(tài)空間。,2020/7/31,7,所以,人工智能中的搜索可以分成兩個(gè)階段: 狀態(tài)空間的生成階段 在該狀態(tài)空間中對(duì)所求問(wèn)題狀態(tài)的搜索,搜索可以根據(jù)是否使用啟發(fā)式信息分為 盲目搜索 啟發(fā)式搜索,2020/7/31,8,盲目搜索 只是可以區(qū)分出哪個(gè)是目標(biāo)狀態(tài)。 一般是按預(yù)定的搜索策略進(jìn)行搜索。 沒(méi)有考慮到問(wèn)題本身的特
4、性,這種搜索具有很大的盲目性,效率不高,不便于復(fù)雜問(wèn)題的求解。,啟發(fā)式搜索 是在搜索過(guò)程中加入了與問(wèn)題有關(guān)的啟發(fā)式信息,用于指導(dǎo)搜索朝著最有希望的方向前進(jìn),加速問(wèn)題的求解并找到最優(yōu)解。,2020/7/31,9,根據(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)行的搜索。,2020/7/31,10,考慮一個(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)搜索遇
5、到一個(gè)死亡節(jié)點(diǎn)(非目標(biāo)節(jié)點(diǎn)并且是無(wú)法擴(kuò)展的節(jié)點(diǎn))的時(shí)候,才返回上一層選擇其他的節(jié)點(diǎn)搜索。,2020/7/31,11,無(wú)論是寬度優(yōu)先搜索還是深度優(yōu)先搜索,遍歷節(jié)點(diǎn)的順序一般都是固定的,即一旦搜索空間給定,節(jié)點(diǎn)遍歷的順序就固定了。這種類型的遍歷稱為“確定性”的,也就是盲目搜索。 對(duì)于啟發(fā)式搜索,在計(jì)算每個(gè)節(jié)點(diǎn)的參數(shù)之前無(wú)法確定先選擇哪個(gè)節(jié)點(diǎn)擴(kuò)展,這種搜索一般也稱為非確定的。,2020/7/31,12,完備性: 如果存在一個(gè)解答,該策略是否保證能夠找到? 時(shí)間復(fù)雜性: 需要多長(zhǎng)時(shí)間可以找到解答? 空間復(fù)雜性: 執(zhí)行搜索需要多少存儲(chǔ)空間? 最優(yōu)性: 如果存在不同的幾個(gè)解答,該策略是否可以發(fā)現(xiàn)最高質(zhì)量的
6、解答?,搜索策略評(píng)價(jià)標(biāo)準(zhǔn):,2020/7/31,13,有許多智力問(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ù),2020/7/31,14,狀態(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)
7、題求解(即搜索)過(guò)程中某一時(shí)刻問(wèn)題現(xiàn)狀的快照; 抽象為矢量形式 Q=q0,q1,qnT 每個(gè)元素qi稱為狀態(tài)分量 給定每個(gè)狀態(tài)分量qi的值就得到一個(gè)具體的狀態(tài) Qk=q0k,q1k,qnkT,2020/7/31,15,狀態(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)空間中搜索解答路徑。,2020/7/31,16,例1:走迷宮是人們熟悉的一種游戲。,狀態(tài)空間搜索,2020/7/31,17,格子、入口和出口節(jié)
8、點(diǎn)狀態(tài) 通道有向弧操作算子 迷宮可以由一個(gè)有向圖表示,2020/7/31,18,例2:在一個(gè)33的方格棋盤(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)題稱為八數(shù)碼問(wèn)題。,2020/7/31,19,2 3 1 8 4 7 6 5,2020/7/31,20,2020/7/31,21,狀態(tài)空間搜索1.狀態(tài)空間及其搜索的表示,(2)狀態(tài)空間表示的經(jīng)典例子“傳教士和野人問(wèn)題” 問(wèn)題的描述: N個(gè)傳教士帶領(lǐng)N個(gè)野人劃船過(guò)河; 3個(gè)安全約
9、束條件: 1)船上人數(shù)不得超過(guò)載重限量,設(shè)為K個(gè)人; 2)任何時(shí)刻(包括兩岸、船上)野人數(shù)目不得超過(guò)傳教士; 3)允許在河的某一岸或者在船上只有野人而沒(méi)有傳教士;,2020/7/31,22,狀態(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且0c N (左岸沒(méi)有傳道士,右岸一定安全); N-m=0且0N-cN (右岸沒(méi)有傳道士,左岸一定安全);,2020
10、/7/31,23,設(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ù):442=32 根據(jù)條件得出合法狀態(tài):20 m c 且 N-m N-c (左岸安全且右岸安全) m=1,c=1;m=2,c=2 m=0且0c N(左岸沒(méi)有傳道士) m=0,c=0,1,2,3 N-m=0且0N-cN(右岸沒(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è),2020
11、/7/31,24,狀態(tài)空間搜索1.狀態(tài)空間及其搜索的表示,(2)狀態(tài)空間表示的經(jīng)典例子“傳教士和野人問(wèn)題” 定義2類操作算子: L(x,y)指示從左岸到右岸的劃船操作 R(x,y)指示從右岸到左岸的劃船操作 x + y K=2(船的載重限制); x和y取值的可能組合只有5個(gè) 10,20,11,01,02 ( 允許在船上只有野人而沒(méi)有傳教士 ) 共有10個(gè)操作算子,2020/7/31,25,渡河問(wèn)題的狀態(tài)空間有向圖,2020/7/31,26,狀態(tài)空間搜索1.狀態(tài)空間及其搜索的表示,由此例可以看出 用狀態(tài)空間方法表示問(wèn)題時(shí),首先必須定義狀態(tài)的描述形式,通過(guò)使用這種描述形式可把問(wèn)題的一切狀態(tài)都表示出
12、來(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)成的序列。,2020/7/31,27,狀態(tài)空間搜索1.狀態(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è)操作
13、使該狀態(tài)變到幾個(gè)不同的后繼狀態(tài)那么到底用哪個(gè)操作進(jìn)行搜索呢?這就有賴于搜索策略了不同的搜索策略有不同的順序,這就是本章后面要討論的問(wèn)題。,2020/7/31,28,課堂練習(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)空間圖。,2020/7/31,29,解析,以變量m、f、s、v分別指示農(nóng)夫、狐貍、小羊、菜,且每個(gè)變量只可取值1(表示在左岸)或0(表示在右岸)。問(wèn)題狀態(tài)可以四元組(m、f、s、v)描述,設(shè)初始狀態(tài)下均在左岸,目標(biāo)
14、狀態(tài)下都到達(dá)右岸。從而,問(wèn)題求解任務(wù)可描述為 (1, 1, 1, 1) -(0, 0, 0, 0) 由于問(wèn)題簡(jiǎn)單,狀態(tài)空間中可能的狀態(tài)總數(shù)為2222 = 16,由于要遵從安全限制,合法的狀態(tài)只有(除初、目狀態(tài)外): 1110,1101,1011,1010,0101,0001,0010,0100;不合法狀態(tài)有: 0111,1000,1100,0011,0110,1001 設(shè)計(jì)二類操作算子:Lx、Rx,x為m、f、s、v時(shí)分別指示農(nóng)夫獨(dú)自,帶狐貍,帶小羊,帶菜過(guò)河;狀態(tài)空間圖如下所示.由于Lx和Rx是互逆操作,故而解答路徑可有無(wú)數(shù)條,但最近的只有二條;都是7個(gè)操作步. 思考:為什么不把船的狀態(tài)放到
15、狀態(tài)空間中去?,2020/7/31,30,解析:四元組(m、f、s、v),2020/7/31,31,狀態(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)用序列。,2020/7/31,32,狀態(tài)空間搜索1.狀態(tài)空間及其搜索的表示,或圖(一般圖) 一個(gè)
16、狀態(tài)可以有多個(gè)可供選擇的操作算子; 操作算子間的選擇是一種“或”的關(guān)系; 這樣的有向圖稱為或圖。,2020/7/31,33,狀態(tài)空間搜索1.狀態(tài)空間及其搜索的表示,(3)狀態(tài)空間的搜索 或圖(一般圖) 一個(gè)狀態(tài)可以有多個(gè)可供選擇的操作算子; 操作算子間的選擇是一種“或”的關(guān)系,這樣的有向圖稱為或圖。 狀態(tài)空間一般都表示為或圖(一般圖) 搜索圖在搜索解答路徑的過(guò)程中畫(huà)出搜索時(shí)涉及到的節(jié)點(diǎn)和弧線,構(gòu)成所謂的搜索圖。,狀態(tài)空間搜索,一般圖搜索,2020/7/31,34,狀態(tài)空間搜索1.狀態(tài)空間及其搜索的表示,(3)狀態(tài)空間的搜索 狀態(tài)空間、搜索圖和解答路徑之間的關(guān)系,S0,Sg,2020/7/31,
17、35,狀態(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)布局,2020/7/31,36,狀態(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) 33的一個(gè)矩陣S 矩陣元素Sij0,1,2,3,4,5,6,7,8,其中1i,j3 數(shù)字0表示空格 數(shù)字1-8
18、表示相應(yīng)的棋牌 八數(shù)碼問(wèn)題就可表示為:,2020/7/31,37,狀態(tài)空間搜索1.狀態(tài)空間及其搜索的表示,初始布局,目標(biāo)布局,移動(dòng)數(shù)碼,(4)一般圖搜索例子八數(shù)碼游戲,2020/7/31,38,狀態(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)是解決組合爆
19、炸問(wèn)題,通過(guò)壓縮搜索空間,提高搜索效率。,2020/7/31,39,狀態(tài)空間搜索1.狀態(tài)空間及其搜索的表示,狀態(tài)空間、搜索圖和解答路徑之間的關(guān)系,S0,Sg,2020/7/31,40,狀態(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,搜索圖,2020/7/31,41,狀態(tài)空間搜索2.一般圖搜索策略,(1)搜索術(shù)語(yǔ) 2、節(jié)點(diǎn)擴(kuò)展 應(yīng)用操作算子將上一狀態(tài)(節(jié)點(diǎn)ni)變遷到下一狀態(tài)(節(jié)點(diǎn)
20、nj) 節(jié)點(diǎn)ni稱為被擴(kuò)展節(jié)點(diǎn)(父節(jié)點(diǎn)) 節(jié)點(diǎn)nj稱為ni的子節(jié)點(diǎn),節(jié)點(diǎn)ni,節(jié)點(diǎn)nj,2020/7/31,42,(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)nj,2020/7/31,43,狀態(tài)空間搜索2.一般圖搜索策略,(1)搜索術(shù)語(yǔ) 4、路徑代價(jià),目標(biāo)狀態(tài)節(jié)點(diǎn)ng,節(jié)點(diǎn)ni,節(jié)點(diǎn)nk,C(nk,ng),C(ni,nk
21、),C(ni,ng),2020/7/31,44,狀態(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),2020/7/31,45,狀態(tài)空間搜索2.一般圖搜索策略,(2)一般圖搜索算法 算法劃分為二個(gè)階段: 1、初始化 建立只包含初始狀態(tài)節(jié)點(diǎn)s的搜索圖G:=s OPEN:=s CLOSE:= 2、搜索循環(huán) MOVE-FIRST
22、(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)。,2020/7/31,46,以下面的八數(shù)碼為例,看一般圖的搜索算法,初始布局,目標(biāo)布局,狀態(tài)空間搜索2.一般圖搜索策略,2020/7/31,47,2020/7/31,48,2020/7/31,49,2020/7/31,50,2020/7/31,51,2020/7/31,52,2020/7/31,53,2020/7/31,54,2020/7/31,55,2
23、020/7/31,56,2020/7/31,57,2020/7/31,58,2020/7/31,59,2020/7/31,60,2020/7/31,61,2020/7/31,62,2020/7/31,63,2020/7/31,64,2020/7/31,65,2020/7/31,66,狀態(tài)空間搜索2.一般圖搜索策略,(2)一般圖搜索算法搜索過(guò)程中的指針修改 節(jié)點(diǎn)n擴(kuò)展后的子節(jié)點(diǎn)分為3類: (i)全新節(jié)點(diǎn) (ii)已出現(xiàn)在OPEN表中的節(jié)點(diǎn) (iii)已出現(xiàn)的CLOSE表中的節(jié)點(diǎn) 指針標(biāo)記和修改的方法: (i)類節(jié)點(diǎn):加入OPEN表,建立從子節(jié)點(diǎn)到父節(jié)點(diǎn)n的指針 (ii)類節(jié)點(diǎn)、 (iii)類節(jié)點(diǎn)
24、 比較經(jīng)由老父節(jié)點(diǎn)、新父節(jié)點(diǎn)n到達(dá)初始狀態(tài)節(jié)點(diǎn)的路徑代價(jià) 經(jīng)由新父節(jié)點(diǎn)n的代價(jià)比較小,則將原子節(jié)點(diǎn)指向老父節(jié)點(diǎn)的指針,修改為指向新父節(jié)點(diǎn)n (iii)類節(jié)點(diǎn)還得從CLOSE表中移出,重新加入OPEN表。,2020/7/31,67,狀態(tài)空間搜索2.一般圖搜索策略,S,n4,ni,nj,n1,n2,n3,n31,n32,節(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表;,2020/7/31,68,狀態(tài)空間搜索2.一般圖搜索策略,S,n4,ni,nj,n1,n2,n3,n31,n32,n4已經(jīng)存在于OPEN表,并且已有父節(jié)點(diǎn)nj n4經(jīng)
25、nj的路徑代價(jià)大 取消n4指向nj的指針 改為建立n4指向新父節(jié)點(diǎn)ni的指針 n3已經(jīng)存在于CLOSE表,并且已有父節(jié)點(diǎn)nj 需要做和n4同樣的比較和指針修改工作。并且要重新加入open表。,2020/7/31,69,狀態(tài)空間搜索2.一般圖搜索策略,(2)一般圖搜索算法 OPEN表中節(jié)點(diǎn)簡(jiǎn)單的排序方式: 深度優(yōu)先擴(kuò)展當(dāng)前節(jié)點(diǎn)后生成的子節(jié)點(diǎn)總是置于OPEN表的前端,即OPEN表作為棧,后進(jìn)先出,使搜索優(yōu)先向縱深方向發(fā)展。,2020/7/31,70,深度優(yōu)先實(shí)例,2 3 1 8 4 7 6 5,1,2,3,4,6,8,9,11,13,14,16,18,19,目標(biāo),5,7,10,12,15,17,2
26、0,21,2020/7/31,71,深度優(yōu)先搜索,在深度優(yōu)先搜索中,首先擴(kuò)展最新產(chǎn)生的(最深的)節(jié)點(diǎn),深度 相等的節(jié)點(diǎn)可以任意排列。 “最晚產(chǎn)生的節(jié)點(diǎn)最先擴(kuò)展”,起始節(jié)點(diǎn)深度為0 任何其他節(jié)點(diǎn)的深度等于其父輩節(jié)點(diǎn)深度加上1 :dn=dn-1+1,2020/7/31,72,深度優(yōu)先搜索,很明顯這樣做,不一定找到最佳解,而且由于深度的限制,可能找不到解,然而,若不加深度限制,可能沿著一條路線無(wú)限制地?cái)U(kuò)展下去,這當(dāng)然是不允許的。 為保證找到解,應(yīng)選擇適當(dāng)?shù)纳疃冉缦蓿蛘卟扇〔粩嗉哟笊疃冉缦薜霓k法,反復(fù)搜索,直到找到解。這種改進(jìn)的方法叫做迭代加深搜索。,2020/7/31,73,Procedure D
27、epth First Search Begin 把初始節(jié)點(diǎn)壓入棧,并設(shè)置棧頂指針; While 棧不空 do Begin 彈出棧頂元素; If 棧頂元素=goal,成功返回并結(jié)束; Else 以任意次序把棧頂元素的子女壓入棧中; End While End,基于棧實(shí)現(xiàn)的深度優(yōu)先搜索算法:,2020/7/31,74,初始節(jié)點(diǎn)放到棧中,棧指針指向棧的最上邊的元素。 為了對(duì)該節(jié)點(diǎn)進(jìn)行檢測(cè),需要從棧中彈出該節(jié)點(diǎn),如果是目標(biāo),該算法結(jié)束,否則把其子節(jié)點(diǎn)以任何順序壓入棧中。該過(guò)程直到棧變成為空。 遍歷一棵樹(shù)的過(guò)程(下圖)。,2020/7/31,75,深度優(yōu)先搜索的性質(zhì),一般不能保證找到最優(yōu)解 當(dāng)深度限制不
28、合理時(shí),可能找不到解,可以將算法改為可變深度限制 最壞情況時(shí),搜索空間等同于窮舉 是一個(gè)通用的與問(wèn)題無(wú)關(guān)的方法,2020/7/31,76,深度優(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),2020/7/31,77,深度優(yōu)先搜索的缺點(diǎn),既不是完備的,也不是最優(yōu)的。 主要問(wèn)題是可能搜索到了錯(cuò)誤的路徑上。很多問(wèn)題可能具有很深甚至是無(wú)限的搜索樹(shù),如果不幸選擇了一個(gè)錯(cuò)誤的路徑,則深度優(yōu)先搜索會(huì)一直搜索下去,而不會(huì)回到正確的路徑上。這樣一
29、來(lái)對(duì)于這些問(wèn)題,深度優(yōu)先搜索要么陷入無(wú)限的循環(huán)而不能給出一個(gè)答案,要么最后找到一個(gè)答案,但路徑很長(zhǎng)而且不是最優(yōu)的答案。,2020/7/31,78,狀態(tài)空間搜索2.一般圖搜索策略,(2)一般圖搜索算法 OPEN表中節(jié)點(diǎn)簡(jiǎn)單的排序方式: 深度優(yōu)先擴(kuò)展當(dāng)前節(jié)點(diǎn)后生成的子節(jié)點(diǎn)總是置于OPEN表的前端,即OPEN表作為棧,后進(jìn)先出,使搜索優(yōu)先向縱深方向發(fā)展。 寬度優(yōu)先擴(kuò)展當(dāng)前節(jié)點(diǎn)后生成的子節(jié)點(diǎn)總是置于OPEN表的后端,即OPEN表作為隊(duì)列,先進(jìn)先出,使搜索優(yōu)先向橫向方向發(fā)展。,2020/7/31,79,寬度優(yōu)先實(shí)例,2 3 1 8 4 7 6 5,1,2,5,6,7,3,目標(biāo),8,4,9,10,11,1
30、2,13,14,15,16,17,2020/7/31,80,寬度優(yōu)先搜索,如果搜索是以接近起始節(jié)點(diǎn)的程度依次擴(kuò)展節(jié)點(diǎn)的,那么這種搜索就叫做寬度優(yōu)先搜索。 這種搜索是逐層進(jìn)行的,在對(duì)下一層的任意節(jié)點(diǎn)進(jìn)行搜索之前,必須搜索完本層的所有節(jié)點(diǎn)。 “先產(chǎn)生的節(jié)點(diǎn)先擴(kuò)展”,2020/7/31,81,Procedure Breadth-first-search Begin 把初始節(jié)點(diǎn)放入隊(duì)列; Repeat 取得隊(duì)列最前面的元素為current; If current=goal 成功返回并結(jié)束; Else do Begin 如果current有子女,則current的子女 以任意次序添加到隊(duì)列的尾部; En
31、d Until 隊(duì)列為空 End,采用隊(duì)列結(jié)構(gòu),寬度優(yōu)先算法可以表示如下:,2020/7/31,82,寬度優(yōu)先搜索算法原理: 如果當(dāng)前的節(jié)點(diǎn)不是目標(biāo)節(jié)點(diǎn),則把當(dāng)點(diǎn)節(jié)點(diǎn)的子孫以任意順序增加到隊(duì)列的后面,并把隊(duì)列的前端元素定義為current。 如果目標(biāo)發(fā)現(xiàn),則算法終止。,2020/7/31,83,寬度優(yōu)先搜索的性質(zhì),當(dāng)問(wèn)題有解時(shí),一定能找到解 當(dāng)問(wèn)題為單位代價(jià)時(shí),且問(wèn)題有解時(shí),一定能找到最優(yōu)解 方法與問(wèn)題無(wú)關(guān),具有通用性 效率較低 屬于圖搜索方法,2020/7/31,84,寬度優(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)
32、先搜索中,時(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),2020/7/31,85,總結(jié),適用場(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)排序
33、,往往會(huì)在白白搜索了大量無(wú)關(guān)的狀態(tài)節(jié)點(diǎn)后才碰到解答,所以也稱為盲目搜索。,2020/7/31,86,有界深度搜索和迭代加深搜索,有界深度優(yōu)先搜索過(guò)程總體上按深度優(yōu)先算法方法進(jìn)行,但對(duì)搜索深度需要給出一個(gè)深度限制dm,當(dāng)深度達(dá)到了dm的時(shí)候,如果還沒(méi)有找到解答,就停止對(duì)該分支的搜索,換到另外一個(gè)分支進(jìn)行搜索。,2020/7/31,87,策略說(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ò)程甚至是不完備的。,
34、2020/7/31,88,(2)深度限制dm不能太大。當(dāng)dm太大時(shí),搜索過(guò)程會(huì)產(chǎn)生過(guò)多的無(wú)用節(jié)點(diǎn),既浪費(fèi)了計(jì)算機(jī)資源,又降低了搜索效率。 (3)有界深度搜索的主要問(wèn)題是深度限制值dm的選取。,2020/7/31,89,改進(jìn)方法: (迭代加深搜索) 先任意給定一個(gè)較小的數(shù)作為dm,然后按有界深度算法搜索,若在此深度限制內(nèi)找到了解,則算法結(jié)束;如在此限制內(nèi)沒(méi)有找到問(wèn)題的解,則增大深度限制dm,繼續(xù)搜索。,2020/7/31,90,迭代加深搜索,試圖嘗試所有可能的深度限制: 首先深度為0, 然后深度為1, 然后為2,等等。 如果初始深度為0,則該算法只生成根節(jié)點(diǎn),并檢測(cè)它。 如果根節(jié)點(diǎn)不是目標(biāo),則深
35、度加1,通過(guò)典型的深度優(yōu)先算法,生成深度為1的樹(shù)。 當(dāng)深度限制為m時(shí),樹(shù)的深度為m。,2020/7/31,91,迭代加深搜索看起來(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ō)影響不是很大。,2020/7/31,92,搜索最優(yōu)策略的比較,表注:b是分支系數(shù),d是解答的深度,m是搜索樹(shù)的最大深度,l是深度限制。,2020/7/31,93,寬度優(yōu)先搜索、深度優(yōu)先搜索和迭代加深搜索都可以用于生成和測(cè)試算法。 寬度優(yōu)先搜索需要指數(shù)數(shù)量的空間,深度優(yōu)先搜
36、索的空間復(fù)雜度和最大搜索深度呈線性關(guān)系。,2020/7/31,94,迭代加深搜索對(duì)一棵深度受控的樹(shù)采用深度優(yōu)先的搜索。它結(jié)合了寬度優(yōu)先和深度優(yōu)先搜索的優(yōu)點(diǎn)。 和寬度優(yōu)先搜索一樣,它是最優(yōu)的,也是完備的。但對(duì)空間要求和深度優(yōu)先搜索一樣是適中的。,2020/7/31,95,狀態(tài)空間搜索2.一般圖搜索策略,(2)一般圖搜索算法 常用的簡(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)的排序方式,盲目搜索,2020/7/31,96,1,2,5,6,3,4,最理想情況: 每次排序后OPEN表 表首
37、元素n 總在解答路徑上,2020/7/31,97,啟發(fā)式搜索,啟發(fā)式知識(shí)指導(dǎo)OPEN表排序的一般圖搜索: 全局排序?qū)PEN表中的所有節(jié)點(diǎn)排序,使最有希望的節(jié)點(diǎn)排在表首。 A算法, A*算法(掌握?。?局部排序僅對(duì)新擴(kuò)展出來(lái)的子節(jié)點(diǎn)排序,使這些新節(jié)點(diǎn)中最有希望者能優(yōu)先取出考察和擴(kuò)展; 爬山法(了解,對(duì)深度優(yōu)先法的改進(jìn));,2020/7/31,98,啟發(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)
38、n到達(dá)目標(biāo)節(jié)點(diǎn)ng,估計(jì)的最小路徑代價(jià); g(n)- G中從s到n,目前實(shí)際的路徑代價(jià); h(n)-從n到ng,估計(jì)的最小路徑代價(jià);,2020/7/31,99,啟發(fā)式搜索1.A算法(掌握),S,n,ng,目標(biāo)狀態(tài)節(jié)點(diǎn)ng,初始狀態(tài)節(jié)點(diǎn)S,節(jié)點(diǎn)n,搜索圖G,h(n): n-ng的估計(jì)最小路徑代價(jià),g(n):s-n的實(shí)際路徑代價(jià),f(n):s-n-ng的估計(jì)最小路徑代價(jià),2020/7/31,100,啟發(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í)際的路徑
39、代價(jià); h(n)-從n到ng,估計(jì)的最小路徑代價(jià); h(n)值-依賴于啟發(fā)式知識(shí)加以計(jì)算; h(n)稱為啟發(fā)式函數(shù)(掌握意義!)。 如何用評(píng)價(jià)函數(shù)來(lái)實(shí)現(xiàn)A算法? ( 掌握?。?2020/7/31,101,啟發(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ì)因
40、不斷有新節(jié)點(diǎn)加入而逐步長(zhǎng)大,直到搜索到目標(biāo)節(jié)點(diǎn)。,2020/7/31,102,啟發(fā)式搜索1.A算法(掌握),算法A的設(shè)計(jì)與一般圖搜索類似,劃分為二個(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)的值排序),2020/7/31,103,啟發(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)
41、 適當(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)值從小到大排序),2020/7/31,104,2.若OPEN表是空表,則失敗退出;,算法A,3.選擇OPEN表上的第一個(gè)節(jié)點(diǎn),把它從OPEN表移出并放進(jìn)CLOSE表中,稱此節(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)表,其初始為空表;,
42、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這條路徑而得到的;,2020/7/31,105,6.對(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)的指
43、針,改為指向新父節(jié)點(diǎn)。對(duì)已在CLOSE表上的每個(gè)M成員,作與第2類同樣的處理,并把這些子結(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ù))。,2020/7/31,106,啟發(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ù);,202
44、0/7/31,107,啟發(fā)式搜索1.A算法(掌握),啟發(fā)式算法A實(shí)例八數(shù)碼游戲 1)設(shè)計(jì)評(píng)價(jià)函數(shù)f(n) f(n)計(jì)算實(shí)例,初始布局s,目標(biāo)布局ng,w(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)不考慮空格,2020/7/31,108,狀態(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
45、,第n層節(jié)點(diǎn)dn= dn-1+1,搜索圖G,2020/7/31,109,啟發(fā)式搜索1.A算法(掌握),啟發(fā)式算法A實(shí)例八數(shù)碼游戲 1)設(shè)計(jì)評(píng)價(jià)函數(shù)f(n) f(n)計(jì)算實(shí)例,初始布局s,目標(biāo)布局ng,w(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)不考慮空格,2020/7/31,110,初始化,OPEN:=s4,CLOSE:=,2020/7/31,111,循環(huán)1,CLOSE:=s4,OPEN:=a b c,OPEN:=a6 b4 c6,OPEN:=b4
46、a6 c6,2020/7/31,112,循環(huán)2,CLOSE:=s4 b4,OPEN:=a6 c6 d e i,OPEN:=a6 c6 d5 e5 i6,OPEN:=d5 e5 a6 c6 i6,2020/7/31,113,循環(huán)3,CLOSE:=s4 b4 d5,OPEN:=e5 a6 c6 i6 j k,OPEN:=e5 a6 c6 i6 j7 k6,OPEN:=e5 a6 c6 i6 k6 j7,2020/7/31,114,循環(huán)4,CLOSE:=s4,b4,d5,e5,OPEN:=a6 c6 i6 k6 j7 l m,OPEN:=a6 c6 i6 k6 j7 l5 m7,OPEN:=l5 a
47、6 c6 i6 k6 j7 m7,2020/7/31,115,CLOSE:=s4,b4,d5,e5,l5,循環(huán)5,OPEN:=a6 c6 i6 k6 j7 m7 n,OPEN:=a6 c6 i6 k6 j7 m7 n5,OPEN:=n5 a6 c6 i6 k6 j7 m7,2020/7/31,116,循環(huán)6,CLOSE:=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,2020/7/31,117,循環(huán)7,成功結(jié)束,2020/7/3
48、1,118,最理想搜索圖G,2020/7/31,119,判斷失誤,2020/7/31,120,例 2 給定4L和3L的水壺各一個(gè),水壺上沒(méi)有刻度,可以向水壺中加水。 如何在4L的壺中準(zhǔn)確地得到2L水?,(x,y)4L壺里的水有xL,3L壺里的水有yL, n表示搜索空間中的任一節(jié)點(diǎn)。 則給出下面的啟發(fā)式函數(shù):,2020/7/31,121,h(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ù)
49、中搜索的深度,則根據(jù)圖搜索策略得下圖的搜索空間。,2020/7/31,122,水壺問(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ò)展。,2020/7/31,123,水壺問(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ò)程一
50、直進(jìn)行下去,直到到達(dá)目標(biāo)節(jié)點(diǎn)。,2020/7/31,124,啟發(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)弱及其影響;,2020/7/31,125,啟發(fā)式搜索2.實(shí)現(xiàn)啟發(fā)式搜索的關(guān)鍵因素,(1)搜索算法的可采納性(Admissibility) 1)定義 在存在從初始狀態(tài)節(jié)點(diǎn)到目標(biāo)狀態(tài)節(jié)點(diǎn)解答路徑的情況下,若一個(gè)搜索法總能找到最短(代價(jià)最?。┑慕獯鹇窂剑瑒t稱該狀態(tài)空間中的搜索算法具有可采納性,也叫最優(yōu)性。 如,寬度優(yōu)先的搜索算法是可采納的,只是搜索效率不高。 2) A算法的可
51、采納性定義f*(n)=g*(n)+h*(n) n-搜索圖G中最短解答路徑的節(jié)點(diǎn); f*(n)- s經(jīng)節(jié)點(diǎn)n到ng的最短解答路徑的路徑代價(jià); g*(n)-該路徑前段(從s到n)的路徑代價(jià); h*(n)-該路徑后段(從n到ng)的路徑代價(jià);,2020/7/31,126,啟發(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)。
52、實(shí)際情況:設(shè)計(jì)接近f*的f是很困難的 在算法執(zhí)行過(guò)程中, g(n)容易從已經(jīng)生成的搜索樹(shù)中計(jì)算出來(lái),S,n,搜索圖G,ng,2020/7/31,127,啟發(fā)式搜索2.實(shí)現(xiàn)啟發(fā)式搜索的關(guān)鍵因素,(1)搜索算法的可采納性(Admissibility) 3) 評(píng)價(jià)函數(shù)f與f*的比價(jià) 理想情況下: 若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)鍵。,2020/7/31,128,啟發(fā)
53、式搜索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)距離),2020/7/31,129,啟發(fā)式搜索2.實(shí)現(xiàn)啟發(fā)式搜索的關(guān)鍵因素,4)改進(jìn)啟發(fā)式函數(shù)八數(shù)碼游戲 f(s)計(jì)算實(shí)例,初始布局s,目標(biāo)布局ng,w(s):錯(cuò)位的棋
54、牌個(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,2020/7/31,130,初始化,OPEN:=s5,CLOSE:=,2020/7/31,131,循環(huán)1,CLOSE:=s5,OPEN:=a b c,OPEN:=a7 b5 c7,OPEN:=b5 a7 c7,2020/7/31,132,循環(huán)2,CLOSE:=s5 b5,OPEN:=a7 c7 d e i,OPEN:=a7 c7 d7 e5 i7,OPEN:=e5 a7 c7 d7 i7,2020/7/31,133,循環(huán)3,CLOSE:=s5 b5 e
55、5,OPEN:=a7 c7 d7 i7 l m,OPEN:=a7 c7 d7 i7 l5 m7,OPEN:=l5 a7 c7 d7 i7 m7,2020/7/31,134,CLOSE:=s5,b5,e5,l5,循環(huán)4,OPEN:=a7 c7 d7 i7 m7 n,OPEN:=a7 c7 d7 i7 m7 n5,OPEN:=n5 a7 c7 d7 i7 m7,2020/7/31,135,CLOSE:=s5,b5, e5,l5, n5,循環(huán)5,OPEN:=a7 c7 d7 i7 m7 o g,OPEN:=a7 c7 d7 i7 m7 o7 g5,OPEN:=g5 a7 c7 d7 i7 m7 o7
56、,2020/7/31,136,循環(huán)6,成功結(jié)束,最理想搜索圖G,2020/7/31,137,避免了錯(cuò)誤選擇,2020/7/31,138,啟發(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ù))的總和;,2020/7/31,139,啟發(fā)式搜索2.實(shí)現(xiàn)啟發(fā)式搜索的關(guān)鍵因素,
57、(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)解。 證明完畢。,2020/7/31,140,啟發(fā)式搜索2.實(shí)現(xiàn)啟發(fā)式搜索的關(guān)鍵因素,(1
58、)搜索算法的可采納性(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(n)h*(n) f(n)=g*(n)+h(n) g*(n)+h*(n)=f*(n) f*(n)= f*(ng) f(n) f*(ng),2020/7/31,141,啟發(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); 設(shè)OPEN表中n之前的節(jié)點(diǎn)只有有限個(gè),設(shè)為N個(gè),其中估計(jì)值最小者為a1,并稱之為第一代節(jié)點(diǎn);由第一代節(jié)點(diǎn)生成的節(jié)點(diǎn)稱為第二代節(jié)點(diǎn),其中估計(jì)值最小者為a2; a2a1+e(其中,e0,表示每擴(kuò)展一次起碼的代價(jià)) 擴(kuò)展j代后, aj a1+(j-1)e 當(dāng)j足夠大時(shí)一定有aj f*(ng)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年四川國(guó)際標(biāo)榜職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試備考試題帶答案解析
- 2026年湖北工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能筆試備考試題帶答案解析
- 2026年濮陽(yáng)石油化工職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試備考試題帶答案解析
- 2026年上饒幼兒師范高等??茖W(xué)校高職單招職業(yè)適應(yīng)性考試備考試題帶答案解析
- 2026年蘇州工藝美術(shù)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性考試模擬試題帶答案解析
- 2026年臨沂科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試參考題庫(kù)帶答案解析
- 2026年江西電力職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性考試參考題庫(kù)帶答案解析
- 2026年長(zhǎng)春金融高等??茖W(xué)校高職單招職業(yè)適應(yīng)性考試參考題庫(kù)帶答案解析
- 2026年山東信息職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性考試參考題庫(kù)帶答案解析
- 2026年鐵嶺衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能筆試參考題庫(kù)帶答案解析
- 大學(xué)期末考試思政題庫(kù)及答案
- 人教版五年級(jí)數(shù)學(xué)上冊(cè)第六單元多邊形的面積學(xué)業(yè)質(zhì)量測(cè)評(píng)卷(含答案)
- have與has的用法微課課件
- 頁(yè)巖油氣開(kāi)發(fā)地面工程關(guān)鍵技術(shù)及挑戰(zhàn)
- 2024年度重慶市安全員之B證(項(xiàng)目負(fù)責(zé)人)題庫(kù)附答案
- 城市供水管道施工重難點(diǎn)分析及改進(jìn)措施
- 造價(jià)人員考核管理辦法
- 科室護(hù)理品牌創(chuàng)建
- 兒童評(píng)估與照護(hù)課件
- 護(hù)理事業(yè)十五五發(fā)展規(guī)劃(2026-2030)
- 2025年 內(nèi)蒙古能源集團(tuán)所屬單位招聘考試筆試試題(含答案)
評(píng)論
0/150
提交評(píng)論