最短路径——Dijkstra算法
Posted jev-0987
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最短路径——Dijkstra算法相关的知识,希望对你有一定的参考价值。
最短路径——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算法的主要内容,如果未能解决你的问题,请参考以下文章