码迷,mamicode.com
首页 > 编程语言 > 详细

最短路径——Dijkstra算法

时间:2020-06-30 14:43:38      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:检查   alt   处理   src   时间复杂度   code   循环   loading   ima   

最短路径——Dijkstra算法

BFS算法的局限性

技术图片

Dijkstra算法

技术图片

第一轮:循环遍历所有结点,找到还没确定最短路径,且dist最小的顶点vi,令final[i]=true;

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

技术图片

第二轮:循环遍历所有结点,找到还没却确定最短路径,且dist最小的顶点vi,令final[i]=ture;

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

技术图片

第三轮:循环遍历所有结点,找到还没确定最短路径,且dist最小的顶点vi,令final[i]=true;

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

技术图片

第四轮:循环遍历所有结点,找到还没确定最短路径,且dist最小的顶点vi,令final[i]=ture;

技术图片

技术图片

Dijkstra算法的时间复杂度

初始:若从v0开始,令final[0]=ture;dist[0]=0;path[0]=-1.

? 其余顶点final[k]=false;dist[k]=arcs[0] [k];path[k]=(arcs[0] [k]==∞)?-1:0

n-1轮处理: 循环遍历所有顶点,找到还没确定最短路径,且dist最小的顶点vi,令final[i]=ture。并检查所有邻接自vi的顶点,对于邻接自vi的顶点vj,若final[j]==false 且 dist[i]+arcs[i] [j]<dist[j],则令dist[j]=dist[i]+arcs[i] [j];path[j]=i。(注:arcs[i] [j] 表示vi到vj的弧的权值)

技术图片

负权值带权图

技术图片

技术图片

最短路径——Dijkstra算法

标签:检查   alt   处理   src   时间复杂度   code   循环   loading   ima   

原文地址:https://www.cnblogs.com/jev-0987/p/13213483.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!