最短路径问题之Dijkstra算法(C语言)
Posted bfhonor
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最短路径问题之Dijkstra算法(C语言)相关的知识,希望对你有一定的参考价值。
一、单源最短路径
(一)Dijkstra算法(带权图、无权图)
1. BFS算法的局限性
- 带权路径⻓度——当图是带权图时,⼀条路径上所有边的权值之和,称为该路径的带权路径⻓度
- BFS算法求单源最短路径只适用于无权图,或所有边的权值都相同的图
2. Dijkstra算法
- 初始:从V0开始,初始化三个数组信息如下👇
- 第1轮:循环遍历所有结点,找到还没确定最短路径,且dist 最⼩的顶点Vi,令final[i]=ture。
- 第2轮:循环遍历所有结点,找到还没确定最短路径,且dist 最⼩的顶点Vi,令final[i]=ture。
- 第3轮:循环遍历所有结点,找到还没确定最短路径,且dist 最⼩的顶点Vi,令final[i]=ture。
- 第4轮:循环遍历所有结点,找到还没确定最短路径,且dist 最⼩的顶点Vi,令final[i]=ture。
3. 如何使用数组信息?
4. Dijkstra算法的时间复杂度
5. 对比:Prim 算法的实现思想
6. 用于负权值带权图
- 事实上V0到V2 的最短带权路径长度为 5
- 结论:Dijkstra 算法不适用于有负权值的带权图
以上是关于最短路径问题之Dijkstra算法(C语言)的主要内容,如果未能解决你的问题,请参考以下文章
Python 图_系列之纵横对比 Bellman-Ford 和 Dijkstra 最短路径算法