图
模拟一组连接
广度优先搜索
回答两个问题
1,从A出发有到B的路径么
2,从A出发前往B的最短路径
找出两样东西之间的最短距离
队列
支持两种操作
1,入队
2,出队
栈
后进先出
实现图
散列表(键映射到值,图中将结点映射到其邻居)
实现算法
1,创建一个队列,用于存储要检查的人
2,从队列中弹出一个人
3,检查这个人是否是芒果经销商
4,是,大功告成
5,否,将这个人所有的邻居加入队列。回到2
6,如果队列为空,就说明你的人际关系网中没有芒果经销商
注意:需要有一个数组表示元素是否被检查过了,要不会出现死循环
运行时间
整个人际关系网中搜索芒果经销商,就意味着你将沿每一条边前行,因为运行时间至少为O(边数)
还使用了队列,要检查每一个人,一个人添加到队列的时间是固定的O(1)。因此每个人都这样做需要的总时间为O(人数)
所以广度优先搜索的运行时间为O(v+e) v为顶点,e为边数
网友评论