- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
八数码问题DFS和BFS算法的设计与实现
摘要:针对八数码问题,使用宽度优先和深度优先算法进行求解,并对两种算法的求解过程以及结果进行了分析,比较了两种算法的优缺点。
关键词:八数码;DFS;BFS
中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)22-5487-03
Eight Digital Questions of DFS and BFS Algorithm Design and Implementation
ZHOU Hao
(Computer College, Nanjing Normal University, Nanjing 210046, China)
Abstract: Eight digital questions, use the BFS and DFS algorithm to solve, and two kindsof algorithms for solving process and the results of analysis, comparative advantages and disadvantages of the two algorithms.
Key words: Eight digital; DFS; BFS
所谓八数码问题是指这样一种游戏:将分别标有数字1,2,3,…,8的八块正方形数码牌任意地放在一块3×3的数码盘上。放牌时要求不能重叠。于是,在3×3的数码盘上出现了一个空格。现在要求按照每次只能将与空格相邻的数码牌与空格交换的原则,将任意摆放的数码盘逐步摆成某种特殊的排列。
解决八数码问题的算法很多,盲目是搜索算法如深度优先搜索、宽度优先搜索,启发式搜索如A*算法等。
1 八数码游戏问题的状态空间法表示
1.1 状态描述
我们在八数码问题中,将号码牌摆放的位置抽象成一个序列,用来记录不同码值的号码牌的摆放位置。
若用0来表示空格,则
将初始状态为:,目标状态为:的八数码问题转换为从开始序列:[2,8,3,1,0,4,7,6,5] 转换到目标序列 [1,2,3,8,0,4,7,6,5] 的问题。
1.2 操作符描述
对于八数码问题中空格的移动问题,我们建立以下操作符:
左移:1;上移:2;下移:3;右移:4
建立下列状态转换:
空格右移了一步,所以用4来表示。
1.3 状态空间法的数据结构
struct Node
{
public:
int path[2];//path[0] is the line of the closed box path[1] is the direction of
//the father node move to this node
int layer;//layer is the deep nums of the node in the whole graph
string seq; // using the string to achieve the sequence
};
其中string seq 记录数码位置,path[2]以及int layer。path[0]表示这个结点记录是closed表当中的第几个记录,path[1] 是本记录结点的父结点。Layer表示在已搜索的树当中是第几层。
空格移动规则如表1所示。
2 八数码游戏问题的盲目搜索技术
2.1 宽度优先搜索
2.1.1 宽度优先搜索的搜索步骤
① 把起始节点放到 OPEN 表中(如果该起始节点为一目标节点,则得到解)
② 如果 OPEN 是个空表,则无解,失败退出;否则继续下一步
③ 把第一个节点(记作节点 n )从 OPEN 表移出,并把它放入 CLOSED 的已扩展节点表中
④ 扩展节点 n 。如果没有后继节点,则转向第②步
⑤ 把 n 的所有后继节点放到OPEN表的末端,并提供从这些后继节点回到 n 的指针
⑥ 如果 n 的任一个后继节点是个目标节点,则找到一个解(反向追踪得到从目标节点到起始节点的路径),成功退出,否则转向第②步
2.1.2 宽度优先的成员数据结构
string InitialString,ResultString;
初始序列以及结果序列
OPEN表:SeqQueue ws_open
(特别说明,这里的SeqQueue 是我自己实现的队列模板,因为想试下有没有用,就放到程序里试了一下)
存放待扩展的节点,从数据结构上来说,它是一个先进先出的队列
CL
您可能关注的文档
- Visual Foxpro教学中研究性学习的探索与实践.doc
- Visual C++精品课程建设的实践与成效.doc
- Visual Foxpro实验教学中常见错误解析.doc
- VisualFoxPro在数字化测绘中的应用.doc
- Visual FsoxPro程序设计教学方法的探索.doc
- VLAN划分与路由设置问题教学实验设计.doc
- VLAN技术在大连气象局局域网中的应用.doc
- VLAN技术在实际应用的方案设计探讨.doc
- VLAN技术在校园网维护管理中的应用.doc
- VLAN技术在校园网中的应用.doc
- 半导体材料性能提升技术突破与应用案例分析报告.docx
- 半导体设备国产化政策支持下的关键技术突破与应用前景报告.docx
- 剧本杀市场2025年区域扩张策略研究报告.docx
- 剧本杀行业2025人才培训体系构建中的市场需求与供给分析.docx
- 剧本杀行业2025年人才培训行业人才培养模式创新与探索.docx
- 剧本杀行业2025年内容创作人才需求报告.docx
- 剧本杀行业2025年区域市场区域剧本市场消费者满意度与市场竞争力研究报告.docx
- 剧本杀市场2025年区域竞争态势下的区域合作策略分析报告.docx
- 剧本杀行业2025人才培训与行业人才培养模式创新.docx
- 剧本杀行业剧本创作人才心理素质培养报告.docx
文档评论(0)