在给定的带权图(网)中,Dijkstra算法(迪杰斯特拉算法)可以找到从某个顶点到其它所有顶点的最短路径。
Dijkstra算法既适用于有向带权图,也适用于无向带权图。
需要注意的是,用Dijkstra算法查找最短路径时,必须保证图中所有边(弧)的权值为非负数,否则会导致查找失败。
Dijkstra算法的实现过程
接下来通过一个实例,给大家展示Dijkstra算法查找最短路径的过程。
图 1 有向带权图
在图 1 中查找 V0 到其它顶点的最短路径,Dijkstra算法的整个查找过程是:
1) 统计从 V0 到其它顶点的权值,如下表所示:
表 2 V0->V2 是最短路径
∞
表示 V0 到目标顶点之间不存在弧,它们之间的距离为无穷大。
表格中 V0->V2 的权值最小,可以断定 V0 到 V2 的最短路径就是 V0->V2。
断定 V0-V2 是最短路径的