- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)