- 3
- 0
- 约7.66千字
- 约 27页
- 2020-12-07 发布于天津
- 举报
第八章 广度优先搜索 ? 广度优先搜索的过程 广度优先搜索算法(又称宽度优先搜索)是最简便的图的搜索算法之 一,这一算法也是很多重要的图的算法的原型。 Dijkstra 单源最短路径算法 和 Prim 最小生成树算法都采用了和宽度优先搜索类似的思想。 广度优先算法的核心思想是:从初始节点开始,应用算符生成第一层 节点,检查目标节点是否在这些后继节点中,若没有,再用产生式规则将 所有第一层的节点逐一扩展,得到第二层节点,并逐一检查第二层节点中 是否包含目标节点。若没有,再用算符逐一扩展第二层的所有节点 …… , 如此依次扩展,检查下去,直到发现目标节点为止。即 ⒈从图中的某一顶点 V0 开始,先访问 V0 ; ⒉访问所有与 V0 相邻接的顶点 V1 , V2 , ...... , Vt ; ⒊依次访问与 V1 , V2 , ...... , Vt 相邻接的所有未曾访问过的顶点; ⒋循此以往,直至所有的顶点都被访问过为止。 这种搜索的次序体现沿层次向横向扩长的趋势,所以称之为广度优先 搜索。 ? 广度优先搜索算法描述: Program Bfs ; 初始化,初始状态存入队列; 队列首指针 head:=0; 尾指针 tail:=1 ; repeat 指针 head 后移一位,指向待扩展结点; for I=1 to max do //max 为产生子结点的规则数 begin if 子结点符合条件 then begin tail 指针增 1 ,把新结点存入列尾; if 新结点与原已产生结点重复 then 删去该结点(取消入队, tail 减 1 ) else if 新结点是目标结点 then 输出并退出; end; end; until(head=tail); // 队列为空 ? 广度优先搜索注意事项: 1 、每生成一个子结点,就要提供指向它们父亲结点的指针。当解出现 时候,通过逆向跟踪,找到从根结点到目标结点的一条路径。当然不要求 输出路径,就没必要记父亲。 2 、生成的结点要与前面所有已经产生结点比较,以免出现重复结点, 浪费时间,还有可能陷入死循环。 3 、如果目标结点的深度与“费用”(如:路径长度)成正比,那么, 找到的第一个解即为最优解,这时,搜索速度比深度搜索要快些,在求最 优解时往往采用广度优先搜索;如果结点的“费用”不与深度成正比时, 第一次找到的解不一定是最优解。 4 、广度优先搜索的效率还有赖于目标结点所在位置情况,如果目标结 点深度处于较深层时,需搜索的结点数基本上以指数增长。 下面我们看看怎样用宽度优先搜索来解决八数码问题。 例如 图 2 给出广度优先搜索应用于八数码难题时所生成的搜索树。搜索树上 的所有结点都标记它们所对应的状态,每个结点旁边的数字表示结点扩展的顺序。 粗线条路径表明求得的一个解。从图中可以看出,扩展第26个结点,总共生成 46个结点之后,才求得这个解。此外,直接观察此图表明,不存在有更短走步 序列的解。 【例 1 】 图 4 表示的是从城市 A 到城市 H 的交通图。从图中可以看出,从 城市 A 到城市 H 要经过若干个城市。现要找出一条经过城市最少的一条 路线。 【算法分析】 看到这图很容易想到用邻接距阵来表示, 0 表示能走, 1 表示不能走。如图。 首先想到的是用队列的思想。 a 数组是存储扩展结点的队列, a[i].city 记录 经过的城市 ,a[i].pre 记录前趋城市,这样就可以倒推出最短线路。具体过程如下: ( 1 ) 将城市 A 入队,队首为 0 、队尾为 1 。 ( 2 ) 将队首所指的城市所有可直通的城市入队(如果这个城市在队列中出现 过就不入队,可用一个集合来判断),将入队城市的 pre 指向队首的位置。然 后将队首加 1 ,得到新的队首城市。重复以上步骤,直到搜到城市 H 时,搜索结 束。利用 pre 可倒推出最少城市线路。 【参考程序】 Program Ex8_1; const ju:array[1..8,1..8] of 0..1=((1,0,0,0,1,0,1,1), (0,1,1,1,1,0,1,1), (0,1,1,0,0,1,1,1), (0,1,0,1,1,1,0,1), (1,1,0,1,1,1,0,0), (0,0,1,1,1,1,1,0), (1,1,1,0,0,1,1,0), (1,1,1,1,0,0,0,1)); type node=record // 记录定义 city: char; pre: integer; end; var head,tail,i:integer; a:array [1..100] of node; s:s
您可能关注的文档
最近下载
- 道德与法治六年级下册第2课学会宽容第2课时(课件).pptx VIP
- 六三制新青岛版四年级科学上册全一册全部课件(一共24课时).pptx VIP
- 企业内部控制问题研究——以ZX集团有限公司为例.doc VIP
- 机械原理2015年总卷剖析.doc VIP
- 第四章 发育评定.pptx
- F674064【复试】2024年长沙理工大学125604物流工程与管理《复试F1205政治理论之思想.pdf VIP
- Yamaha雅马哈非道路用车 运动型UTV UTVYXZ1000R SS 2024~至今 产品说明书.pdf VIP
- 同步整流技术最新.pdf VIP
- 六三制新青岛版四年级下册《科学》全一册全部课件(共23课).pptx VIP
- 医院绩效指标体系设计-洞察与解读.docx VIP
原创力文档

文档评论(0)