人工智能 猴子香蕉問題_第1頁
人工智能 猴子香蕉問題_第2頁
人工智能 猴子香蕉問題_第3頁
人工智能 猴子香蕉問題_第4頁
人工智能 猴子香蕉問題_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1.問題描述在一個房間內(nèi)有一只猴子(可把這只猴子看做一個機器人)、一個箱子和一束香蕉。 香蕉掛在天花板下方,但猴子的高度不足以碰到它。那么這只猴子怎樣才能摘到香蕉呢? 圖1表示出猴子、香蕉和箱子在房間內(nèi)的相對位置。用四元表列(W,x,Y,z)來表示這個問題的狀態(tài)。其中,W猴子的水平位置x當(dāng)猴子在箱子頂上時取x=1;否則取x=0Y箱子的水平位置z當(dāng)猴子摘到香蕉時取z=1;否則取z=0這個問題中的操作(算符)如下:1、goto(U)猴子走到水平位置U,表示為Goto (U)(W,0,Y,z) ->(U ,0 ,Y ,z)即把狀態(tài)(W,0,Y,z)變換為狀態(tài)(U,0,Y,z)。2、pushbo

2、x(V)猴子把箱子推到水平位置V,即有Pushbox (V)(W,0,W,z)->(V ,0 ,V ,z )條件:猴子與箱子必須在同一位置上,并且,猴子不是在箱子頂上。應(yīng)當(dāng)注意的是,要應(yīng)用算符 pushbox(V),就要求 產(chǎn)生式規(guī)則的左邊,猴子與箱子必須在同一位置上,并且,猴子不是在箱子頂上。這種強加于操作的適用性條件,叫做產(chǎn)生式規(guī)則的先決條件3、climbbox猴子爬上箱頂,即有Climbbox(W,0,W,z)->(W,1,W,z)條件:猴子和箱子應(yīng)當(dāng)在同一位置上,而且猴子不在箱頂上。4、grasp猴子摘到香蕉,即有Grasp(c,1,c,0) ->(c,1,c,1)條

3、件:猴子和箱子都在位置c上,并且猴子已在箱子頂上。求解過程 令初始狀態(tài)為(a,0,b,0)。這時,goto(U)是唯一適用的操作,并導(dǎo)致下一狀態(tài)(U,0,b,0)?,F(xiàn)在有3個適用的操作,即goto(U),pushbox(V)和climbbox(若U=b)。其中,c是香蕉正下方的地板位置,該初始狀態(tài)變換為目標(biāo)狀態(tài)的操作序列為:goto(b),pushbox(c),climbbox,grasp應(yīng)當(dāng)說明的是,在這種情況下,算符(操作)的適用性及作用均由產(chǎn)生式規(guī)則表示。例如,對于規(guī)則(2),只有當(dāng)算符pushbox(V)的先決條件,即猴子與箱子在同一位置上而且猴子不在箱頂上這些條件得到滿足時,算符pu

4、shbox(V)才是適用的。這一操作算符的 作用是猴子把箱子推到位置。在這一表示中,目標(biāo)狀態(tài)的集合可由任何最后元素為1的表列來描述。2. 源代碼#include<stdio.h>#include<stdlib.h>#include<time.h>int W; /*W猴子的水平位置*/int x; /*x當(dāng)猴子在箱子頂上時取x=1;否則取x=0*/int c; /*c-是香蕉正下方的地板位置*/int Y; /*Y箱子的水平位置*/int z; /*z當(dāng)猴子摘到香蕉時取z=1;否則取z=0*/int ascll=25;void Goto()/*(W,0,Y,z

5、)->(U,0,Y,z)*/*猴子從水平位置W走到箱子的水平位置Y1.猴子在箱子的左邊(W<Y)2.猴子在箱子的右邊(W>Y)3.猴子在箱子上(x=1時)*/int i;printf("n猴子從水平位置W(%d)走到箱子Y(%d)處.n",W,Y); printf("n W x Y zn");if(W<=Y)for(i=W;i<=Y;i+)if(i!=W)printf(" %cn",ascll);printf("State(%d,%d,%d,%d)n",i,x,Y,z);elsefor

6、(i=W;i>=Y;i-)if(i!=W)printf(" %cn",ascll);printf("State(%d,%d,%d,%d)n",i,x,Y,z);void PushBox()/*猴子把箱子(箱子的水平位置Y)推到水平位置c處(香蕉正下方的地板位置)1.箱子在香蕉的左邊(Y<c)2.箱子在香蕉的右邊(Y>c)*/int i;if(Y=c)printf("n香蕉就在箱子的正上方.n");elseprintf("n猴子把箱子(箱子的水平位置Y(%d)推到香蕉正下方的地板位置c(%d)n",

7、Y,c);printf("n W x Y zn");if(Y<=c)for(i=Y;i<=c;i+)if(i!=Y)printf(" %cn",ascll); printf("State(%d,%d,%d,%d)n",i,x,Y,z); elsefor(i=Y;i>=c;i-)if(i!=Y)printf(" %cn",ascll); printf("State(%d,%d,%d,%d)n",i,x,Y,z); W=c;void ClimbBox()/*猴子爬上箱頂*/prin

8、tf("n猴子爬上箱頂.n"); printf("n W x Y zn");printf("State(%d,%d,%d,%d)n",W,x,Y,z); x=1;printf(" %cn",ascll);printf("State(%d,%d,%d,%d)n",W,x,Y,z); void Grasp()/*猴子摘到香蕉*/printf("n猴子摘到香蕉.n"); printf("n W x Y zn");printf("State(%d,%d,

9、%d,%d)n",W,x,Y,z); z=1;printf(" %cn",ascll);printf("State(%d,%d,%d,%d)n",W,x,Y,z); int main()int i=0,select,flag=0;while(true)x=0;z=0;if(i!=0)printf("n");system("Pause");system("cls");printf("*信電學(xué)院 計本二班 郁春菊 20060502103*nn"); for(i=1;i&

10、lt;=10;i+)if(i=1|i=10)printf("-n"); else if(i=3)printf("| 人工智能之猴子與香蕉 |n"); else if(i=6)printf("| 1.用戶初始化參數(shù) |n"); printf("| 2.系統(tǒng)隨機初始化參數(shù) |n"); printf("| 3.退出系統(tǒng) |n"); else if(i=9)printf("|* 人工智能算法 *|n"); else printf("| |n"); /* print

11、f("State:初始狀態(tài)state(W,x,Y,z)");*/printf("請選擇(操作:1/2/3) :");scanf("%d",&select);if(select = 3)system("cls");return 0;printf("n");system("Pause");system("cls");if(select=1)printf("n-用戶初始化參數(shù)-n"); printf("n請輸入猴子的水平位置

12、 W: ");scanf("%d",&W);printf("n請輸入箱子的水平位置 Y: ");scanf("%d",&Y);printf("n請輸入香蕉正下方的地板位置 c: ");scanf("%d",&c);else if(select = 2)flag=1;srand(time(NULL);printf("n-系統(tǒng)隨機初始化參數(shù)-n"); W=rand()%10;printf("n猴子的水平位置 W: %dn",W

13、);Y=rand()%10;printf("n箱子的水平位置 Y: %dn",Y);c=rand()%10;printf("n香蕉正下方的地板位置 c: %dn",c);if(W=Y)if(flag=0)printf("n猴子是否在箱子頂上?(x當(dāng)猴子在箱子頂上時取x=1;否則取x=0) x= "); scanf("%d",&x);if(x!=0)x=1;elsex=rand()%2;printf("n猴子是否在箱子頂上?(x當(dāng)猴子在箱子頂上時取x=1;否則取x=0) x= %dn",x

14、);if(x=1&&W=c)/*猴子在箱子上(x=1),而且香蕉就在頭頂(W=c)*/printf("n猴子在箱子上(x=1),而且香蕉就在頭頂(W=c).n");else if(x=1)/*猴子在箱子上(x=1),但香蕉不在頭頂(W=c)*/printf("n猴子從箱子上跳下.n");x=0;/*猴子與箱子必須在同一位置上,并且,猴子不是在箱子頂上*/PushBox();/*猴子和箱子應(yīng)當(dāng)在同一位置上,而且猴子不在箱頂上*/ClimbBox();else /*猴子從水平位置W走到箱子的水平位置Y*/Goto();/*猴子與箱子必須在同一位置上,并且,猴子不是在箱子頂上*/PushBox();/*猴子和箱子應(yīng)當(dāng)在同一位置上,而且猴子不在箱頂上

溫馨提示

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

評論

0/150

提交評論