人工智能猴子香蕉问题_第1页
人工智能猴子香蕉问题_第2页
人工智能猴子香蕉问题_第3页
人工智能猴子香蕉问题_第4页
人工智能猴子香蕉问题_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 问题描述在一个房间内有一只猴子(可把这只猴子看做一个机器人)、一个箱子和一束香 蕉。香蕉挂在天花板下方,但猴子的高度不足以碰到它。那么这只猴子怎样才能 摘到香蕉呢?图1表示出猴子、香蕉和箱子在房间内的相对位置。用四元表列(W,x,Y,z)来表示这个问题的状态。其中,W-猴子的水平位置X当猴子在箱子顶上时取x=1;否则取x=0丫-箱子的水平位置Z当猴子摘到香蕉时取z=1;否则取z=0这个问题中的操作(算符)如下:1、goto(U)猴子走到水平位置U,表示为Goto (U)(W, 0, 丫, Z)(U , 0 , 丫 , Z)即把状态(W, 0, 丫 , Z)变换为状态(U , 0, 丫 ,

2、 Z)。2、Pushbox(V)猴子把箱子推到水平位置V,即有Pushbox (V)(W, 0, W, Z)(V , 0 , V , Z )条件:猴子与箱子必须在同一位置上,并且,猴子不是在箱子顶上。应当注意的是,要应用算符Pushbox(V),就要求产生式规则的左边,猴子与 箱子必须在同一位置上,并且,猴子不是在箱子顶上。这种强加于操作的适用性 条件,叫做产生式规则的先决条件3、climbbox猴子爬上箱顶,即有Climbbox(W, 0 , W , Z)(W , 1 , W , Z)条件:猴子和箱子应当在同一位置上,而且猴子不在箱顶上。4、grasp猴子摘到香蕉,即有Grasp(c , 1

3、 , c , 0)(c , 1 , c , 1)条件:猴子和箱子都在位置 c上,并且猴子已在箱子顶上。求解过程 令初始状态为(a,0,b,0)。这时,goto(U)是唯一适用的操作,并导致下一状态(U, 0 , b,0)。现在有3个适用的操作,即goto(U) , pushbox(V)和 climbbox(若U=b)。其中,c是香蕉正下方的地板位置,该初始状态变换为目标状 态的操作序列为: goto(b),pushbox(c),climbbox,grasp应当说明的是,在这种情况下,算符(操作)的适用性及作用均由产生式规则表 示。例如,对于规则(2),只有当算符Pushbox(V)的先决条件,

4、即猴子与箱子 在同一位置上而且猴子不在箱顶上这些条件得到满足时,算符pushbox(V)才是适用的。这一操作算符的 作用是猴子把箱子推到位置V。在这一表示中,目标状态 的集合可由任何最后元素为1的表列来描述。2. 源代码 #i ncludevstdio.h#i ncludevstdlib.h#in cludeint W; /*W 猴子的水平位置*/int X; /*x 当猴子在箱子顶上时取 x=1;否则取x=0*/int c; /*c-是香蕉正下方的地板位置*/int Y; /*Y 箱子的水平位置*/int乙/*z 当猴子摘到香蕉时取z=1;否则取z=0*/int ascll=25;void

5、Goto()/*(W,0,Y,z)(U,0,Y,z)*/*猴子从水平位置 W走到箱子的水平位置丫1. 猴子在箱子的左边(WY)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);prin tf(State(%d,%d,%d,%d)n,i,x,Y,z);void P ushBox()/*猴子把箱子(箱子的水平位置丫)推到水平位置c处(香蕉正下方的地板位置)1. 箱子在香蕉的左边(Yc

6、)*/int i;if(Y=c)printf(n香蕉就在箱子的正上方.n);elseprintf(n猴子把箱子(箱子的水平位置Y(%d)推到香蕉正下方的地板位置c(%d)n,Y,c);prin tf(n W x Y zn);if(Y=c)for(i=Y;i=c;i-)if(i!=Y) prin tf( %cn,ascll); prin tf(State(%d,%d,%d,%d)n,i,x,Y,z); W=c;void ClimbBox()/*猴子爬上箱顶*/printf(n 猴子爬上箱顶.n); printf(n W x Y zn);prin tf(State(%d,%d,%d,%d)n,W,

7、x,Y,z); x=1;prin tf( %cn,ascll);prin tf(State(%d,%d,%d,%d)n,W,x,Y,z); void Gras p()/*猴子摘到香蕉*/printf(n 猴子摘到香蕉.n); printf(n W x Y zn);prin tf(State(%d,%d,%d,%d)n,W,x,Y,z); z=1;prin tf( %cn,ascll);prin tf(State(%d,%d,%d,%d)n,W,x,Y,z); int mai n()int i=0,select,flag=0;while(true)x=0;z=0;if(i!=0)prin tf(

8、n);system( Pause);system(cls);信电学院 计本二班 郁春菊20060502103*nn);prin tf (*for(i=1;i=10;i+)n); if(i=1|i=10)printf(else if(i=3)prin tf(|人工智能之猴子与香蕉|n); else if(i=6)printf(| 1.用户初始化参数|n); printf(| 2.系统随机初始化参数|n); printf(| 3.退 出系统|n); 人工智能算法 *|n); else if(i=9)prin tf (|*else prin tf(| |n); /* printf(State:初始状

9、态 state(W,x,Y,z);*/printf(请选择(操作:1/2/3):);sca nf(%d,&select);if(select = 3)system(cls);return 0;prin tf(n);system( Pause);system(cls);if(select=1)n); printf(n请输入猴子用户初始化参数printf(n的水平位置W:);sea nf(%d,&W);printf(n请输入箱子的水平位置丫:);sea nf(%d, &丫);printf(n请输入香蕉正下方的地板位置e:);sea nf(%d,&c);else if(seleet = 2)flag

10、=1;sran d(time(NULL);n); W=ran d()%10;printf(n系统随机初始化参数printf(n猴子的水平位置 W: %dn,W);Y=ra nd()%10;printf(n箱子的水平位置丫: %dn,Y);e=ra nd()%10;printf(n香蕉正下方的地板位置e: %dn,e);if(W=Y)if(flag=0)printf(n猴子是否在箱子顶上?(x 当猴子在箱子顶上时取 x=1;否则取x=0) x=);scan f(%d, &x);if(x!=0)x=1;elsex=ra nd()%2;printf(n猴子是否在箱子顶上?(x 当猴子在箱子顶上时取

11、x=1;否则取x=0) x=%dn,x);if(x=1 &W=e)/*猴子在箱子上(x=1),而且香蕉就在头顶(W=e)*/printf(n猴子在箱子上(x=1),而且香蕉就在头顶(W=e)n);else if(x=1)/*猴子在箱子上(x=1),但香蕉不在头顶(W=c)*/printf(n猴子从箱子上跳下.n);x=0;/*猴子与箱子必须在同一位置上,并且,猴子不是在箱子顶上PushBox();/*猴子和箱子应当在同一位置上,而且猴子不在箱顶上*/*/ClimbBoxO;else /*猴子从水平位置 W走到箱子的水平位置 YGoto();/*猴子与箱子必须在同一位置上,并且,猴子不是在箱子顶

12、上PushBoxO;/*猴子和箱子应当在同一位置上,而且猴子不在箱顶上ClimbBox();Gras p(); printf(n猴子正在吃香蕉nn);return 0;3.程序分析结果*/*Cz VOncmE-ii-lf and.兮e七* .ii 呂nist eh! dt VDCpp 1. c xe圣=三巨旦日三人工程能壬与香蕉12 3S. 轴聖 户繃出*/ 亠人工智能舁症请岡靱楝作=八1-|*C; VDocuaent * and SettlAcvVAdn.xnxvtKatccVJJebacVCppl. xe*U X V 2:ta(eet t上箱顶r ti“丄2小正在吃香蕉任S雌续4.个人总结通过这次课程设计,让我对 C这门语言又有了一个新的了解,尽管在各个方面还 有很多的不足,但我会

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论