实验一、盲目搜索算法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
范文 范例 指导 学习 word版本整理分享 实验一:盲目搜索算法 一、实验目的 掌握盲目搜索算法之一的宽度优先搜索求解算法的基本思想。对于宽度优先搜索算法基本过程,算法分析有一个清晰的思路,了解宽度优先搜索算法在实际生活中的应用。 二、实验环境 PC机一台,VC++6.0 三、实验原理 宽度优先 HYPERLINK /view/3688332.htm \t _blank 搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra HYPERLINK /view/1939816.htm \t _blank 单源最短路径算法和Prim HYPERLINK /view/288214.htm \t _blank 最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。同时,宽度优先搜索算法是 HYPERLINK /view/3148644.htm 连通图的一种 HYPERLINK /view/549585.htm 遍历策略。因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域,故得名。? 其基本思想是: (1) 把起始节点放到OPEN表中(如果该起始节点为一目标节点,则求得一个解答)。   (2) 如果OPEN是个空表,则没有解,失败退出;否则继续。   (3) 把第一个节点(节点n)从OPEN表移出,并把它放入CLOSED扩展节点表中。   (4) 扩展节点n。如果没有后继节点,则转向上述第(2)步。   (5) 把n的所有后继节点放到OPEN表的末端,并提供从这些后继节点回到n的指针。   (6) 如果n的任一个后继节点是个目标节点,则找到一个解答,成功退出;否则转向第(2)步。 宽度优先搜索示意图和宽度优先算法流程图如下图1和图2所示: S S BA B A DC D C EF E F G G H H I I J J 图1、宽度优先搜索示意图 起始 起始 把 把S放入OPEN表 Fangru OPEN是否为空表? OPEN是否为空表? 否 是 失败 失败 把第一个节点 把第一个节点n,从OPEN表移出,并把它放入CLOSED表 扩展 扩展n,把它的后继节点放入OPEN 表的末端,提供回到n的指针 是否有任何后继节点为目标节点 是否有任何后继节点为目标节点? 否是 否 是 成功 成功 图2、宽度优先算法流程图 四、实验数据及步骤 这部分内容是通过一个实例来对宽度优先算法进行一个演示,分析其思想。问题描述了《迷宫问题》的出路求解办法。 定义一个二维数组:? int?maze[5][5]?=?{ ????0,?1,?0,?0,?0, ????0,?1,?0,?1,?0, ????0,?0,?0,?0,?0, ????0,?1,?1,?1,?0, ????0,?0,?0,?1,?0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。题目保证了输入是一定有解的。? 下面我们队问题进行求解: 对应于题目的输入数组: 0,?1,?0,?0,?0, ????0,?1,?0,?1,?0, ????0,?0,?0,?0,?0, ????0,?1,?1,?1,?0, ????0,?0,?0,?1,?0, 我们把节点定义为(y,x),(y,x)表示数组maze的项maze[x][y]。于是起点就是(0,0),终点是(4,4)。我们大概梳理一遍: 初始条件:起点Vs为(0,0),终点Vd为(4,4),灰色节点集合Q={},初始化所有节点为白色节点,说明:初始全部都是白色(未访问),即将搜索起点(灰色),已经被搜索过了(黑色)。开始我们的宽度搜索。执行步骤: 1.起始节点Vs变成灰色,加入队列Q,Q={(0,0)} 2.取出队列Q的头一个节点Vn,Vn={0,0},Q={} 3.把Vn={0,0}染成黑色,取出Vn所有相邻的白色节点{(1,0)} 4.不包含终点(4,4),染成灰色,加入队列Q,Q={(1,0)} 5.取出队列Q的头一个节点Vn,Vn={1,0},Q={} 6.把Vn={1,0}染成黑色,取出Vn所有相邻的白色节点{(2,0)} 7.不包含终点(4,4),染成灰色,加入队列Q,Q={(2,0)} 8.取出队列Q的头一个节点Vn,Vn={2,0},Q={} 9.把Vn={2,0}染成黑色,取出Vn所有相邻的白色节点{(2,1),?(3,0)} 10.不包含终点(4,4),染成灰

文档评论(0)

181****1752 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档