- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
631306050113程强状态空间搜索启发式搜索
重庆交通大学计算机与信息学院
验证性实验报告
班 级: 计算机软件开发专业 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,
您可能关注的文档
最近下载
- (11)--1.2.1 植物细胞的繁殖-有丝分裂.ppt VIP
- 2025年招生和对口招生文化素质测试数学试题及参考答案 完整版912.pdf VIP
- 广东省广州第六中学2024-2025学年高一上学期期中考试化学试题.docx VIP
- 大学物理1-1质点运动的描述.pptx VIP
- 征途漫漫,唯有奋斗——博物馆里的抗战教育:中国人民抗日战争纪念馆.pptx VIP
- 中国机长观后感中国机长观后感范文.pdf VIP
- 2024年浙江省温州市《保安员证》考试题库含答案统编版 .pdf VIP
- 管理心理学:理论与实践.pptx
- 课题申报书:基于生成式人工智能的医学教育创新融合途径研究.docx VIP
- 面向人工智能应用的语料数据生态构建与治理研究.docx VIP
文档评论(0)