Dijkstra算法的一个例子

    Dijkstra算法的输入包含了一个有权重的有向图G ,以及G中的一个来源顶点S 。 我们以V表示G中所有顶点的集合 。 每一个图中的边,都是两 个顶点所形成的有序元素对。(u,v)表示从顶点u到v有路径相连。 我们以E所有边的集合,而边的权重则由权重函数w: E → [0, ∞]定 义。 因此,w(u,v)就是从顶点u到顶点v的非负花费值(cost)。 边的花费可以想像成两个顶点之间的距离。任两点间路径的花费值,就是该路径上 所有边的花费值总和。  已知有V中有顶点s及t,Dijkstra算法可以找到s到t的最低花费路径(i.e. 最短路径)。 这个算法也可以在一个图 中,找到从一个顶点s到任何其他顶点的最短路径。

    Dijstra算法的基础操作是边的拓展 :如果存在一条从u到v的边,那么从s到u的最短路径可以通过将边(u,v)添加到尾部来拓展一条从s到v 的路径。这条路径的长度是d[u]+w(u,v) 。如果这个值比目前已知的d[v]的值要小,我们可以用新值来替代当前d[v]中的值。拓展边的操作一直 执行到所有的d[v]都代表从s到v最短路径的花费。这个算法经过组织因而当d[u]达到它最终的值的时候没条边(u,v)都只被拓展一次。

 

    Dijkstra算法图示:

《Dijkstra算法的一个例子》

 

《Dijkstra算法的一个例子》

 

《Dijkstra算法的一个例子》

 

《Dijkstra算法的一个例子》

 

《Dijkstra算法的一个例子》

 

《Dijkstra算法的一个例子》

 

《Dijkstra算法的一个例子》

 

《Dijkstra算法的一个例子》

 

《Dijkstra算法的一个例子》

 

《Dijkstra算法的一个例子》

 

《Dijkstra算法的一个例子》

 

《Dijkstra算法的一个例子》

 

转自:Dijkstra算法学习笔记

 

《Dijkstra算法的一个例子》

 

 

 

    原文作者:Dijkstra算法
    原文地址: https://blog.csdn.net/sagadean/article/details/6059514
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞