欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:58068594       资源大小:109KB        全文页数:8页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1.问题描述 在一个房间内有一只猴子(可把这只猴子看做一个机器人)、一个箱子和一束香蕉。香蕉挂在天花板下方,但猴子的高度不足以碰到它。那么这只猴子怎样才能摘到香蕉呢?图1表示出猴子、香蕉和箱子在房间内的相对位置。用四元表列(W,x,Y,z)来表示这个问题的状态。其中,W猴子的水平位置x当猴子在箱子顶上时取x=1;否则取x=0Y箱子的水平位置z当猴子摘到香蕉时取z=1;否则取z=0这个问题中的操作(算符)如下:1、goto(U)猴子走到水平位置U,表示为 Goto (U)(W,0,Y,z) ->(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猴子爬上箱顶,即有 Climbbox (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)。其中,c是香蕉正下方的地板位置,该初始状态变换为目标状态的操作序列为:goto(b),pushbox(c),climbbox,grasp应当说明的是,在这种情况下,算符(操作)的适用性及作用均由产生式规则表示。例如,对于规则(2),只有当算符pushbox(V)的先决条件,即猴子与箱子在同一位置上而且猴子不在箱顶上这些条件得到满足时,算符pushbox(V)才是适用的。这一操作算符的 作用是猴子把箱子推到位置。在这一表示中,目标状态的集合可由任何最后元素为1的表列来描述。2. 源代码#include<stdio.h>#include<stdlib.h>#include<time.h>int W;  /*W猴子的水平位置*/int x;  /*x当猴子在箱子顶上时取x=1;否则取x=0*/int c;  /*c-是香蕉正下方的地板位置*/int Y;  /*Y箱子的水平位置*/int z;  /*z当猴子摘到香蕉时取z=1;否则取z=0*/int ascll=25;void Goto() /*(W,0,Y,z)->(U,0,Y,z)*/  /*猴子从水平位置W走到箱子的水平位置Y 1.猴子在箱子的左边(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);    else  for(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");  else  printf("n猴子把箱子(箱子的水平位置Y(%d)推到香蕉正下方的地板位置c(%d)n",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);    else  for(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() /*猴子爬上箱顶*/ printf("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,%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("*信电学院  计本二班   郁春菊  200*nn");  for(i=1;i<=10;i+)   if(i=1|i=10)    printf("-n");      else if(i=3)    printf("|                  人工智能之猴子与香蕉                  |n");      else if(i=6)    printf("|                   1.用户初始化参数                     |n");    printf("|                   2.系统随机初始化参数                 |n");    printf("|                   3.退出系统                           |n");      else if(i=9)    printf("|*  人工智能算法 *|n");      else printf("|                                                        |n");     /* printf("State:初始状态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-用户初始化参数-n");   printf("n请输入猴子的水平位置 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-系统随机初始化参数-n");   W=rand()%10;   printf("n猴子的水平位置 W: %dn",W);   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当猴子在箱子顶上时取x=1;否则取x=0) x= ");    scanf("%d",&x);    if(x!=0)     x=1;       else    x=rand()%2;    printf("n猴子是否在箱子顶上?(x当猴子在箱子顶上时取x=1;否则取x=0) x= %dn",x);       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();   /*猴子和箱子应当在同一位置上,而且猴子不在箱顶上*/   ClimbBox();    else    /*猴子从水平位置W走到箱子的水平位置Y*/   Goto();   /*猴子与箱子必须在同一位置上,并且,猴子不是在箱子顶上*/   PushBox();   /*猴子和箱子应当在同一位置上,而且猴子不在箱顶上*/   ClimbBox();    Grasp();  printf("n猴子正在吃香蕉.nn");  return 0;3.程序分析结果4.个人总结通过这次课程设计,让我对C这门语言又有了一个新的了解,尽管在各个方面还有很多的不足,但我会再接再厉,在做这个猴子摘香蕉问题的时候,不懂的地方问了好几个同学,也知道了该怎么去实现它。遇到了问题逃避不是办法,要想办法去解决它才是我们该做的,只要给自己信心,相信自己可以做的到,那自己就一定能做的到。

    注意事项

    本文(人工智能-猴子香蕉问题.doc)为本站会员(美****子)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开