Dijkstra 算法17 Mar 2025 | 阅读 2 分钟 该算法维护一组已知从源点到节点的**最短路径**的顶点。图由其**成本邻接矩阵**表示,其中**成本**是边的权重。在图的成本邻接矩阵中,所有对角线值都为零。 如果从源顶点 Vs 到任何其他顶点 Vi 都没有路径,则用 +∞ 表示。在这个算法中,我们假设所有权重都是正数。
完成该过程后,我们得到了从源顶点到所有顶点的最短路径。 示例: 使用 Dijkstra 算法在图中找到 K 和 L 之间的最短路径,如图所示。 ![]() 解决方案 步骤 1: 将顶点 K 包含在 S 中,并确定从 K 到所有其他顶点的所有直接路径,而无需经过任何其他顶点。 到所有其他顶点的距离
步骤 2: 将离 K 最近的顶点包含在 S 中,并通过此顶点确定到所有顶点的最短路径并更新值。最近的顶点是 c。 到所有其他顶点的距离
步骤 3: 离 K 第二近的顶点是 9,包含在 S 中。 到所有其他顶点的距离
步骤 4: 离 K 第三近的顶点是 b,包含在 S 中。 到所有其他顶点的距离
步骤 5: 离 K 最近的下一个顶点是 d,包含在 S 中。 到所有其他顶点的距离
由于 S 中包含了 n-1 个顶点。因此,我们找到了从 K 到所有其他顶点的最短距离。因此,K 和 L 之间的最短距离是 8,最短路径是 K, c, b, L。 下一个主题旅行商问题 |
我们请求您订阅我们的新闻通讯以获取最新更新。