631306050102周桐+状态空间搜索+启发式搜索.docVIP

631306050102周桐+状态空间搜索+启发式搜索.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
631306050102周桐状态空间搜索启发式搜索

重庆交通大学计算机与信息学院 验证性实验报告 班 级: 软件开发 专业 13 级 1 班 学 号: 631306050102 姓 名: 周 桐 实验项目名称: 状态空间搜索 8数码问题 实验项目性质: 验证性实验 实验所属课程: 人工智能 实验室(中心):软件中心实验室(语音楼8楼) 指 导 教 师 : 朱振国 实验完成时间: 2016 年 6 月 6 日 一、实验目的 理解和掌握状态空间搜索的策略。 实验内容及要求 (一)实验内容 在一个3*3的九宫中有1-8个数码及一个空格随即的摆放在其中的格子里,现在要求实验这个问题:将该九宫格调整为某种有序的形式。调整的规则是,每次只能将与空格(上、下、左、右)相邻的一个数字平移到空格中。 (二)实验要求 用选定的编程语言编写程序,利用不同的搜索策略进行状态空间搜索(如宽度优先搜索、深度优先搜索、有界深度优先搜索等)。 实验设备及软件 计算机一台、Microsoft Visual 2015 C++ 四、设计方案 (一)题目 状态空间搜索 8数码问题 (二)设计的主要思路 输入要排序的1~8数码序列?建立一个队列,将初始结点入队,并设置队列头和尾指取出队列头(头指针所指)的结点进行扩展,从它扩展出子结点,并将这些结点按扩展的顺序加入队列?判断扩展出的新结点与队列中的结点是否重复。否的话,记录其父结点,并将它加入队列,更新队列尾指针?,队列头的结点可以扩展,直接返回第二步。否则将队列头指针指向下一结点,再返回第二步。是的话,队列头的结点可以扩展,直接返回第二步。否则将队列头指针指向下一结点,再返回第二步。?判断扩展出的结点是否是目标结点,?是的话,就显示路径;否的话,就转到上一步。最后程序结束。 (三)主要功能 交换空格(0)位置,直至到达目标位置为止。 五、主要代码 #include?stdio.h?? #include?stdlib.h?? #include?windows.h?? #include?queue?? #include?stack?? using?namespace?std;?? #define?HashTableSize?362881??#define?NOT????!?? #define?UP?????0?? #define?DOWN???1?? #define?LEFT???2?? #define?RIGHT??3?? #define?Bit????char?? typedef?struct?maps??{? Bit?detail[9];?? int?myindex;//记录自己节点在hash表中的位置?? Bit?position;//记录?空格(0)在序列中的位置?? }Map,*PMap;?? Map??org;?????//初始状态?? int??EndIndex;??//上移,下移,左移,右移?? int?const?derection[4]?={?-3,3,-1,1 }?? //?可移动的四个方向?? int?const?Factorial[9]?=?{40320,5040,720,120,24,6,2,1,1};? int??HashTable[HashTableSize]={0};? //hash表,其中记录的是上一个父节点对应的位置?? /****八数码的输入(在这里不做任何输入检查,均认为输入数据是正确的)***/? void?input()?? {?? int?i,j; int?sum?,?count?,index??? for(i?=?0?;?i??9?;?i?++?)?? {? scanf(%1d,?org.detail[?i?]?);?? org.detail[?i?]?||?(org.position?=?i)??? }?? for(i?=?0?;?i??9?;?i?++?)????????????????//计算逆序?? {?? if(?0?==?org.detail[?i?]??)??? continue;?? for(j?=?0?;?j??i;??j?++?)?? sum?+=?(0!=org.detail[j]org.detail[j]org.detail[i]);?}?? for(?i?=?0?;?index?=?0??i??9?;?i?++?)?? ?//?计算初始状态的hash值??{?? f

文档评论(0)

docindpp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档