6、广度优先搜索

广度优先搜索

 1、广度优先搜索

广度优先搜索是一种用于图的查找算法 ,可帮助回答两类问题 。

第一类问题:从节点A出发,有前往节点B的路径吗?

第二类问题:从节点A出发,前往节点B的哪条路径最短?

即,广度优先搜索不仅查找从AB路径,而且找到的是最短的路径。 

2、实现图
散列表能够实现此要求

3、时间复杂度

广度优先搜索的运行时间为O(V + E),其中V为顶点( vertice)数, E为边数 

4、代码示例

 

5、小结

广度优先搜索指出是否有从AB的路径。

如果有,广度优先搜索将找出最短路径。

面临类似于寻找最短路径的问题时,可尝试使用图来建立模型,再使用广度优先搜索来解决问题。

有向图中的边为箭头,箭头的方向指定了关系的方向,例如, ramaadit表示ramaadit钱。

无向图中的边不带箭头,其中的关系是双向的,例如, ross - rachel表示“rossrachel会,而rachel也与ross约会”。

队列是先进先出( FIFO)的。

栈是后进先出( LIFO)的。

你需要按加入顺序检查搜索列表中的人,否则找到的就不是最短路径,因此搜索列表必须是队列。

对于检查过的人,务必不要再去检查,否则可能导致无限循环。

6、应用场景

 求最短路径




posted @ 2020-11-01 21:54  Dammond  阅读(131)  评论(0)    收藏  举报