廣度優(yōu)先搜索算法

廣度優(yōu)先搜索算法

ID:41325885

大小:206.01 KB

頁數(shù):15頁

時間:2019-08-22

廣度優(yōu)先搜索算法_第1頁
廣度優(yōu)先搜索算法_第2頁
廣度優(yōu)先搜索算法_第3頁
廣度優(yōu)先搜索算法_第4頁
廣度優(yōu)先搜索算法_第5頁
資源描述:

《廣度優(yōu)先搜索算法》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、廣度優(yōu)先搜索算法例八數(shù)碼難題。在3*3的棋盤上,擺有八個棋子,每個棋子上標(biāo)有1至8的某一數(shù)字。棋盤中留有一個空格。空格周圍的棋子可以移到空格中。要求解的問題是,給出一種初始布局[初始狀態(tài)]和目標(biāo)布局[目標(biāo)狀態(tài)],找到一種移動的方法,實現(xiàn)從初始布局到目標(biāo)布局的轉(zhuǎn)變。2831647512384765283164705283164075283164750283104765283064175283014765203184765283140765283164750083264175283604175083214765283714065280143765283145760283106754283163

2、754……………………………………………………………………綜合數(shù)據(jù)庫typenode=recordch:array[1..3,1..3]ofbyte;si,sj:byte;{空格的坐標(biāo)}pnt,dep:word;{父節(jié)點(diǎn)和深度}end;Vardata:array[1..2600]ofnode;temp:node;產(chǎn)生式規(guī)則:4條,空格向上,下,左,右四個方向移動生成結(jié)點(diǎn)的條件:(1)新狀態(tài)不出界(2)和已生成結(jié)點(diǎn)不重復(fù)ni:=temp.si+di[k];nj:=temp.sj+dj[k];withtempdobeginch[si,sj]:=ch[ni,nj];ch[ni,nj]:=0;si

3、:=ni;sj:=nj;pnt:=head;dep:=dep+1;end;r1234方向左上右下di0-101dj-1010搜索策略(BFS)框圖:初始head=0Tail=0初始化INIT;初始結(jié)點(diǎn)入隊結(jié)點(diǎn)出隊out(temp1)temp←temp1change(temp)Forr:=1to4doCheck(temp)andnot(dupe(temp))ynIn(temp)Temp=goalynPrint{打印}Exit{退出}Untilhead=tail練習(xí):有兩個無刻度標(biāo)志的水壺,分別可裝5升水和2升水,設(shè)另有一水缸,可用來向水壺灌水或倒出水,兩水壺間,水也可以相互傾灌。已知5升壺為

4、滿壺,2升壺為空壺。問如何通過倒水或灌水操作,用最少步數(shù)能在2升壺中量出1升水來。編一程序解決問題。如圖是六個城市之間道路聯(lián)系的示意圖,連線表示兩城市間有道路相通,連線旁的數(shù)字表示路程。請編程序,由計算機(jī)找到從C1到C6的一條路徑及路程總長度,要求求出經(jīng)過城市最少的解和路程總長度最少的解。C63448492264C1C2C5C4C3綜合數(shù)據(jù)庫typenode=recordcity:integer;{城市編號}flag:setof[1..6];{到根結(jié)點(diǎn)的路徑}pnt:integer;{父節(jié)點(diǎn)}end;Vardata:array[1..1000]ofnode;temp:node;產(chǎn)生式規(guī)則:

5、5條,向R(R=2--6)城市移動生成結(jié)點(diǎn)的條件:(1)城市R不在已走路徑中(not(Rindata[head].flag))(2)當(dāng)前城市到R有路(link[x,r]>0)Data[temp].city:=R;Data[temp].flag:=Data[temp].flag+[R];Data[temp].pnt:=head;搜索策略(BFS)框圖:初始head=0Tail=0初始化INIT;初始結(jié)點(diǎn)入隊結(jié)點(diǎn)出隊out(temp)temp1←tempchange(temp)Forr:=2to6do條件1and條件2ynIn(temp)Temp=goalynPrint{打印}Exit{退出}

6、Untilhead=tail翻幣問題。有N個硬幣(N>=6),正面朝上排成一排,每次將5個硬幣翻過來放在原來位置,直到最后全部硬幣翻成反面朝上為止。編程讓計算機(jī)找了步數(shù)最少的翻法,并把翻幣過程及次數(shù)打印出來(用O表示正面,*表示反面)綜合數(shù)據(jù)庫typenode=recordr:integer;(由父節(jié)點(diǎn)翻了幾個正面朝上的硬幣得到當(dāng)前狀態(tài))num:integer;(當(dāng)前狀態(tài)中硬幣朝上的個數(shù))pnt:integer;(父節(jié)點(diǎn)位置)end;Vardata:array[1..1000]ofnode;temp:node;產(chǎn)生式規(guī)則:6條,即翻R個(R=0,1,2,3,4,5)正面朝上的硬幣生成結(jié)點(diǎn)的

7、條件:(1)當(dāng)前狀態(tài)有多于R個正面朝上的硬幣M>=R(M表示當(dāng)前結(jié)點(diǎn)正面朝上硬幣的個數(shù)),否則出現(xiàn)負(fù)數(shù)(2)當(dāng)前狀態(tài)有多于5-R個反面朝上的硬幣N-M>=5-R(N表示硬幣總數(shù)),例如當(dāng)全部是正面時,R只能取5,不能取0—4。這時N=M,只有R=5時,不等式才成立。(3)當(dāng)前狀態(tài)已存在狀態(tài)不重復(fù)新結(jié)點(diǎn)正面朝上硬幣個數(shù)=(M-R)+(5-R)搜索策略(BFS)框圖:初始head=0Tail=0初始化INIT;初始結(jié)點(diǎn)入隊結(jié)

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。