最短路问题常用算法总结和模板

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最短路问题常用算法总结和模板相关的知识,希望对你有一定的参考价值。

1.Dijkstra 算法

      Dijkstra算法适用于边权为正的情况。

      用于计算正权图上的单源最短路(Single-Source Shortest Paths,SSSP)。所谓单源最短路即从单个源点出发,到所有结点的最短路。

      算法同时适用于有向图和无向图。

     伪代码:

    

 1 清除所有点的标点(有的话)
 2 设d[0]=0,其他d[i]=INF
 3 循环n次{
 4     在所有未标号结点中,选出d的最小的结点x
 5     给结点x标号
 6     对于从x出发的所有边(x,y),更新d[y]=min{d[y],d[x]+w[x][y]]}
 7 }
 8 //程序
 9 memset(v,0,sizeof(v));
10 for(int i=0;i<n;i++) d[i]=(i==0?0:INF);
11 for(int i=0;i<n;i++) {
12     int x,m=INF;
13     for(int y=0;y<n;y++) if(!v[y]&&d[y]<=m) m=d[x=y];
14     v[x]=1;
15     for(int y=0;y<n;y++) d[y]=min(d[y],d[x]+w[x][y]);
16 }
17 //路径打印==动态规划方案打印
18 if(d[y]>d[x]+w[x][y]) {
19     d[x]=d[x]+w[x][y];
20     fa[y]=x;
21 }//替换d[y]=min(d[y],d[x]+w[x][y]),边的松弛操作

 

以上是关于最短路问题常用算法总结和模板的主要内容,如果未能解决你的问题,请参考以下文章

常用最短路优化算法及例题(附模板)——-SPFA和Dijkstra

算法笔记-最短路径规划

[总结]最短路径算法

[最短路] aw1128. 信使(单源最短路建图+Floyd算法+最短路理解+模板题)

单源最短路径算法总结

图-最短路径-Dijkstra及其变种