第六章:广度优先搜索

2018-10-12  本文已影响0人  杨殿生

模拟一组连接

广度优先搜索

回答两个问题
1,从A出发有到B的路径么
2,从A出发前往B的最短路径

找出两样东西之间的最短距离

队列

支持两种操作
1,入队
2,出队

后进先出

实现图

散列表(键映射到值,图中将结点映射到其邻居)

实现算法

1,创建一个队列,用于存储要检查的人
2,从队列中弹出一个人
3,检查这个人是否是芒果经销商
4,是,大功告成
5,否,将这个人所有的邻居加入队列。回到2
6,如果队列为空,就说明你的人际关系网中没有芒果经销商
注意:需要有一个数组表示元素是否被检查过了,要不会出现死循环

运行时间

整个人际关系网中搜索芒果经销商,就意味着你将沿每一条边前行,因为运行时间至少为O(边数)
还使用了队列,要检查每一个人,一个人添加到队列的时间是固定的O(1)。因此每个人都这样做需要的总时间为O(人数)
所以广度优先搜索的运行时间为O(v+e) v为顶点,e为边数

上一篇 下一篇

猜你喜欢

热点阅读