第4章與或圖搜索_第1頁
第4章與或圖搜索_第2頁
第4章與或圖搜索_第3頁
第4章與或圖搜索_第4頁
第4章與或圖搜索_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第四章與或圖搜索1問題歸約法2與或圖3與或圖搜索4AO*算法5博弈樹的搜索問題:在邊長為2的正方形內(nèi),任意放置5個點,求證其中必存在兩個點,它們之間的距離不大于2。問題可轉(zhuǎn)化為:在四個單位正方形內(nèi),任意放置5個點,至少有兩個點在同一正方形內(nèi)。1問題歸約法問題:假定我們已經(jīng)會求矩形的面積,現(xiàn)在要求如圖所示的五邊形的面積。方法分析:五邊形的面積轉(zhuǎn)化為矩形面積。IIIII①②③123I求解步驟:求五邊形面積求1面積求2面積求3面積求I面積求II面積求III面積求①面積求②面積求③面積123IIIIII①②③問題歸約法:當問題復雜時,可把初始問題分解成若干簡單的子問題,若子問題仍復雜,可再進一步分解,直到這些子問題的解可直接得到。這種問題的描述和求解方法,稱為~.本原問題:可直接解答的問題稱為~,它是不必證明的、自然成立的.歸約法的組成:1)一個初始問題的描述;2)一組把問題變成子問題的算子(分解或轉(zhuǎn)換);3)

一組本原問題的描述不同的算子對應不同的關(guān)系,從而使問題歸約的描述可用一個與或圖的結(jié)構(gòu)來表示.小結(jié):

2與或圖與節(jié)點:把單個問題分解為幾個子問題來求解。只有當所有子問題都有解,該父輩節(jié)點才有解。表示一種“與”關(guān)系?;蚬?jié)點:同一問題被轉(zhuǎn)換為幾種不同的后繼問題。只要有一個后繼問題有解,則原問題有解。表示一種“或”關(guān)系。與節(jié)點由與運算連接(超?。?,如圖(a).或節(jié)點由或運算連接,如圖(b).定義:與或圖就是包含與節(jié)點和或節(jié)點的圖,即存在超弧的圖,也稱為超圖.超圖與狀態(tài)空間圖有什么區(qū)別?與或圖是一種更一般的圖.定義:一超弧所相關(guān)的邊數(shù)(K)被稱為該超弧的度,實現(xiàn)的連接稱為K-連接.K—連接符:從一個父節(jié)點指向一組含有K個后繼節(jié)點的節(jié)點集.在與或圖中,節(jié)點n0有兩個連接符:1-連接符指向節(jié)點n1;2-連接符指向節(jié)點集合{n4、n5};對于節(jié)點n0來講,n1可稱為或節(jié)點,n4、n5可稱為與節(jié)點。

與或圖

3與或圖搜索含義:在與或圖上執(zhí)行搜索的過程,其目的在于標明起始節(jié)點是有解的,即,搜索不是去尋找到目標節(jié)點的一條路徑,而是尋找一個解圖。定義:一個節(jié)點被稱為能解節(jié)點,其遞歸定義為:1.終節(jié)點是能解節(jié)點(直接與本原問題相關(guān)聯(lián));2.若非終節(jié)點有“或”子節(jié)點時,當且僅當其子節(jié)點至少有一個能解,該非終節(jié)點才能解;3.若非終節(jié)點有“與”子節(jié)點時,當且僅當其子節(jié)點均能解,該非終節(jié)點才能解。定義:不能解節(jié)點的遞歸定義為:

1.沒有后裔的非終節(jié)點是不能解的節(jié)點;2.若非終節(jié)點有“或”子節(jié)點時,當且僅當所有子節(jié)點均不能解時,該非終節(jié)點才不能解;3.若非終節(jié)點有“與”子節(jié)點時,當至少有一子節(jié)點不能解時,該非終節(jié)點才不能解.是由能解節(jié)點構(gòu)成的一個子圖,是包含一節(jié)點(n)到目的(終)節(jié)點集合(N)的、連通的能解節(jié)點的子圖.在一個與或圖G中,從節(jié)點n到節(jié)點集N的解圖記為G,G是G的子圖.1.若n是N的一個元素,則G由單個節(jié)點n組成;2.若n有一個指向節(jié)點集{n1…,nk}的外向連接符K,使得從每一個節(jié)點ni到N有一個解圖(i=1,…,k),則G由節(jié)點n,連接符K,以及{n1,…,nk}中的每一個節(jié)點到N的解圖所組成;3.否則n到N不存在解圖.如果n=s為初始節(jié)點,則解圖為所求解問題的解圖.解圖的定義:若解圖的耗散值記為k(n,N),則可遞歸計算如下:若n是N的一個元素,則k(n,N)=0;若n有一個外向連接符指向其后繼節(jié)點集合{n1…,ni},并設(shè)該連接符的耗散值為Cn(一般k-連接符的耗散值=k),則

k(n,N)=Cn+k(n1,N)+…+k(ni,N)具有最小耗散值的解圖稱為最佳解圖,其值也用h*(n)標記。解圖耗散值的計算:例:從節(jié)點n開始,正確選擇一個外向連接符,一直進行下去直到產(chǎn)生的每一個后繼節(jié)點成為集合N中的一個元素為止。下圖給出了n0→{n7,n8}的三個解圖(耗散值分別為8,7,5).解圖的求法與或圖搜索與狀態(tài)空間圖搜索的區(qū)別:搜索目的不同:是證明起始節(jié)點是否可解,而可解節(jié)點是遞歸定義的,取決于后繼節(jié)點是否可解,即搜索過程是能否找到可解的葉節(jié)點.結(jié)果不同:若初始節(jié)點被標示為可解,則搜索成功結(jié)束;若初始節(jié)點被標示為不可解,則搜索失敗.節(jié)點處理不同:一旦發(fā)現(xiàn)不可解節(jié)點,應把該節(jié)點從圖中刪去.4與或圖啟發(fā)式搜索算法AO*假設(shè):G;G;h(n)是從節(jié)點n到一組終葉節(jié)點的一個最優(yōu)解圖的一個代價估計,評價函數(shù)q(n)=h(n)AO*過程:1.建立初始搜索圖,G:=s,計算q(s)=h(s),IFGOAL(s)THENM(s,SOLVED);2.Untils已標記為SOLVED,do:3.Begin4.G:=FIND(G);根據(jù)連接符標記(指針)找出一個待擴展的侯選局部解圖G(連接符在11步標記)5.n:=G中的任一非終節(jié)點;選一個當前節(jié)點6.EXPAND(n),生成子節(jié)點集{ni},如果ni

G,G:=ADD({ni},G),計算q(ni)=h(ni),IFGOAL(ni)THENM(ni,SOLVED);7S:={n};建立含n的節(jié)點集合S.(已擴展待修正)8UntilS為空,do:9Begin(m為S中任一節(jié)點)10REMOVE(m,S),當mc{S};(m→mc,從底層開始修正)11修改m的耗散值q(m):對m指向節(jié)點集(n1i,n2i,…nki)的每一個連接符i分別計算qi,qi(m)=Ci+q(n1i)+…+q(nki),并取q(m):=minqi(m);

加(或修正)指針到minqi(m)的連接符上.IFM(nji,SOLVED)THENM(m,SOLVED);(j=1,2,…,k)若該連接符的所有子節(jié)點都是能解的,則m也能解.12IFM(m,SOLVED)(q(m)q0(m))THENADD(ma,S);m能解或修正的耗散值與原先估算q0不同,則把m的所有先輩節(jié)點ma添加到S中.(能解或修正向上傳遞)13end(與8匹配)14

end(與2匹配)兩個過程的重復:自上而下的圖生長過程(4-6步):先通過有標記的連接符,找到目前為止最好的一個局部解圖,然后對其中一個非終節(jié)點進行擴展,并對其后繼節(jié)點賦估計耗散值和加能解標記.自下而上的估價函數(shù)值的修正、連接符的標記和SOLVED的標注過程(7-12):耗散值的修正從剛被擴展的節(jié)點n開始,其修正耗散值q(n)取所有估計值中最小的一個,然后根據(jù)耗散值遞歸計算公式逐級向上修正其先輩節(jié)點的耗散值.只有下層節(jié)點耗散值修正后,才可能影響到上一層節(jié)點的耗散值,如此一直修正到初始節(jié)點.AO*搜索算法過程分析例:各節(jié)點啟發(fā)值如圖,k-連接符的耗散值=k,求最佳解圖.

應用AO*算法,經(jīng)四個循環(huán),可找到解圖.

在第一次循環(huán)擴展節(jié)點n0;然后,依次擴展節(jié)點n1、n5、n4。在節(jié)點n4被擴展之后,節(jié)點n0便被標注SOLVED,此時,通過向下跟蹤有標記的連接符,便獲得了解圖.

主要步驟第4步(G’)第5步(n)第6步第7步(S)第11步第12步AO*搜索算法的過程第1循環(huán)(n0)(n0)(n1,n5,n4)(n0)比較,選n0→n1;n1不可解;無第2循環(huán)n0→n1(n1)(n2,n3)(n1)1)比較,選n1→n3;n3不可解;2)比較,改n0→n5,n4;n5,n4不可解;n0不可解,值變;1)加n0→S;2)無前輩;第3循環(huán)n0→n5,n4(n5)(n6,n7,n8)(n5)1)比較,選n5→n7,n8;n7,n8可解,n5可解;2)n0不可解,值變;1)加n0→S;2)無;第4循環(huán)n0→n5,n4;(n4)(n5,n8)(n4)1)比較,選n4→n8;n8可解,n4可解;2)n4,n5可解;n0可解,值不變;1)加n0→S;2)無;n0n1n4n52113446542002×5n6n3n2n7n8★★★★★不帶括號的數(shù)是啟發(fā)函數(shù)h(n)值,帶括號數(shù)是估價函數(shù)q(n)的修正值;短箭頭用來標記連接符,標明侯選局部解圖;已經(jīng)標注SOLVED的節(jié)點用黑心圓來表示。

討論當節(jié)點n無后繼節(jié)點?在第11步中對m(n)賦一個高的q值(會傳遞到s),從而排除了含有n的子圖被當作候選局部解圖的可能性.在G’中存在多個非終節(jié)點時,選擇什么樣的節(jié)點先擴展?一般選擇最能導致該局部解圖耗散值發(fā)生較大變化的節(jié)點先進行擴展,可促使及時修改局部解圖的標記.同A算法類似,若s→N存在解圖,當h(n)≤h*(n)且h(n)滿足單調(diào)限制條件時(對n到其子節(jié)點的每一連接符均需要滿足),則AO*一定能找到最佳解圖.與A*算法的區(qū)別評價函數(shù)只考慮h(n):

理由:算法有自下而上的修正費用的的操作,實際上局部解圖費用值的估計是在起始節(jié)點S比較,計算g既無必要也不可能.不能優(yōu)先擴展具有最小費用的節(jié)點:理由:K-連接符連接的有關(guān)子節(jié)點對父節(jié)點的可解性及費用值的估計都會產(chǎn)生影響.僅適用于無環(huán)圖,否則耗散值遞歸計算不收斂:方法:當新生成的節(jié)點已在圖中時,判斷是否為正被擴展節(jié)點的先輩節(jié)點.控制策略不同:沒有OPEN表和CLOSED表,只用生成的解圖結(jié)構(gòu)G,h(n)是最佳解圖的費用估計.

5博弈樹的搜索問題:二人完備博弈:1.由二人對壘,輪流走步,自己的走步自己選擇2.信息完備:任何一方都完全知道對方過去的走步情況和今后可能的走步,不包括碰運氣的情況表示方法:利用與或圖表示來描述博弈問題.理由:由于在博弈中,決定自己走步時只需考慮對自己有利的一步——或,而考察對方時,則應考慮對方所有可能的走步——與.求解方法:特殊的與或圖搜索算法——博弈樹搜索.理由:由于兩人嚴格地輪流走步,使博弈狀態(tài)圖呈現(xiàn)出嚴格的與或圖的交替層次.1)Grundy博弈

例:假設(shè)桌上放有一堆(7個)錢幣,由兩人輪流進行分堆,要求每人每次只把其中某堆錢幣分成數(shù)目不相等的兩小堆,最后不能分下去的人被判負.綜合數(shù)據(jù)庫:(x1,x2,…,xn,M)表示某個選手走步的狀態(tài).其中,x1,x2,…,xn表示n堆錢幣不同的個數(shù),M代表選手(MIN或MAX).規(guī)則:控制策略:博弈雙方總是偏向最有利于自己的狀態(tài)前進,己方會盡力將贏的幾率最大化,而使對手方偏離取勝目標.(5,1,1,MIN)(6,1,MAX)(5,2,MAX)(4,3,MAX)(3,2,2,MIN)(4,2,1,MIN)(7,MIN)(3,3,1,MIN)(4,1,1,1,MAX)(3,2,1,1,MAX)(2,2,2,1,MAX)(2,1,1,1,1,MAX)(3,1,1,1,1,MIN)(2,2,1,1,1,MIN)ABC搜索策略分析(以MAX方的角度)對MAX節(jié)點(MIN控制),MAX必須都能夠獲勝,即MAX必須考慮應付MIN的所有招法,故它為與節(jié)點.對MIN節(jié)點(MAX控制),MAX只需證明有一步能走贏就可以,即MAX只要考慮有一步棋使MIN無法招架就成,故它為或節(jié)點.因此,對弈過程的搜索圖就呈現(xiàn)出與或圖表示的形式,從圖可見,MAX方存在完全取勝的策略.于是,尋找MAX方取勝的策略便和求與或圖的解圖(能解→能勝)一致起來,即MAX要獲勝,在各層必須對所有與節(jié)點取勝,但只需對一個或節(jié)點取勝.2)博弈樹的極大極小搜索法思想:預先考慮雙方對弈若干步之后的局勢,從當前侯選的走步中選一個相對好的走步來走,即在有限搜索深度范圍內(nèi)進行求解.方法:定義一個評價函數(shù)f,以便對棋局的勢態(tài)(節(jié)點)作出優(yōu)劣估值.一般規(guī)定:有利于MAX(我)的勢態(tài),f(n)取正值;有利于MIN(敵)的勢態(tài),f(n)取負值;勢均力敵,f(n):=0.若f(n):=,表示MAX方獲勝;若f(n):=-,表示MIN方獲勝.選步的過程:假定開始由MAX選擇走一步棋,如何選擇一步好棋?首先,對給定的格局MAX給出可能的走法,接著,MIN對MAX的每一步走法,又給出可能的走法,這樣進行若干次(規(guī)定深度),得到一組端節(jié)點.此時,計算每個端節(jié)點相應的靜態(tài)函數(shù)值;然后由底向上逐級計算倒推估值,在MIN處(與節(jié)點)取其下層估值中最小者,在MAX處(或節(jié)點)取其下層估值最大者。一直到MAX的開始棋局,取其下層估值中最大的格局作為要走的第一步.當用端節(jié)點的靜態(tài)估計函數(shù)值求倒推值時,針對兩位選手的控制力應采用不同的策略,從下往上逐層交替使用極大和極小的選值方法,故稱為極大極小過程.ABCSDEFGHIJ9-600-2-4-3-6-2-4-2MAX取極大值MIN取極小值端節(jié)點例.向前看兩步時f(n)的求值過程極大極小過程MIN-MAX:1.T:=(s,MAX),OPEN:=(s),CLOSED:=();開始時樹由初始節(jié)點構(gòu)成,OPEN表只含有s.2.LOOP1:IFOPEN=()THENGOLOOP2;3.n:=FIRST(OPEN),REMOVE(n,OPEN),ADD(n,CLOSED);將n放到CLOSED表的前面,使第5步操作時深度大的節(jié)點優(yōu)先被取出.(OPEN表先進先出,CLOSED表后進先出)4.IFn可直接判定為贏,輸或平局THENf(n):=-0,GOLOOP1ELSEEXPAND(n){ni},ADD({ni},T)IFd{ni}kTHENADD({ni},OPEN),GOLOOP1ELSE計算f(ni)GOLOOP1;ni達到深度k,計算端節(jié)點f值.5.LOOP2:IFCLOSED=NIL,THENGOLOOP3ELSEnd=FIRST(CLOSED);6.IF(nd

MAX)(f(nciMIN)有值)THENf(nd):=max{f(nci)},REMOVE(nd,CLOSED);若MAX所有子節(jié)點均有值,則該MAX取其極大值.ELSEIF(nd

MIN)(f(nciMAX)有值)THENf(nd):=min{f(nci)},REMOVE(nd,CLOSED);若MIN所有子節(jié)點均有值,則該MIN取其極小值.7.GOLOOP2;8.LOOP3:IFf(s)≠NILTHENEXIT(ENDM(Move,T));s有值,或則結(jié)束或標記走步.例:在九宮格棋盤上,甲乙(MAX和MIN)二人輪流在空格中放入自己的棋子(一次一枚),誰先使自己的三子成一線就獲勝,設(shè)甲先走用()表示,乙用()表示,p表示某種格局,f(p)表示對格局的評價值。贏線定義:將棋盤的整行、整列或整條對角線稱為贏線。如,一條贏線上只有(或)方的棋子或為空,而沒有對方的棋子,那么這條贏線就稱為(或)方的贏線。f(p)定義:1)MAX勝,f(p)=+

2)MIN勝,f(p)=-

3)若p不是可定勝負的格局,則f(p)=fMAX(p)-fMIN(p)考慮走兩步的搜索過程,并兼顧棋盤對稱性條件第一次調(diào)用算法產(chǎn)生的搜索樹如下圖所示,圖中端節(jié)點下面是計算的f(p)值,非端節(jié)點的倒推值標記在圓圈內(nèi).結(jié)論:第1步的最好走法是把棋子下到中央位置.(為了使初始節(jié)點具有最大的倒推值)fMAX(p)=4fMIN(p)=6f(p)=4-6=-2一字棋第1階段的搜索樹√√√√√√√√√√√√√√√√

一字棋第2階段的搜索樹

√√一字棋第3階段的搜索樹

3)-搜索過程極大極小搜索缺陷:把生成樹和棋局估值兩個過程完全分離,即先生成全部的搜索樹,然后再進行端節(jié)點估值和倒推值計算,這導致效率降低.例:一個MIN節(jié)點要全部生成A、B、C、D節(jié)點,然后逐個計算其靜態(tài)估值,最后在求倒推值階段,才賦給這個MIN節(jié)點的倒推值-.如何改進?改進思路:若兩個過程同時進行,再依一定的條件判斷,有可能盡早剪掉一些無用的分支,那么就可能減少搜索量,這是-搜索的思想.例:生成節(jié)點A后,馬上進行靜態(tài)估值,得知f(A)=-后,便可斷定再生成其余節(jié)點并進行估值計算是多余的,故可馬上對MIN節(jié)點賦倒推值-,不會影響MAX的最好優(yōu)先走步的選擇.實現(xiàn)方法:采用有界深度優(yōu)先策略進行搜索,這樣當生成達到規(guī)定深度的節(jié)點時,就立即計算其靜態(tài)估值函數(shù),而一旦某個非端節(jié)點有條件確定其倒推值時就立即計算賦值.一字棋第1階段-剪枝方法1-6→f(1)=-1→初始S,f(S)>=-1,此時該MAX層下界值=-1;7-8→f(7)<=-1,此時該MIN層上界值

=-1≥,節(jié)點7的其他子節(jié)點不必再生成,因S的極大值不可能比這個值還小,再生成是多余的,故可剪枝.在搜索過程中,通過記錄并比較倒推值的上、下界并進行比較,就可以實現(xiàn)修剪操作,這種技術(shù)統(tǒng)稱為-剪枝技術(shù).在實際修剪中,、的值可以隨時修正,但滿足如下條件:極大值層的倒推值下界值永不下降,實際的倒推值取其后繼節(jié)點最終確定的倒推值中最大的一個倒推值.極小值層的倒推值上界值永不上升,其倒推值取其后繼節(jié)點最終確定的倒推值中最小的一個倒推值.在一個分支上進行-剪枝的判斷規(guī)則:剪枝:若任一極小值層節(jié)點的值小于或等于它任一先輩極大值層節(jié)點的值,即(先輩層)≥(后繼層),則可終止該MIN層中這個MIN節(jié)點以下的搜索,并設(shè)置這個MIN節(jié)點的最終的倒推值為.(位置:MIN層的剪枝)剪枝:若任一極大值層節(jié)點的值大于或等于它任一先輩極小值層節(jié)點的值,即(后繼層)≥(先輩層),則可終止該MAX層中這個MAX節(jié)點以下的搜索,并設(shè)置這個MAX節(jié)點的最終倒推值為.(位置:MAX層的剪枝)-過程:保存和值,且滿足條件時便進行剪枝,當初始節(jié)點的全部后繼節(jié)點的最終倒推值都給出時,過程即結(jié)束,而最好的優(yōu)先走步就是走向具有最高倒推值的那個后繼節(jié)點.比較是在極大值層節(jié)點和極小值層節(jié)點間進行的(非直系).比較時是與先輩層節(jié)點(已經(jīng)有了值的那些節(jié)點),不僅限于父輩.只有一個節(jié)點的值固定以后,其值才能夠向其父節(jié)點傳遞.-剪枝搜索得到的最佳走步與極大極小方法得到的結(jié)果一致,但效率會提高.生成搜索圖和剪枝過程同時進行.注意幾個問題:⑴0≤0(2)(3)5(4)=0(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論