美文网首页
算法和数据结构4.2广度优先搜索

算法和数据结构4.2广度优先搜索

作者: 数字d | 来源:发表于2019-07-31 15:38 被阅读0次

广度优先搜索是一种对图进行搜索的算法,假设我们位于某个顶点(作为起点),此时并不知道图的整体结构,而我们的目的是从起点开始顺着边搜索,直到达到指定顶点(终点)。在此过程中每走到一个顶点,就会判断一次它是否为终点。广度优先搜索会优先从离起点近的顶点开始搜索。


search.png

步骤

标记A为起点,G为终点。一开始在起点A上,并不知道G的位置。

将A可以直达的三个顶点B、C、D标记为下一步的候补顶点。

从后补顶点中选出一个顶点。优先选择最早成为后补顶点的那个顶点,如果多个顶点同事成为候补的那个顶点,可以取后补顶点中的任意一个。

此处B、C、D同时成为候补顶点,所以我们随机选择了最左边的顶点B.

先搜索A,A不是顶点G(终点),将A标记为已搜索状态。

接下来搜索顶点此时B变为正在被搜索的顶点,同时B可以直达的未搜索的顶点将变成候补顶点。

B从候补顶点中移除.(这里的移除可以用队列的数据结构来实现,因为队列的特点是是先进先出的FIFO)

E和F也变成候补顶点。

开始搜索B,B不是顶点G(终点),将B标记为已搜索状态。。

此时最早成为候补顶点的是C和D,于是选择C成为正在被搜索的顶点。

C从候补顶点中移除。

H被加入成为新的候补顶点。

开始搜索C,C不是顶点G(终点),将C标记为已搜索状态.

接下来候补顶点中D是最早成为候补顶点的,开始将D变为正在搜索的顶点.

将D从候补顶点中移除。

I和J被加入成为候补顶点。

开始搜搜D,D不是顶点G(终点),将D标记为已搜索的状态。

依次类推

...

...

综述:从A搜索到G的广度优先搜索顺序为A、B、C、D、E、F、H、I、J、K、G

广度优先搜索的特征是从起点开始,由远及近进行广泛的搜索。因此,目标顶点离起点越近,搜偶所结束的越快。

上图是没有闭环的图。如果图中有闭环,搜索步骤也是一样的。上图中没有闭环的图叫做”树“。

相关文章

  • 数据结构与算法--深度和广度优先搜索

    什么是“搜索”算法? 算法是作用于具体数据结构之上的,深度优先搜索算法和广度优先搜索算法都是基于“图”这种数据结构...

  • 【数据结构】广度优先搜索算法BFS

    对于广度优先遍历算法DFS可以参考前一篇文章【数据结构】深度优先搜索算法DFS 广度优先遍历 广度优先遍历(Bre...

  • 数据结构与算法--BFS&DFS

    “搜索”算法 深度优先搜索算法和广度优先搜索算法都是基于“图”这种数据结构。 图上的搜索算法就是,在图中找出从一个...

  • 算法与数据结构 之 搜索算法

    搜索分为广度优先搜索、深度优先搜索、A*算法。 一、广度优先算法(BFS) 1.1、基本实现和特性:BFS是从一个...

  • 深度和广度优先搜索

    深度优先搜索算法和广度优先搜索算法都是基于“图”这种数据结构的。这是因为,图这种数据结构的表达能力很强,大部分涉及...

  • 广度优先搜索算法

    上一篇简书小编分享了“深度优先搜索”算法,今天小编继续分享下“广度优先搜索”算法。 一、何为“广度优先搜索” 广度...

  • 算法和数据结构4.2广度优先搜索

    广度优先搜索是一种对图进行搜索的算法,假设我们位于某个顶点(作为起点),此时并不知道图的整体结构,而我们的目的是从...

  • 广度优先搜索算法(BFS)

    广度优先搜索算法(BFS) 标签(空格分隔): algorithm 1.广度优先搜索算法(Breadth Firs...

  • 算法(三):图解广度优先搜索算法

    算法简介 广度优先搜索算法(Breadth First Search),又称为"宽度优先搜索"或"横向优先搜索",...

  • 搜索

    一、深度优先搜索 图深度优先遍历、深度优先搜索算法求有权图两点最短路径 二、广度优先搜索 图广度优先遍历、广度优先...

网友评论

      本文标题:算法和数据结构4.2广度优先搜索

      本文链接:https://www.haomeiwen.com/subject/vsrtdctx.html