数据结构——最短路径BFS算法

一、最短路径问题

1.单源最短路径问题:从一个顶点出发,到达其他任意一个顶点的最短路径。

BFS求无权图的单元最短路径:

对无权图进行广度优先遍历算法,每进行一次,对边权值进行+1.

2.代码实现

对广度优先遍历中的Visit函数进行改造即可。设置两个数组,一个记录各个顶点到原始顶点的最短值,另一个记录每一个顶点在这各最短路径上的直接前驱。

从2号顶点开始,将第一个数组(d)值全部设置为无穷,第二个数组(path)全部设置为-1,再将二号结点的d的值设置为0(起始顶点),再将visited数组中2号的值改为true。 执行while循环,如果队列非空则弹出队列(2号),再从2号开始,找到与它相邻的所有顶点,如果其中有没有访问过的顶点,也就是visited值为false,则更改d++,再修改path,将2号结点填入,修改visited为true。一次循环结束,以此类推(接下来为1)。

(对BFS小修改,在visit一个顶点时,修改其最短路径长度d,在path中记录其前驱。 d的值最大为几,则该图的广度优先生成树的深度为几,且高度最小)

相关推荐
vortex56 分钟前
几种 dump hash 方式对比分析
算法·哈希算法
堕27422 分钟前
java数据结构当中的《排序》(一 )
java·数据结构·排序算法
2302_813806221 小时前
【嵌入式修炼:数据结构篇】——数据结构总结
数据结构
Wei&Yan1 小时前
数据结构——顺序表(静/动态代码实现)
数据结构·c++·算法·visual studio code
团子的二进制世界2 小时前
G1垃圾收集器是如何工作的?
java·jvm·算法
吃杠碰小鸡2 小时前
高中数学-数列-导数证明
前端·数学·算法
故事不长丨2 小时前
C#线程同步:lock、Monitor、Mutex原理+用法+实战全解析
开发语言·算法·c#
long3162 小时前
Aho-Corasick 模式搜索算法
java·数据结构·spring boot·后端·算法·排序算法
近津薪荼2 小时前
dfs专题4——二叉树的深搜(验证二叉搜索树)
c++·学习·算法·深度优先
熊文豪2 小时前
探索CANN ops-nn:高性能哈希算子技术解读
算法·哈希算法·cann