最短路径问题是在图中找到两个顶点(或节点)之间的路径的问题,使得其组成边的权重之和最小。图的任意两个节点之间的最短路径可以使用许多算法来建立,例如 Dijkstra 算法、Bellman-Ford 算法、Floyd Warshall 算法。有一些寻找最短路径的特性,基于这些特性,寻找最短路径的算法是有效的:
- 最优子结构属性
- 最短路径的所有子路径也必须是最短路径。
- 如果两个节点 U和V之间存在最短路径长度,则贪婪地选择V到S之间长度最小的边将给出 U和S之间的最短路径长度。
- 上面列出的所有算法都基于此属性工作。
- 例如,设P 1是图G的最短路径(S →X →Y → V)从 (X → Y)的子路径。并让P 2是图G 中的任何其他路径(X → Y) 。然后,P 1的成本必须小于或等于P 2的成本。否则,路径(S →X →Y → V)将不是节点 S和V之间的最短路径。
- 三角不等式
- 让 d(a, b)是图G 1 中从 a到b的最短路径的长度。然后,
- d(a, b) ≤ d(a, x) + d(x, b)
- 让 d(a, b)是图G 1 中从 a到b的最短路径的长度。然后,
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。