📅  最后修改于: 2020-12-23 01:01:06             🧑  作者: Mango
该算法维护了一组顶点,这些顶点的最短路径是从源头开始的。该图由其成本邻接矩阵表示,其中成本是边缘的权重。在图的成本邻接矩阵中,所有对角线值均为零。如果没有从源顶点V s到任何其他顶点V i的路径,则用+∞表示。在此算法中,我们假设所有权重均为正。
完成此过程后,我们从源顶点获得了所有顶点的最短路径。
示例:使用Dijkstra算法在图所示的图中找到K和L之间的最短路径。
解:
步骤1:包括顶点K为S,并确定从K到所有其他顶点的所有直接路径,而不经过任何其他顶点。
到所有其他顶点的距离
S | K | a | b | c | d | L |
K | 0 | 4(K) | ∞ | 2(K) | ∞ | 20(K) |
步骤2:在S中包含最接近K的顶点,并确定通过该顶点到所有顶点的最短路径并更新值。最接近的顶点是c。
到所有其他顶点的距离
S | K | a | b | c | d | L |
K | 0 | 3(K, c) | 7(K, c) | 2(K) | 8(K, c) | 18(K, c) |
步骤3:最接近K的第二个顶点是9,包含在S中。
到所有其他顶点的距离
S | K | a | b | c | d | L |
K | 0 | 3(K, c) | 7(K, c) | 2(K) | 7(K, c, a) | 18(K, c) |
步骤4:该顶点是最接近于K 3次为b时,包含在S.
到所有其他顶点的距离
S | K | a | b | c | d | L |
K | 0 | 3(K, c) | 7(K, c) | 2(K) | 7(K, c, a) | 8(K, c, b) |
步骤5: S中包含第二个最接近K的顶点d。
到所有其他顶点的距离
S | K | a | b | c | d | L |
K(c, a, b, d) | 0 | 3(K, c) | 7(K, c) | 2(K) | 7(K, c, a) | 8(K, c, b) |
由于S中包含n-1个顶点。因此,我们找到了从K到所有其他顶点的最短距离。因此,K和L之间的最短距离为8,最短路径为K,c,b,L。