八数码实验报告.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大连海事大学 人工智能课程实验报告 (2010-2011学年第二学期) 实验一 启发式搜索算法 班 级: 智能科学与技术09-1班 学 号: 2220093706 姓 名: 陈越昕 指导教师: 邓安生 成 绩: 2011年 7 月 7 日 《人工智能》实验一题目 实验一 启发式搜索算法 实验内容: ?八数码问题:在3×3的方格棋盘上,摆放着1到8这八个数码,有1个方格是空的,其初始状态如图1所示,要求对空格执行空格左移、空格右移、空格上移和空格下移这四个操作使得棋盘从初始状态到目标状态。?? ????? ??????????????????2?? 8?? 3???????????? 1????2?? 3? ????????????????1?????? 4???????????? 8????????4? ????????????????7?? 6?? 5???????????? 7?? 6????5? ???????????????? (a) 初始状态??????????(b) 目标状态?? ?????????????????????? 图 1 八数码问题示意图?? 使用启发式搜索算法求解8数码问题。 ⑴ 编制程序实现求解8数码问题算法,采用估价函数 , 其中:是搜索树中结点的深度;为结点的数据库中错放的棋子个数;为结点的数据库中每个棋子与其目标位置之间的距离总和。 ⑵ 分析上述⑴中两种估价函数求解8数码问题的效率差别,给出一个是的上界的的定义,并测试使用该估价函数是否使算法失去可采纳性。 2. 实验目的 熟练掌握启发式搜索算法及其可采纳性。 3. 实验要求 ⑴ 实验题目必须由个人独立完成,允许自行参考相关文献资料,但严禁同学间相互拷贝和抄袭程序以及文档资料。实验结束后一周内上交实验报告和实验文档资料。 ⑵ 提交的文档资料包括设计文档和程序源代码。设计文档和程序源代码以书面文档方式提供(用纸打印);并提交电子文档备查。 4实验说明: 数据结构如下: Node::Node() 为构造函数 int geth1() 计算h值(h值为每个数字与其目标位的总和即估价函数中的p(n)) int geth2() 此h值为错放的棋子数即为估价函数中的w(n)) int geth3(); 此h值为错放的棋子数即为估价函数中的h(n)) void Expand1(Node *p) 扩展p所指向的节点 void in (Node *p) 输入函数 void out (Node *q,int j ) 输出函数 该实验是先判定能否成功达到目标状态,若不能,则直接结束程序;若能,则输出推理步骤; 5.实验结果: 输入的初始状态:1 2 3 7 8 4 6 0 5 目标状态:1 2 38 0 4 7 6 5 结构分析:对条件h(n)=h*(n)已经不成立了,故算法3已经失去可采纳性; 不能成功运行时: 6.实验总结: 本次将课本的理论知识变成现实是一大进步,前段时期,程序运行的有问题,经过不懈的努力,终于还是成功了,总结经验,主要没有注意细节的把握,要编写一个程序,会产生错误的概率是很高的,而能够完全按照自己的要求实现某些功能的概率是比较小的,所以,在编程的过程中,要考虑周全,更不能有想当然的思想。 附录: 实验代码: #includestdio.h #includemath.h #include time.h #define size 3 long total; typedef char board[size][size]; board target; // 目标状态 class Node { public: board data; //存放状态 Node *p

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档