人工智能-猴子香蕉问题.doc

人工智能-猴子香蕉问题.doc

ID:55506658

大小:109.00 KB

页数:8页

时间:2020-05-15

人工智能-猴子香蕉问题.doc_第1页
人工智能-猴子香蕉问题.doc_第2页
人工智能-猴子香蕉问题.doc_第3页
人工智能-猴子香蕉问题.doc_第4页
人工智能-猴子香蕉问题.doc_第5页
资源描述:

《人工智能-猴子香蕉问题.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

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

2、----------->(U,0,Y,z)即把状态(W,0,Y,z)变换为状态(U,0,Y,z)。2、pushbox(V)猴子把箱子推到水平位置V,即有Pushbox(V)(W,0,W,z)---------------->(V,0,V,z)条件:猴子与箱子必须在同一位置上,并且,猴子不是在箱子顶上。应当注意的是,要应用算符pushbox(V),就要求产生式规则的左边,猴子与箱子必须在同一位置上,并且,猴子不是在箱子顶上。这种强加于操作的适用性条件,叫做产生式规则的先决条件3、climbbox猴子爬上箱顶,即有C

3、limbbox  (W,0,W,z)------------------>(W,1,W,z)条件:猴子和箱子应当在同一位置上,而且猴子不在箱顶上。4、grasp猴子摘到香蕉,即有Grasp (c,1,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

4、)。其中,c是香蕉正下方的地板位置,该初始状态变换为目标状态的操作序列为:{goto(b),pushbox(c),climbbox,grasp}应当说明的是,在这种情况下,算符(操作)的适用性及作用均由产生式规则表示。例如,对于规则(2),只有当算符pushbox(V)的先决条件,即猴子与箱子在同一位置上而且猴子不在箱顶上这些条件得到满足时,算符pushbox(V)才是适用的。这一操作算符的作用是猴子把箱子推到位置v。在这一表示中,目标状态的集合可由任何最后元素为1的表列来描述。2.源代码#include

5、io.h>#include#includeintW; /*W-猴子的水平位置*/intx; /*x-当猴子在箱子顶上时取x=1;否则取x=0*/intc; /*c-是香蕉正下方的地板位置*/intY; /*Y-箱子的水平位置*/intz; /*z-当猴子摘到香蕉时取z=1;否则取z=0*/intascll=25;voidGoto(){ /*(W,0,Y,z)-------------->(U,0,Y,z)*/ /*猴子从水平位置W走到箱子的水平位置Y 1.猴子在箱子的左边(W<

6、Y) 2.猴子在箱子的右边(W>Y) 3.猴子在箱子上(x=1时) */ inti; printf("猴子从水平位置W(%d)走到箱子Y(%d)处......",W,Y); printf("    WxYz"); if(W<=Y){ for(i=W;i<=Y;i++){  if(i!=W)printf("        %c",ascll);  printf("State(%d,%d,%d,%d)",i,x,Y,z); } } else{ for(i=W;i>=Y;i--){  if(i!

7、=W)printf("        %c",ascll);  printf("State(%d,%d,%d,%d)",i,x,Y,z); } }}voidPushBox(){/*猴子把箱子(箱子的水平位置Y)推到水平位置c处(香蕉正下方的地板位置)1.箱子在香蕉的左边(Yc) */ inti; if(Y==c){ printf("香蕉就在箱子的正上方......"); } else{ printf("猴子把箱子(箱子的水平位置Y(%d))推到香蕉正下方的地板位

8、置c(%d)",Y,c); } printf("    WxYz"); if(Y<=c){ for(i=Y;i<=c;i++){  if(i!=Y)printf("        %c",ascll);  printf("State(%d,%d,%d,%d)",i,x,Y,z); } } else{ for(i=Y;i>=c;i--){  if(i!=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。