天天看点

迪杰斯特拉(Dijkstra)算法图解

通过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)。

迪杰斯特拉(Dijkstra)算法图解

 以上图为例,对迪杰斯特拉进行算法演示(以顶点d为起点)。

迪杰斯特拉(Dijkstra)算法图解

继续阅读