八数码问题_网络工程4班_刘海伟_200930592013.doc

八数码问题_网络工程4班_刘海伟_200930592013.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《人工智能》实验报告 学生班级 09网络工程 学生姓名 刘海伟 学    号 200930592013 实验时间 2011年11月5日 实验地点 宿舍 实验名称 八数码 实验成绩 一、实验目的 通过编程和使用A*算法实现八数码问题,并且调用不同的启发函数来比较效率。 二、实验过程 实验中使用了map来保存open和close表,虽然能做到O(1)查询,但是在每次选取最小点药o(n),八数码节点类为 typedef struct eight_num //八数码结构 { int f_value; int g_value; int h_value; int state[3][3]; //八数码状态 string parent; //八数码上一个状态 }Pnode; Pnode Start,End; //起始状态,结束状态 mapstring,PnodeOpen; //OPEN表,用map可以实现o(1)查询 //判断当前状态是否有解 bool get_solution(Pnode node) //初始化八数码状态 void init_node(Pnode node) string to_string(int state[3][3]) // 启发式函数一,比较不在位的个数 int call_difference( Pnode node) //启发式函数,统计到目标状态的距离 int call_difference2( Pnode node) //判断两个状态是否相等 bool equal (Pnode a ,Pnode b) //输出状态 void out_put(Pnode node) //设置状态 void set_state(Pnode node,int new_state[3][3]) // 从某个表中选择距离目标状态f值最小的 string select_min(mapstring ,Pnodelist) //输出方向 void out_put_directory(string a,string b) //输出最后结果 void out_put_result()283146750 2 8 3 1 4 6 7 5 启发函数 A B 扩展结点数 462 132 生成结点数 746 210 用时 1.007s 0.619 初始状态为126408753 1 2 6 4 8 7 5 3 启发函数 A B 扩展结点数 275 99 生成结点数 436 164 用时 0.691s 0.458 初始状态为420367851 4 2 3 6 7 8 5 1 启发函数 A B 扩展结点数 2019 生成结点数 3096 用时 超过1分钟 7.797s 三、实验结果 以420367851为例 _ _ _ _ _ _ | 4 | 2 | 0 | _ _ _ _ _ _ | 3 | 6 | 7 | _ _ _ _ _ _ | 8 | 5 | 1 | _ _ _ _ _ _ 空格下移,和7交换位置 _ _ _ _ _ _ | 4 | 2 | 7 | _ _ _ _ _ _ | 3 | 6 | 0 | _ _ _ _ _ _ | 8 | 5 | 1 | _ _ _ _ _ _ 空格左移,和6交换位置 _ _ _ _ _ _ | 4 | 2 | 7 | _ _ _ _ _ _ | 3 | 0 | 6 | _ _ _ _ _ _ | 8 | 5 | 1 | _ _ _ _ _ _ 空格左移,和3交换位置 _ _ _ _ _ _ | 4 | 2 | 7 | _ _ _ _ _ _ | 0 | 3 | 6 | _ _ _ _ _ _ | 8 | 5 | 1 | _ _ _ _ _ _ 空格上移,和4交换位置 _ _ _ _ _ _ | 0 | 2 | 7 | _ _ _ _ _ _ | 4 | 3 | 6 | _ _ _ _ _ _ | 8 | 5 | 1 | _ _ _ _ _ _ 空格右移,和2交换位置 _ _ _ _ _ _ | 2 | 0 | 7 | _ _ _ _ _ _ | 4 | 3 | 6 | _ _ _ _ _ _ | 8 | 5 | 1 | _ _ _ _ _ _ 空格下移,和3交换位置 _ _

文档评论(0)

精品文库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档