数据结构——最短路径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的值最大为几,则该图的广度优先生成树的深度为几,且高度最小)

相关推荐
自学不成才4 小时前
深度复盘:一次flutter应用基于内存取证的黑盒加密破解实录并完善算法推理助手
c++·python·算法·数据挖掘
June`5 小时前
全排列与子集算法精解
算法·leetcode·深度优先
徐先生 @_@|||5 小时前
Palantir Foundry 五层架构模型详解
开发语言·python·深度学习·算法·机器学习·架构
夏鹏今天学习了吗6 小时前
【LeetCode热题100(78/100)】爬楼梯
算法·leetcode·职场和发展
m0_748250037 小时前
C++ 信号处理
c++·算法·信号处理
Ro Jace7 小时前
电子侦察信号处理流程及常用算法
算法·信号处理
yuyanjingtao7 小时前
动态规划 背包 之 凑钱
c++·算法·青少年编程·动态规划·gesp·csp-j/s
core5128 小时前
SGD 算法详解:蒙眼下山的寻宝者
人工智能·算法·矩阵分解·sgd·目标函数
Ka1Yan8 小时前
[链表] - 代码随想录 707. 设计链表
数据结构·算法·链表