版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/
求最短路径最常用的有迪杰斯特拉(Dijkstra)和弗洛伊德(Floyd)算法两种本着简洁为王道的信条,我选择了Floyd算法
首先来看一个简单图,红色标记代表在数组的下标橙色标记代表距离(边权值)
我们用D[6][6]这个矩阵存储两点之间最短路径,用P[6][6]这个矩阵存储蕗径
两个矩阵初始化如下若两点不直接联通,则初始化为无穷大
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
其中k为中转顶点下标级无论走哪条路径,都要经过k下标的顶点v代表起始顶点,w代表终点
0 |
0 |
0 |
0 |
0 |
0 |
0 | ||
0 | 0 | 0 |
0 | ||
0 | ||
0 | 0 | |
0 | 0 |
这个就比较简单了比如我输入1,4,代表我想知道从B走到E的最短路径先输出最短路径为D[1][4]。然后就是具体的路径我们找到P[1][4],发现咜等于0意味着从B走到E要先走B-A,然后我们看P[0][4]发现它等于4,也就是E到达终点。