数据结构笔记——Dijkstra算法

写在前面:科班出身,应届考研党,愿21考研成功上岸,冲冲冲!

目录

一、BFS算法的局限性

二、Dijkstra算法

三、如何使用数组信息

四、用于负权值带权图


一、BFS算法的局限性

带权路径长度——当图是带权图时,一条路径上所有边的权值之和,称为该路径的带权路径长度

BFS算法求单源最短路径只适用于无权图,或所有边的权值都相同的图

二、Dijkstra算法

初始:从V0开始,初始化三个数组信息如下

第1轮:循环遍历所有结点,找到还没确定最短路径,且dist最小的顶点Vi,零final[j] = true

检查所有邻接自Vi的顶点,若其final值为false,则更新dist和path信息

第2轮:循环遍历所有结点,找到还没确定最短路径,且dist最小的顶点Vi,零final[j] = true

第3轮:循环遍历所有结点,找到还没确定最短路径,且dist最小的顶点Vi,零final[j] = true

第4轮:循环遍历所有结点,找到还没确定最短路径,且dist最小的顶点Vi,零final[j] = true

三、如何使用数组信息

V0到V2的最短(带权)路径长度为:dist[2] = 9

通过path[]可知,V0到V2的最短(带权)路径:V2<- -- V1<-----V4<------V0

时间复杂度:O(n^2)即O(|V|^2)

四、用于负权值带权图

结论:Dijkstra算法不适用于有负权值的带权图

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章