- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一 启发式搜索算法
姓名:徐维坚 学号:2220103484 日期:2012/6/29
一、实验目的:
熟练掌握启发式搜索算法及其可采纳性。
二、实验内容:
使用启发式搜索算法求解8数码问题。
编制程序实现求解8数码问题算法,采用估价函数
,
其中:是搜索树中结点的深度;为结点的数据库中错放的棋子个数;为结点的数据库中每个棋子与其目标位置之间的距离总和。
分析上述⑴中两种估价函数求解8数码问题的效率差别,给出一个是的上界
的的定义,并测试使用该估价函数是否使算法失去可采纳性。
三、实验原理:
问题描述:
八数码问题也称为九宫问题。在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格(以数字0来表示),与空格相邻的棋子可以移到空格中。
要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。
所谓问题的一个状态就是棋子在棋盘上的一种摆法。解八数码问题实际上就是找出从初始状态到达目标状态所经过的一系列中间过渡状态。
原理描述:
2.1 有序搜索算法:
(1)原理:
在搜索过程中,OPEN表中节点按照其估价函数值以递增顺序排列,选择OPEN表中具有最小估价函数值的节点作为下一个待扩展的节点,这种搜索方法称为有序搜索。
在本例中,估价函数中的取节点深度,为节点n的状态与目标状态之间错放的个数,即函数。
(2)算法描述:
把起始节点S放到OPEN表中,并计算节点S的;
如果OPEN是空表,则失败退出,无解;
从OPEN表中选择一个值最小的节点。如果有几个节点值相同,当其中有一个
为目标节点时,则选择此目标节点;否则就选择其中任一个节点作为节点;
把节点从 OPEN 表中移出,并把它放入 CLOSED 的已扩展节点表中;
如果是个目标节点,则成功退出,求得一个解;
扩展节点,生成其全部后继节点。对于的每一个后继节点:
计算;如果 既不在OPEN表中,又不在CLOCED表中,则用估价函数把
它添入OPEN表中。从加一指向其父节点的指针,以便一旦找到目标节点时记住一个解答路径;如果已在OPEN表或CLOSED表中,则比较刚刚对计算过的和前面计算过的该节点在表中的值。如果新的较小,则
(I)以此新值取代旧值。
(II)从指向,而不是指向他的父节点。
(III)如果节点在CLOSED表中,则把它移回OPEN表中。
转向②,即GOTO②。
算法流程图:
2.2启发式搜索技术
(1)原理
启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无谓的搜索路径,提高了效率。在启发式搜索中,对位置的估价是十分重要的。采用了不同的估价可以有不同的效果。
(2)估价函数
计算一个节点的估价函数,可以分成两个部分:
已经付出的代价(起始节点到当前节点);
将要付出的代价(当前节点到目标节点)。
节点n的估价函数定义为从初始节点、经过n、到达目标节点的路径的最小代价的估计值,即 = + 。
是从初始节点到达当前节点n的实际代价;
是从节点n到目标节点的最佳路径的估计代价,体现出搜索过程中采用的启发式信息(背景知识),称之为启发函数。
所占的比重越大,越趋向于宽度优先或等代价搜索;反之,的比重越大,表示启发性能就越强。
本实验中我们使用函数,其值是节点n与目标状态节点相比较,每个错位棋牌在假设不受阻拦的情况下,移动到目标状态相应位置所需走步(移动次数)的总和。显然比更接近于,因为不仅考虑了错位因素,还考虑了错位的距离。
算法描述:
参考有序搜索算法描述,基本相同。流程图亦参考有序算法流程图。
实验程序及其说明:
int goal[N][N],struct Chessboard:
试验中我定义goal数组为目标状态——{1,2,3,8,0,4,7,6,5}。结构体Chessboard记录棋盘信息,其中变量pos数组坐标记录每个数码a的位置,其值为数码a。d表示该棋盘的深度,f为启发函数值,move为父节点移动到该节点的方式,以便在输出时告诉用户该如何移动棋子知道目标状态。
2)struct LNode:
定义节点LNode结构体,存放该节点状态时的棋盘信息board,和指向父节点、下一节点的指针(*parent,*next),以及标记量flag——值为true时表示该节点是最佳路径上的节点。
3)int* Findzero(LNode* Node):
为方便找到空格,我设计了找到该函数Findzero(*Node),以便找到当前节点空格所在位置以利于接下来的程序执行。返回值为空格所在的行和列。
int Wrong(LNode *Node)和int pick(LNode *Node):
分
您可能关注的文档
- 表a、b、c建设工程监理规范.doc
- 装饰装修工程监理规.doc
- 西湾路2某泵站高、低压电房设备改造及3某泵站低压控制电柜采..doc
- 论工程造价的审核.doc
- 课题三路基防护与加固工程.ppt
- 起重机安装改造质量资料.doc
- 起重机械安装改造重大维修监督检验规则TSGQ70162008.doc
- 轻质发泡陶瓷保温板、外墙外保温技术改造项目资金申请报告代可行性研究研究研究报告2012年.doc
- 轻钢龙骨石膏板吊顶工程监理细则.doc
- 造价工程师先进事迹.doc
- 语文-广东省肇庆市2025届高三第二次模拟试卷和答案(肇庆二模).docx
- 中国通信行业运行情况月度报告(2024年1-11月).pdf
- 2024年中国新能源汽车行业全球竞争力分析与各国进口贸易法规影响白皮书-特易资讯.pdf
- 热电“三保”与碳排双控.pdf
- 数据中心行业分析报告 2025.pdf
- 【灼鼎咨询】2024年自动驾驶行业知识报告(智能驾驶、新能源汽车、NOA).pdf
- 政治-江苏省苏州市2024-2025学年2025届高三第一学期学业期末质量阳光指标调研卷试题和答案.docx
- 政治-广东省东莞市、揭阳市、韶关市2025届高三期末教学质量检查试题和答案.docx
- 自适应物理安全与信息安全系统 -智能制造的动态安全方法 2025.pdf
- 【国联证券】通信行业专题研究:Marvell AI day,算力需求推动光互联加速迭代.pdf
文档评论(0)