通过dijkstra计算图g中的最短路径时,需要指定一个起点d(即从顶点d开始计算)。
此外,引进两个数组s和u。s的作用是记录已求出最短路径的顶点(以及相应的最短路径长度),而u则是记录还未求出最短路径的顶点(以及该顶点到起点d的距离)。
初始时,数组s中只有起点d;数组u中是除起点d之外的顶点,并且数组u中记录各顶点到起点d的距离。如果顶点与起点d不相邻,距离为无穷大。
然后,从数组u中找出路径最短的顶点k,并将其加入到数组s中;同时,从数组u中移除顶点k。接着,更新数组u中的各顶点到起点d的距离。
重复第4步操作,直到遍历完所有顶点。
s={d(0)}, u={a(∞),b(∞),c(3),e(4),f(∞),g(∞)}。 注:c(3)表示c到起点d的距离是3。
a(22) b(13) c(3) d(0) e(4) f(6) g(12)。
以上图为例,对迪杰斯特拉进行算法演示(以顶点d为起点)。