- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
重庆交通大学计算机与信息学院
验证性实验报告
班 级: 计算机软件开发专业 2013级1班
学 号: 631306050113
姓 名: 程强
实验项目名称: 状态空间搜索
实验项目性质: 验证性实验
实验所属课程: 人工智能
实验室(中心):软件中心实验室(语音楼8楼)
指 导 教 师 : 朱振国
实验完成时间: 2016 年 6 月 13 日
实验目的
理解和掌握状态空间搜索的策略。
二、实验内容及要求
1.实验内容:在一个3*3的九宫中有1-8个数码及一个空格随即的摆放在其中的格子里,现在要求实验这个问题:将该九宫格调整为某种有序的形式。调整的规则是,每次只能将与空格(上、下、左、右)相邻的一个数字平移到空格中。
2.实验要求:用选定的编程语言编写程序,利用不同的搜索策略进行状态空间搜索(如宽度优先搜索、深度优先搜索、有界深度优先搜索等)
三、实验设备及软件
一台PC,Java
四、设计方案
㈠ 题目 状态空间搜索
㈡ 设计的主要思路
状态空间法
建立一个只含有初始节点S0的搜索图G,把S0放入OPEN表中
建立CLOSED表,且置为空表
判断OPEN表是否为空表,若为空,则问题无解,退出
选择OPEN表中的第一个节点,把它从OPEN表移出,并放入CLOSED表将此节点记为节点n
考察节点n是否为目标节点,若是,则问题有解,成功退出。问题的解就是沿着n到S0的路径得到。若不是转⑥
扩展节点n生成一组不是n的祖先的后继节点,并将它们记为集合M,将M中的这些节点作为n的后继节点加入图G中
对未在G中出现过的(OPEN和CLOSED表中未出现过的)集合M中的节点, 设置一个指向父节点n的指针,并把这些节点放入OPEN表中;对于已在G中出现过的M中的节点,确定是否需要修改指向父节点的指针;对于已在G中出现过,并已在closed表中的M中的节点,确定是否需要修改通向他们后继节点的指针。
按某一任意方式或某种策略重排OPEN表中节点的顺序
转③
宽度优先搜索算法
(1) 把起始节点放到OPEN表中(如果该起始节点为一目标节点,则求得一个解答)。
(2) 如果OPEN是个空表,则没有解,失败退出;否则继续。
(3) 把第一个节点(节点n)从OPEN表移出,并把它放入CLOSED的扩展节点表中。
(4) 扩展节点n。如果没有后继节点,则转向上述第(2)步。
(5) 把n的所有后继节点放到OPEN表末端,并提供从这些后继节点回到n的指针。
(6) 如果n的任一个后继节点是个目标节点,则找到一个解答,成功退出;
否则转向第(2)步。
深度优先搜索算法
(1) 把起始节点放到OPEN表中(如果该起始节点为一目标节点,则求得一个解答)
(2) 如果OPEN是个空表,则没有解,失败退出;否则继续。
(3) 把第一个节点(节点n)从OPEN表移出,并把它放入CLOSED的扩展节点表中。
(4) 考察节点n是否为目标节点,若是,则找到问题的解,用回溯法求解路径,退出
(5)如果没有后继节点,则转向上述第(2)步。
(6) 扩展节点n,把n的所有后继节点放到OPEN表前端,并提供从这些后继节点回到n的指针。转向第(2)步。
㈢ 主要功能
通过一系列的数码移动,讲初始位置转化为目标位置
五、主要代码
package cn.edu.nwsuaf.qhs.artificialintelligence.eightpuzzle;
import java.util.Arrays;
public class EightPuzzle implements Cloneable{
/*利用一个二维的数组来存储数据*/
public int[][] data;
private int blankPos_x,blankPos_y;
private int depth;
//无参构造函数
public EightPuzzle(){
data = new int[3][3];
}
//传递一个数组,进行初始化的构造函数
public EightPuzzle(int [][] data){
this.data = data;
}
//判断是不是和目标位置相同
/*int[][] data1 = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
int[][] data2 = n
您可能关注的文档
- 手机安全与互联网通信技术研究.ppt
- 2016年中考文综太子教程.doc
- 高考地理知识点之海洋与旅游地理教程.doc
- 高考第一轮复习--氧化还原反应教程.doc
- 2016年中考压轴题专题:与圆有关的最值问题(附)教程.doc
- 高考仿真模拟卷(五)教程.doc
- 2016年中考英语考点总动员系列专题13动词时态教程.doc
- 数字故事:我和我的“问题”学生研究.ppt
- 高考古诗文名句理解性默写训练()教程.doc
- 2016年中考英语考点总动员系列专题14被动语态教程.doc
- 2025年湖南省津市市公开招聘警务辅助人员辅警笔试必刷测试卷必考题.docx
- 2025年湖南省张家界市行政职业能力测验题库完整.docx
- 2025年湖南省衡阳市行政职业能力测验题库完整版.docx
- 2025年版社会工作者职业水平《社会工作实务》考试练习题及答案1套.docx
- 2025年甘肃省陇南地区行政职业能力测验题库1套.docx
- 2025年社会工作者必考试题库完美版.docx
- 2025年社会工作者之中级社会工作法规与政策真题一套.docx
- 2025年版社会工作者(初)《社会工作实务》考试题附答案.docx
- 2025年福建省莆田市行政职业能力测验模拟试题参考答案.docx
- 2025年社会工作者之中级社会工作法规与政策真题带答案.docx
文档评论(0)