版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 人工智能原理与方法A宕算法实现八数码搜索问题模式识别与智能系统SY1003113游遵文题目:编程实现8数码问题初始状态:38215764目标状态:12384765要求:1、报告:给出状态表示,编码规则,搜索算法A4简单程序说明,最优路径。2、调通的程序(语言不限)状态表示用一个3X3的数组來表示状态,数组中的各个元素对应状态位置的数字。其中空格用0表示。二、编码规则在程序实现过程中,只有移动0的位置,即可生成新的节点。规则库then上移then下移then左移then右移设数组中0的位置为aij,其中0WiW2,0WjW2Rl:if(i21)Rl:if(iWl)Rl:Rl:if(jWl)三、
2、搜索算法A*用于度量节点的“希望”的量度f),即用來衡量到达目标节点的路径的可能性大小。A算法:基本思想:定义一个评价函数,对当前的搜索状态进行评估,找出一个最有希望的节点进行扩展:f(n)=g(n)+h(n),n为被评价节点g*(n):从s到口的最优路径的实际代价h*(n):从n到g的最优路径的实际代价fic(n)=g*(n)+h*(n):从s经过n到g的最优路径的实际代价g(n)h(n)f(n)分别是g*(n)h*(n)f*(n)的估计值g(n)通常为从S到到n这段路径的实际代价,则有g(n)2g*(n)h(n):是从节点n到目标节点Sg的最优路径的估计代价.它的选择依赖于有关问题领域的启
3、发信息,叫做启发函数A算法:在图搜索的一般算法中,在搜索的每一步都利用估价函数f(n)=g(n)+h(n)对Open表中的节点进行排序表中的节点进行排序,找出一个最有希望的节点作为下一次扩展的节点。在A算法中,如果满足条件:h(n)h*(n),则A算法称为A*算法。在本算法中,为实现八数码的搜索问题,定义估价函数为:f(n)=g(n)+h(n),其中g(n)表示节点11在搜索树中的深度;h(n)表示节点11的各个数码到目标位置的曼哈顿距离和。四、程序说明1、算法实现的步骤:把初始节点SO放入Open表中,置SO的代价g(SO)=O;如果Open表为空,则问题无解,失败退出;把Open表的第一个
4、节点取出放入Closed表,并记该节点为n考察节点n是否为目标节点。若是,则找到了问题的解,成功退出;若节点11不可扩展,则转第(2)步;扩展节点11,生成其子节点ni,(其中1=1,2,3,),将这些子节点放入Open表中,并为每一个子节点设置指向父节点的指针;按公式g(ni)=g(n)+c(n,ni)(i=l,2,)计算Open表中的各子节点的代价,并根据各节点的代价对Open表中的全部节点按照从小到大顺序重新进行排序;然后转第(2)步。2、思路通过代价函数对Open表中的节点进行排序,代价小的先扩展。 五、搜索算法得出的最优路径如下图所示,搜索算法从初始节点到目标节点经历了18个状态。
5、7结论通过这次的实验,深入了解了启发式搜索算法的内涵,尤其是A*算法的优越性。然而在实际工程中,选择合适、优异的估价函数存在一定困难,特别要注意其信息量的强度不能超过其上限值,否则A*算法会变成A算法;而A算法是非充分的,即可能不在其最优路径上,从而导致不能找到目标节点。同时,在实验过程中,也熟悉了C+编程和VC的开发环境;但编程能力还是极其有限,急需提升。附录:A*算法代码的核心部分pnodemove(pnodep,intdir)pnodeUnode=(pnode)malloc(sizeof(node);for(inti=0;i=2;i+)for(intj=0;jai0=p-aij;swit
6、ch(dir)case1:/upUnode-x=p-x-1;Unode-y=p-y;Unode-aUnode-xUnode-y=0;Unode-aUnode-x+1Unode-y=p-aUnode-xUnode-y);break;case2:/downUnode-father=p;Unode-g=p-g+1;深度增加一层Unode-h=hvalue(Unode-a,final);更新h函数值Unode-f二Unode-h+Unode-g;returnUnode;intmain(intargc,char*argv)pnodeA0=(pnode)malloc(sizeof(node);pnodeo
7、pen,/open表头close,/close表头now,当前节点Lnode,Rnode,Unode,Dnode,下一个左,右,上,下节点fnode;终节点initial(AO,start);open=A0;close=NULL;while(1)/Open表为空,未找到解,结束搜索程序/open表中第一个节点是解,结束搜索把finalnode从open表中拿出,放到close表中if(open=NULL)fnode=NULL;coutM未能找到解”;return0;if(open-h=0)fnode=open;open=opennext;fnode-next=NULL;fnodeclnext=
8、close;close=fnode;break;now=open;intX,Y;X二now-x;Y=now-y;if(X0)&(now-father=NULL|now-father-x!=X-1) # #Unode=move(now,1);空格上移,得到新节点 # #insert(Unode,open);/把新节点插入open表中 # #if(Xfather=NULL|now-father-x!=X+1)空格下移Dnode=move(now,2);insert(Dnode,open);if(Y0)&(now-father=NULL|now-father-y!=Y-1)Lnode=move(now,3);insert(Lnodefopen);if(Yfather=NULL|now-father-y!=Y+1) Rnode=move(now,4);insert(Rnode,open);now-clnext二close;close二now;open=opennext;while(fnode-father!=NULL)fnode-father-next=fnode;fnode=fnode-father;while(fnode!=NULL)disp(fnode);f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 风电机组预应力基础结构耐久性设计导则
- 废水处理企业组建方案
- 惰性气体灭火系统运行管理制度
- 城市给水工程竣工验收报告
- 建筑工程清单编制作业规范
- 建筑基坑支护稳定性验算报告
- 单向板肋梁楼盖计算书
- 智能便携式储能设备项目规划选址论证报告
- 厂区废水处理系统突发泄漏应急处置方案
- 2026年镀锌板(卷)行业创新应用前景报告001
- 多根电缆管拖拽施工方案
- 铝箔电池技术知识培训课件
- 基础越南语1课件
- 车辆伤害安全培训课件
- 沟槽开挖安全操作规程
- 早退迟到旷工管理制度
- 2025届广东省春季高考学业水平考试语文试卷(四)语文试题
- 盆底康复产后康复进修汇报
- T/CAEPI 49-2022污水处理厂低碳运行评价技术规范
- 封阳台质保合同协议
- 购买仪器合同协议
评论
0/150
提交评论