• 背景简介/问题描述

一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移箱子,攀登箱子等)。设房间里还有一只可被猴子移动的箱子,且猴子登上箱子时才能摘到香蕉,问猴子在某一状态下(设猴子位置为A,香蕉位置在B,箱子位置为C),如何行动可摘取到香蕉。

此问题的前提是猴子只有站在箱子上才能拿到香蕉,因此,需要首先让猴子找到箱子,再找到香蕉,并将箱子搬到香蕉下面。

  • 算法介绍

2.1 使用语义网络实现猴子摘香蕉的知识表示

2.2用java实现猴子摘香蕉

Monkey类:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

package rgznlab1;

public class monkey{

private final String position;

private boolean status;

public monkey(String position){

this.position = position;

this.status = false;

}

public String getPosition() {

return this.position;

}

public box move(box b,String newPosition) {

if(this.position.equals(b.getPosition())&&!this.status) {

System.out.println("猴子在"+this.position+"处把箱子推到了"+newPosition);

return new box(newPosition);

}return b;

}public void climb(box b) {

if(this.position.equals(b.getPosition())&&!this.status) {

this.status = true;

System.out.println("猴子在"+this.position+"处爬上了箱子");

}

}public void pick(banana b) {

if(this.status&&this.position.equals(b.getPosition())) {

System.out.println("猴子在"+this.position+"处摘到了香蕉");

}

}

Box类:

1

2

3

4

5

6

7

8

9

10

package rgznlab1;

public class box{

private final String position;

public box(String position){

this.position = position;

}public String getPosition() {

return this.position;

}

}

Banana类:

1

2

3

4

5

6

7

8

9

10

package rgznlab1;

public class banana{

private final String position;

public banana(String position){

this.position = position;

}public String getPosition() {

return this.position;

}

}

Main方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

package rgznlab1;

import java.util.Scanner;

public class main {

public static void main(String[] args) {

Scanner input=new Scanner(System.in);

System.out.println("请输入猴子位置");

String p1=input.next();

System.out.println("请输入箱子位置");

String p2=input.next();

System.out.println("请输入香蕉位置");

String p3=input.next();

monkey m = new monkey(p1);

box b = new box(p2);

banana bn = new banana(p3);

System.out.println("第一步:猴子移动到box处从"+m.getPosition()+"到"+b.getPosition());

m = new monkey(b.getPosition());

System.out.println("第二步:猴子推动box从"+b.getPosition()+"到banana处"+bn.getPosition());

b = m.move(b, bn.getPosition());

System.out.println("第三步:猴子爬上"+b.getPosition()+"处的box");

m.climb(b);

System.out.println("第四步:猴子摘到香蕉");

m.pick(bn);

}

}

  • 算法实现

3.1 实验结果

运行结果如图所示:

  • 讨论及结论

本次实验,我同小组成员较好地完成了猴子摘香蕉的几种不同的知识表示的实现,并且通过代码层面的实现使我对知识有了更深的了解,也更加体会到猴子摘香蕉这一典型问题的价值与意义。

参考文献

JAVA语言写的人工智能小实验——猴子摘香蕉相关推荐

  1. C#编写简单的人工智能课程的实验-猴子摘香蕉

    1.实验内容 用C#,编写完成了使用者分别输入猴子.香蕉.箱子所在的位置,输出完整的猴子摘香蕉的过程. 2.大致逻辑 首先由使用者输入猴子.箱子和香蕉所在的位置,首先判断猴子和箱子是否在同一位置,若不 ...

  2. 人工智能实验 猴子摘香蕉

    题目意思: 猴子定义了4个状态  空手移动,推箱子,爬箱子,摘香蕉 用 (w,x,y,z)描述 w定义了猴子位置 x为1表示猴子在箱子上,0表示不在箱子上 y表示箱子位置 z为1表示猴子摘到香蕉(结束 ...

  3. 人工智能实验——猴子摘香蕉python

    import random # 全局变量i i = 0 monkey = [] box = [] banana = [] monbox = [] getit = []def Monkey_goto(A ...

  4. 用python语言实现人工智能猴子摘香蕉的问题_人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次.docx...

    人工智能课内实验报告(8次)学 院: 自动化学院 班 级: 智能1501 姓 名: 刘少鹏(34) 学 号: 目 录课内实验1:猴子摘香蕉问题的VC编程实现--------1课内实验2:编程实现简单动 ...

  5. 用python语言实现人工智能猴子摘香蕉的问题_人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次 -...

    人工智能课内实验报告 (8次) 学 院:自动化学院 班 级: 智能1501 姓 名: 刘少鹏(34) 学 号:06153034 目 录 课内实验1:猴子摘香蕉问题的VC编程实现????????1 课内 ...

  6. 数据结构java实验 刘小晶_《数据结构实例解析与实验指导——Java语言描述》刘小晶著【摘要 书评 在线阅读】-苏宁易购图书...

    商品参数 作者: 刘小晶著 出版社:清华大学出版社 出版时间:2013-2-1 版次:1 印次:1 印刷时间:2013-2-1 字数:619000 页数:380 开本:16开 装帧:平装 ISBN:9 ...

  7. 【SC应用】【人工智能】Java实现猴子摘香蕉,动画显示

    人工智能课程实验一的任务,写出猴子摘香蕉问题的知识表示,并用代码实现推理过程 问题描述 一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移箱子,攀登箱子等).设房间里还有一 ...

  8. c++ 小游戏_C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目

    C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...

  9. java代码编写的文本特征提取_Test1 java语言写的特征提取源代码,有搞文字识别的可以下载一看,简单易学 Develop 274万源代码下载- www.pudn.com...

    文件名称: Test1下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 35 KB 上传时间: 2015-03-02 下载次数: 46 提 供 者: 常杰 详细说 ...

最新文章

  1. ldconfig及 LD_LIBRARY_PATH
  2. 阿里巴巴发布《2015移动安全漏洞年报》
  3. python掌握程度怎么判断-Python学到什么程度可以面试工作?
  4. 东南大学成贤学院计算机报名,东南大学成贤学院2017年9月计算机等级考试报名办法...
  5. 使用 Acegi 保护 Java 应用程序
  6. mysql 白皮书_mysql企业版 《 MySQL企业版中文白皮书 》.cn.doc
  7. 华三路由交换配置命令_华三路由器交换机配置命令
  8. GitHub---最简单的使用
  9. 基于c++的音乐播放器(1)
  10. connect()在UDP连接中的应用一例
  11. 数据结构与算法之优先队列
  12. 打开含avi格式视频文件的文件夹“死机”问题的解决
  13. DM8 Out of space,错误码 code = -523问题解决
  14. 巴斯勒相机的ip掩码_basler调相机规范步骤
  15. 最小二乘法(least squares)的曲线拟合(curve fitting)
  16. 微信小程序云开发--云存储的使用(一)
  17. 鼠标滚轮无法滚动处理、有滚动条但鼠标中间的滚轮滚动时页面不随之滚动
  18. 【Microarchitecture of Intel and AMD CPU】 9 Sandy Bridge and Ivy Bridge pipeline 【9.1~9.3】
  19. 1.2 cuda相关常见错误记录(不断更新)
  20. java简易计算器实验报告_Java 《Java 实现简单计算器》实验报告

热门文章

  1. 番外3法鲁的新女友——《地与光》
  2. ReactOS debug(调试)
  3. xycms后台拿shell
  4. smarty中定义变量
  5. 使用CMD满速下载百度云
  6. 网络安全 — SASE — Overview
  7. flutter 给icon图标添加阴影
  8. java jfinal_如何使用JFinal开发javaweb
  9. java写的注册机源码_MyEclipse6.5注册机源码
  10. 三层交换机配置OSPF动态路由