lecture_11_4动态规划所有点对的最短距离.ppt

lecture_11_4动态规划所有点对的最短距离

7.5所有点对的最短路径问题 对于一个各边权值均大于0的有n个顶点的带权有向图G=(V,E),求所有顶点之间的最短路径和最短距离。 复习Dijkstra算法 其基本思想是,设置顶点集合S并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。 初始时,S中仅含有源点。设u是G的某一个顶点,把从源点到u且中间只经过S中顶点的路称为从源到u的特殊路径,并用数组distance记录当前每个顶点所对应的最短特殊路径长度。Dijkstra算法每次从V-S中取出具有最短特殊路长度的顶点u,将u添加到S中,同时对数组distance作必要的修改。一旦S包含了所有V中顶点,distance就记录了从源到所有其它顶点之间的最短路径长度。 算法中,我们不断更新以下三个数组: s数组: s[i],当顶点i加入S时,s[i]置1 Distance数组: Distance[i]记录原点到 顶点i的最短特殊路径长度。 path数组: path[i]记录顶点i在其最短特殊路径上的前驱顶点。由该数组可求得原点到各点的最短路径。如:设源点是顶点1, path数组如下 例如,对右图中的有向图,应用Dijkstra算法计算从源顶点1到其它顶点间最短路径的过程列在下页的表中。 方法一:重复调用Dijkstra算法n次 可轮流以每一个顶点为源点,重复调用狄克斯特拉算法

文档评论(0)

1亿VIP精品文档

相关文档