版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)驗(yàn):八數(shù)碼游戲問題(a)初始狀態(tài)(a)初始狀態(tài)圖(b)目標(biāo)狀態(tài)八數(shù)碼游戲一、八數(shù)碼游戲問題簡(jiǎn)介九宮排字問題(乂稱八數(shù)碼問題)是人工智能當(dāng)中有名的難題之一。問題是在3X3方格盤上,放有八個(gè)數(shù)碼,剩下第九個(gè)為空,每一空格其上下左右的數(shù)碼可移至空格。問題給定初始位置和目標(biāo)位置,要求通過一系列的數(shù)碼移動(dòng),將初始位置轉(zhuǎn)化為目標(biāo)位置。(a)初始狀態(tài)(a)初始狀態(tài)(b)目標(biāo)狀態(tài)二、實(shí)驗(yàn)?zāi)康?熟悉人工智能系統(tǒng)中的問題求解過程;.熟悉狀態(tài)空間的盲目搜索和啟發(fā)式搜索算法的應(yīng)用;.熟悉對(duì)八數(shù)碼問題的建模、求解及編程語(yǔ)言的應(yīng)用。三、實(shí)驗(yàn)的思路八數(shù)碼問題:在3X3的方格棋盤上,擺放著1到8這八個(gè)數(shù)碼,有1個(gè)方格是空的,其初始狀態(tài)如圖1所示,要求對(duì)空格執(zhí)行空格左移、空格右移、空格上移和空格下移這四個(gè)操作使得棋盤從初始狀態(tài)到目標(biāo)狀態(tài)。例如:圖1八數(shù)碼問題示意圖數(shù)碼結(jié)構(gòu)體數(shù)碼結(jié)構(gòu)體typedefstnictnode(intfonn[N][N];intevalue;intudirec;右stmctnode"parent;}Graph;Graph*Qu[MAX];〃隊(duì)歹ljGraph*St[MAX];〃堆棧.啟發(fā)函數(shù)設(shè)定由八數(shù)碼問題的部分狀態(tài)圖可以看出,從初始節(jié)點(diǎn)開始,在通向目標(biāo)節(jié)點(diǎn)的路徑上,各節(jié)點(diǎn)的數(shù)碼格局同目標(biāo)節(jié)點(diǎn)相比較,其數(shù)碼不同的位置個(gè)數(shù)在逐漸減少,最后為零,因此可以把數(shù)碼不同的位置個(gè)數(shù)作為標(biāo)志一個(gè)節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)距離遠(yuǎn)近的一個(gè)啟發(fā)性信息,利用這個(gè)信息來擴(kuò)展節(jié)點(diǎn)的選擇,減少搜索范圍,提高搜索速度。.搜索過程:(搜索采用廣度搜索方式,利用待處理隊(duì)列輔助,逐層搜索(跳過劣質(zhì)節(jié)點(diǎn)))a、把初始數(shù)碼組壓入隊(duì)列;b、從隊(duì)列中取出一個(gè)數(shù)碼組節(jié)點(diǎn);c、擴(kuò)展子節(jié)點(diǎn),即從上下左右四個(gè)方向移動(dòng)空格,生成相應(yīng)子節(jié)點(diǎn):d、對(duì)子節(jié)點(diǎn)數(shù)碼組作評(píng)估,是否為優(yōu)越節(jié)點(diǎn),即其評(píng)估值是否小于等于其父節(jié)點(diǎn)加一,是則將其壓入隊(duì),否則拋棄。e、判斷壓入隊(duì)的子節(jié)點(diǎn)數(shù)碼組(優(yōu)越點(diǎn))的評(píng)估值,為零則表示搜索完成,退出搜索;f、跳到步驟2;四、數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)//八數(shù)碼結(jié)構(gòu)體〃數(shù)碼組〃評(píng)估值,差距〃所屏蔽方向,防止往回推到上一狀態(tài),1上2下3左4〃父節(jié)點(diǎn)起始五、實(shí)驗(yàn)過程及代碼#mclude<stdio.h>} 〃設(shè)計(jì)了搜索深度范闈,防止隊(duì)列內(nèi)存越界#include<stdlib.h>#include<tiine.h>defineN3〃數(shù)碼組大小defineMax_Step50〃最大搜索深度defineMAX50typedefstinctnode//八數(shù)碼結(jié)構(gòu)體(intform[N][N];〃數(shù)碼組intevahie〃評(píng)估值intudirect;〃所屏蔽方向,防止往回推到上已狀態(tài),1上2下3左4右strnctnode*parent;〃父節(jié)點(diǎn)}Graph;Giaph*Qu[MAX];//隊(duì)歹ijGiaph*St[MAX];〃堆棧〃/〃〃〃打印數(shù)碼組voidPrint(Graph*The_graph)(mtij;if(The_giaph=NULL)printf(“圖為空\(chéng)n");else(pnntfC 3)for(i=0;i<N;i++)(prin—for(j=0;j<N;j++)(piintf("%d\t\The_graph->form國(guó)Ij]);〃遍歷打印}pniitf(n\t|\nH);}pniitf(n|\t\t\t差距:%d\t|\n,The_graph->evalue);//差距顯示pnntfC 3)/〃/〃/〃評(píng)價(jià)函數(shù)mtEvaluate(Graph*The_gi-aph,Graph*End_graph)(intvalute=O;//差E巨數(shù)mtij;fbr(i=O;i<N;i-H-)(for(j=0;j<N;j++)(if(The_graph->fbi-m[i]|j]!=End_gi-apli->fonn[i][j])(valute++;))}The_giaph->evalue=xralute;returnvalute;}〃//〃/〃移動(dòng)數(shù)碼組Giaph*Move(Giaph*Tlie_gi-aph,mtDirect,intCreatNew_graph)(Graph*New_graph;mtHasGetBlank=O;〃是否獲取空格位置intAbleMove=1是否可移動(dòng)intfor(i=0;i<N;i++)〃獲取空格坐標(biāo)ij(for(j=0;j<N;j++)(if(The_graph->fbnn[i][j]=0)(HasGetBlaiik=l;break;))if(HasGetBlank=l)break;}〃printf("空格位S:%d,%d\nH,i,j);t_EU=J;〃移動(dòng)空格switch(Direct)(case1://_Etj-sif(t_i<0)AbleMove=0;break;case2://Ft_i++;if(t_i>=N)AbleMove=0;break;case3://左if(tJ<0)AbleMove=0;break;case4:〃右tj++;if(tj>=N)AbleMove=0;break;)if(AbleMove==0)〃不能移動(dòng)則返回原節(jié)點(diǎn)(returnThe_graph;}if(CreatNew_gi'aph=1)(New_graph=(Graph*)malloc(sizeof(Graph));//生成節(jié)點(diǎn)for(x=0;x<N;x-H-)(fdr(y=O;y<N;y-H-)(New_gi,aph->fbnn[x][y]=The_graph->fonn[x][y]y/fi制數(shù)碼組))}elseNew_graph=Tlie_gi-aph;)〃移動(dòng)后New_graph->fbmi[i][j]=New_gi-aph->fbnn[t_i][tj];New_graph->fdmi[t_i][tJ]=0;//pnntf("移動(dòng)產(chǎn)生的新圖M");〃Print(New_graph);returnNew_graph;)///〃〃〃搜索函數(shù)Gi-aph*Search(Graph*Begm,Graph*End){Graph*gl,*g2,*g;intStep=O〃深度intDirect=O;〃方向inti;intfront,rear;fiont=i-eai--l-J/隊(duì)列初始化g=NULL;rear++;〃入隊(duì)Qu[rear]=Begin;while(rear!=fi*ont)〃隊(duì)列不空{(diào)fh)nt++;//出隊(duì)gl=Qu[front];//printf("開始第%d個(gè)圖M:fixmt);//Pimt(gl);for(i=1;iv=4;i++)〃分別從四個(gè)方向推導(dǎo)出新子節(jié)點(diǎn)(Direct=i;if(Du-ect=g1-Xidirect)〃跳過屏蔽方向continue;g2=Move(gl,Direct,1);〃移動(dòng)數(shù)碼組if(g2!=gl)〃數(shù)碼組是否可以移動(dòng)(〃可以移動(dòng)Evahiate(g2,End);〃評(píng)價(jià)新的節(jié)點(diǎn)〃prmtf("開始產(chǎn)生的第%d個(gè)圖//Piiiit(g2);if(g2->evalue<=gl->evalue+1)〃是優(yōu)越節(jié)點(diǎn)g2->pai-ent=gl;〃移動(dòng)空格switch(Direct)〃設(shè)置屏蔽方向,防止往回推(case1://Jtg2->udii'ect=2;break;case2:〃下g2->udii'ect=l;break;case3:〃左g2->udiiect=4;break;case4:〃右g2->udii'ect=3;break;)rear4-+;Qu[rear]=g2;〃存儲(chǔ)節(jié)點(diǎn)到待處理隊(duì)列if(g2->evalue==0)〃為0則搜索完成(g=g2;//i=5;break;)}else{fiee(g2);//拋棄劣質(zhì)節(jié)點(diǎn)g2=NULL;})}if(g!=NULL)〃為0則搜索完成(if(g->evalue==O)break;Step++〃統(tǒng)計(jì)深度if(Step>Max_Step)(break;}}retunig;}mtmam(mtargc,constchar*argv口)(//insertcodehere...GraphBegm_graph={{{2,8,3},{1,6,4},{7,0,5}},0ANULL);/*9GraphBegm_graph={{{2,8,3},{l,0,4},{7,6,5}},0ANULL);GraphBegm_graph={{{2,0,l},{4,6,5},{3,7,8}},0ANULL);*/〃目標(biāo)數(shù)碼組GraphEnd_graph={{{1,2,3},{8,O,4},{7,6,5}},OANULL);Evaluate(&Begin_gi,aph,&End_graph);〃對(duì)初始的數(shù)碼組評(píng)價(jià)pnntf("初始數(shù)碼組:\n”);Pnnt(&Begm_graph);pnntf("目標(biāo)數(shù)碼組:\n”);Pnnt(&End_graph);Graph*G?*P:inttop=-l;〃圖搜索G=Search(&Begm_graph,&End_graph);〃打印if(G){〃把路徑倒序P=G;〃壓棧while(P!=NULL)(top++;St[top]=P;P=P->parent;)pnntf(yvvvvvvvvvvvvvv搜索結(jié)^????????\iiH);〃彈棧打印while(top>-l)(P=St[top];top--;Prmt(P);)pniitf(,,<????????^Mc???>?????>\iin);}else{prmtf("搜索不到結(jié)果,深度為%d'uV,Max_Step);〃設(shè)計(jì)搜索深度范圍主要是防止隊(duì)列內(nèi)存越界)retiim0;六、實(shí)驗(yàn)結(jié)果C-O227863860fi3803721721717071f86137342.345差距:4342.345313453434□差距:eex
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 我國(guó)商業(yè)銀行中間業(yè)務(wù)風(fēng)險(xiǎn)控制:?jiǎn)栴}與對(duì)策
- 2026浙江紹興興工科技有限公司招聘勞務(wù)派遣人員1人備考題庫(kù)及一套參考答案詳解
- 2026貴州黔南州惠水縣引進(jìn)體育人才4人備考題庫(kù)有完整答案詳解
- 2026貴州黔東南州鎮(zhèn)遠(yuǎn)縣第一批城鎮(zhèn)公益性崗位人員招聘50人備考題庫(kù)及參考答案詳解1套
- 地面鋪設(shè)地毯工程施工方案及工藝方法
- 2026年MLIS圖書情報(bào)教育研究能力評(píng)估試卷
- 檢驗(yàn)科試劑耗材管理制度
- 托幼機(jī)構(gòu)日常清潔及預(yù)防性消毒要求
- 2026湖南省直事業(yè)單位招聘1人備考題庫(kù)完整參考答案詳解
- 2025年體檢報(bào)告解讀與健康指導(dǎo)考核試題及答案
- 亞馬遜運(yùn)營(yíng)全知識(shí)培訓(xùn)
- 夫妻財(cái)產(chǎn)分割協(xié)議書范文范本下載
- JJG 692-2010無(wú)創(chuàng)自動(dòng)測(cè)量血壓計(jì)
- 中國(guó)的大好河山
- 甘肅省安全員A證考試題庫(kù)及答案
- 離婚登記申請(qǐng)受理回執(zhí)單模板
- 特技演員聘用合同
- 第25課《活板》同步練習(xí)(含答案)
- 數(shù)學(xué)中考復(fù)習(xí)資料四邊形
- 壓力容器磁粉檢測(cè)通用工藝規(guī)程
- 國(guó)家開放大學(xué)《基礎(chǔ)教育課程改革專題》形考任務(wù)(13)試題及答案解析
評(píng)論
0/150
提交評(píng)論