关于人工智能实验报告.doc

关于人工智能实验报告.doc

ID:58689210

大小:229.00 KB

页数:23页

时间:2020-10-08

关于人工智能实验报告.doc_第1页
关于人工智能实验报告.doc_第2页
关于人工智能实验报告.doc_第3页
关于人工智能实验报告.doc_第4页
关于人工智能实验报告.doc_第5页
关于人工智能实验报告.doc_第6页
关于人工智能实验报告.doc_第7页
关于人工智能实验报告.doc_第8页
关于人工智能实验报告.doc_第9页
关于人工智能实验报告.doc_第10页
资源描述:

《关于人工智能实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、****大学人工智能基础课程实验报告(2011-2012学年第一学期)启发式搜索王浩算法班级:***********学号:**********姓名:******指导教师:******成绩:2012年1月10日实验一启发式搜索算法1.实验内容:使用启发式搜索算法求解8数码问题。⑴编制程序实现求解8数码问题算法,采用估价函数,其中:是搜索树中结点的深度;为结点的数据库中错放的棋子个数;为结点的数据库中每个棋子与其目标位置之间的距离总和。⑵分析上述⑴中两种估价函数求解8数码问题的效率差别,给出一个是的上界的的定义,并测试使用

2、该估价函数是否使算法失去可采纳性。2.实验目的熟练掌握启发式搜索算法及其可采纳性。3.实验原理使用启发式信息知道搜索过程,可以在较大的程度上提高搜索算法的时间效率和空间效率;启发式搜索的效率在于启发式函数的优劣,在启发式函数构造不好的情况下,甚至在存在解的情形下也可能导致解丢失的现象或者找不到最优解,所以构造一个优秀的启发式函数是前提条件。4.实验内容1.问题描述在一个3*3的九宫格里有1至8八个数以及一个空格随机摆放在格子中,如下图:123804765283164705初始状态目标状态现需将图一转化为图二的目标状态,

3、调整的规则为:每次只能将空格与其相邻的一个数字进行交换。实质是要求给出一个合法的移动步骤,实现从初始状态到目标状态的转变。2.算法分析(1)解存在性的讨论对于任意的一个初始状态,是否有解可通过线性代数的有关理论证明。按数组存储后,算出初始状态的逆序数和目标状态的逆序数,若两者的奇偶性一致,则表明有解。(2)估价函数的确定通过对八数码的特性的研究,找出一个相对好的函数,f(n)=d(n)+h(n)其中h(n)=2*compare(n)+3*S(n);d(n)为已搜索的深度;(compare(n)为当前节点与目标结点相同位

4、置不相同的个数,S(n)为当前节点的无序度。)(3)节点的处理取得一个结点后,判断是否有解,然后对其进行扩展,用估价函数从中取得一个最优节点,依次循环将路径得到,直到取的最后的目标状态。(4)算法设计a.输入初始结点,判断解的存在性,并与目标节点对比。b.若不是目标节点则进行扩展,生成其全部后继节点。c.对于每个后继节点均求其f(n),并比较。d.将最小f(n)存入正确路径,并与目标节点进行对比。e.若不是目标节点则循环执行b,若是目标节点则输出5实验结果输入输出:源代码如下:#includeintf

5、inal[9]={1,2,3,8,0,4,7,6,5};//目标状态节点inta[1000][9],c[9],e[9],f[9];//路径节点和扩展节点intdeep=1,fn;//深度和估计值intb[9];charmoveaction;//移动方向intfnjisuan(intb[9])//估价函数{intcompare=0,s=0,fn1,d[9];d[0]=b[0];d[1]=b[1];d[2]=b[2];d[3]=b[5];d[4]=b[8];d[5]=b[7];d[6]=b[6];d[7]=b[3];d[8

6、]=b[4];for(inti=0;i<9;i++){if(b[i]!=final[i]&&i!=4)compare++;}for(i=0;i<7;i++)if((d[i+1]-d[i])!=1)s++;fn1=2*compare+3*s+deep;//估价函数计算结果returnfn1;}voidshow(intc[9])//输出节点{for(inti=0;i<9;i++)a[deep][i]=c[i];for(i=0;i<9;i++){if((i)%3==0)printf("");printf("%dt",c

7、[i]);}deep++;printf("");}intjingguo(inte[9])//测试当前节点是否已经经过避免回溯{for(inti=0;i

8、gn-3]=0;intfn1=fnjisuan(c);returnfn1;}intmove_down(intc[9],intZerosign)//下移操作{for(inti=0;i<9;i++)c[i]=b[i];c[Zerosign]=c[Zerosign+3];c[Zerosign+3]=0;intfn1=fnjisuan(c

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。