人工智能实验报告:知识表示方法及应用

上传人:suns****4568 文档编号:82596729 上传时间:2019-02-24 格式:DOCX 页数:15 大小:533.14KB
返回 下载 相关 举报
人工智能实验报告:知识表示方法及应用_第1页
第1页 / 共15页
人工智能实验报告:知识表示方法及应用_第2页
第2页 / 共15页
人工智能实验报告:知识表示方法及应用_第3页
第3页 / 共15页
人工智能实验报告:知识表示方法及应用_第4页
第4页 / 共15页
人工智能实验报告:知识表示方法及应用_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《人工智能实验报告:知识表示方法及应用》由会员分享,可在线阅读,更多相关《人工智能实验报告:知识表示方法及应用(15页珍藏版)》请在金锄头文库上搜索。

1、 人工智能 上机实验报告实验名称: 知识表示方法及应用 实验日期 2016年12月3日 1. 实验目的:(1) 在掌握状态空间搜索策略的基础上,理解知识表示的方法。(2) 能够应用知识表示方法,解决实际问题。2. 实验内容:(1) M-C问题描述有n个牧师和n个野人准备渡河,但只有一条能容纳c个人的小船,为了防止野人侵犯牧师,要求无论在何处,牧师的人数不得少于野人的人数(除非牧师人数为0),且假定野人与牧师都会划船,试设计一个算法,确定他们能否渡过河去,若能,则给出小船来回次数最少的最佳方案。(2) 基本要求:1. 输入:牧师人数(即野人人数):n;小船一次最多载人量:c。2. 输出:若问题无

2、解,则显示Failed,否则,显示Successed输出一组最佳方案。用三元组(X1, X2, X3)表示渡河过程中的状态。并用箭头连接相邻状态以表示迁移过程:初始状态-中间状态-目标状态。3. 例:当输入n=2,c=2时,输出:221-110-211-010-021-0004. 其中:X1表示起始岸上的牧师人数;X2表示起始岸上的野人人数;X3表示小船现在位置(1表示起始岸,0表示目的岸)。5. 要求:写出算法的设计思想和源程序,并以图形用户界面实现人机交互,进行输入和输出结果,如:Please input n: 2 Please input c: 2Successed or Failed?

3、: SuccessedOptimal Procedure: 221-110-211-010-021-0003. 算法设计package cn.xiaoyangege.mvc.yerenguohe;/CrossRiverQuestion.javaimport java.util.ArrayList;import java.util.List;import java.util.Scanner;public class CrossRiverQuestion public static void main(String args) Scanner scanner = new Scanner(Syste

4、m.in);int n = 0;int c = 0;String ns = null;String cs = null;boolean flag;do flag = false;System.out.print(Please input n:);ns = scanner.nextLine();System.out.print(Please input c:);cs = scanner.nextLine();try n = Integer.parseInt(ns);c = Integer.parseInt(cs); catch (NumberFormatException e) System.o

5、ut.println(输入不合法。);flag = true;continue;if (!flag & (n 0 | c 0) System.out.println(输入不合法。);flag = true; while (flag);scanner.close();CrossRiverQuestion q = new CrossRiverQuestion(n, c);q.solveQuestion();private intpeoNum;private intsavageNum;private ListresultList= new ArrayList();public List solveQ

6、uestion() Node n = new Node(peoNum, savageNum, 0, 0, 0, new ArrayList(),0, 0);boolean dfsResult = dfs(n);System.out.print(Succeed or Failed?: );if (dfsResult) System.out.println(Succeed.);System.out.print(Optimal Procedure: );resultList.add(0, n);for (Node node : resultList) System.out.print(node.ge

7、tLeftPeo() + + node.getLeftSavage()+ + (1 - node.getCURR_STATE() + -);System.out.println(End);return resultList; else System.out.println(Failed.);return null;public CrossRiverQuestion(int peoNum, int savageNum) super();this.peoNum = peoNum;this.savageNum = savageNum;private boolean dfs(Node n) if (n

8、.hasVisited() return false;n.addCheckSum();if (n.getLeftPeo() = 0 & n.getLeftSavage() = 0) return true;if (n.getLeftPeo() 0 | n.getRightPeo() 0 | n.getLeftSavage() 0| n.getRightSavage() 0) return false;if (n.getLeftPeo() 0) return false;if (n.getRightPeo() 0) return false;if (n.getCURR_STATE() = n.g

9、etStateBoatLeft() Node n1 = new Node(n.getLeftPeo() - 1, n.getLeftSavage() - 1,n.getRightPeo() + 1, n.getRightSavage() + 1,n.getStateBoatRight(), n.getNodesCheckSum(), 1, 1);if (dfs(n1) resultList.add(0, n1);return true;Node n4 = new Node(n.getLeftPeo() - 2, n.getLeftSavage(),n.getRightPeo() + 2, n.

10、getRightSavage(),n.getStateBoatRight(), n.getNodesCheckSum(), 2, 0);if (dfs(n4) resultList.add(0, n4);return true;Node n5 = new Node(n.getLeftPeo(), n.getLeftSavage() - 2,n.getRightPeo(), n.getRightSavage() + 2,n.getStateBoatRight(), n.getNodesCheckSum(), 0, 2);if (dfs(n5) resultList.add(0, n5);retu

11、rn true; else Node n6 = new Node(n.getLeftPeo(), n.getLeftSavage() + 1,n.getRightPeo(), n.getRightSavage() - 1,n.getStateBoatLeft(), n.getNodesCheckSum(), 0, 1);if (dfs(n6) resultList.add(0, n6);return true;Node n7 = new Node(n.getLeftPeo() + 1, n.getLeftSavage(),n.getRightPeo() - 1, n.getRightSavag

12、e(),n.getStateBoatLeft(), n.getNodesCheckSum(), 1, 0);if (dfs(n7) resultList.add(0, n7);return true;Node n1 = new Node(n.getLeftPeo() + 1, n.getLeftSavage() + 1,n.getRightPeo() - 1, n.getRightSavage() - 1,n.getStateBoatLeft(), n.getNodesCheckSum(), 1, 1);if (dfs(n1) resultList.add(0, n1);return true

13、;Node n4 = new Node(n.getLeftPeo() + 2, n.getLeftSavage(),n.getRightPeo() - 2, n.getRightSavage(),n.getStateBoatLeft(), n.getNodesCheckSum(), 2, 0);if (dfs(n4) resultList.add(0, n4);return true;Node n5 = new Node(n.getLeftPeo(), n.getLeftSavage() + 2,n.getRightPeo(), n.getRightSavage() - 2,n.getStateBoatLeft(), n.getNodesCheckSum(), 0, 2);if (dfs(n5) resultList.add(0, n5);return true;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号