有一幅无向图图
对应的邻接矩阵
char *vertexArray[8] = {"a", "v1", "v2", "v3", "v4", "v5", "v6", "b"};
int undiGraph[8][8] = {
//a,v1,v2,v3,v4,v5,v6, b
//a {X, 2, 8, 1, X, X, X, X}, //1+7+2+6
//v1 {2, X, 6, X, 1, X, X, X},
//v2 {8, 6, X, 7, 4, 2, 2, X},
//v3 {1, X, 7, X, X, X, 9, X},
//v4 {X, 1, 4, X, X, 3, X, 9},
//v5 {X, X, 2, X, 3, X, 4, 6},
//v6 {X, X, 2, 9, X, 4, X, 2},
//b {X, X, X, X, 9, 6, 2, X}
};
求从a到b的最短路径?
(使用“迪杰斯特拉算法”)解题过程:
1.先将“源顶点a”作为“轴心点”开始遍历所有可以抵达的“结点v1, v2, v3”,记录到达“结点v1, v2, v3”的路径值到对应的shortestPathsV[8] = {X(done), 2, 8, 1, X, X, X, X};
并且将“轴心点a”标记在flagV[8] = {1,0,0,0,0,0,0,0},标记为1后续不再使用此轴心点。
(注意:shortestPathsV[8]和flagV[8]每一项对应一个结点)
2.从shortestPathsV[8]中选择当前最短路径值"结点v3",遍历v3所有可以抵达的“结点v2, v6”,记录到达“v2, v6”的“路径值的和”到对应的shortestPathsV[8] =