设计的软、硬件环境:
硬件:一台 PC 机
软件:VC++ 6.0
ADT(数据结构与算法)设计与功能模块:
给定一个带权有向图 G 与源点 v,求从 v 到 G 中其他顶点的最短路径,即解决单源
最短路径问题。
限定各边上的权值大于或等于 0.迪杰斯克拉提出了一个按路径长度递增的次序求得
最短路径的算法。首先设置两个顶点的集合 S 和 T,集合 S 中存放已找到最短路径的顶
点,集合 T 中存放当前还未找到最短路径的顶点,初始状态时,集合 S 中只包含源点,
设为 v0。然后,不断从集合 T 中选择到源点 v0 路径长度最短的顶点 u 加入到集合 S
中。
集合 S 中每加入一个新顶点 u,都要修改源点 v0 到集合 T 中剩余顶点的当前最短路
径长度值;集合 T 中各顶点的新的当前最短路径长度值,为原来的当前最短路径长度值
与顶点 u 的最短路径长度值加上顶点 u 到该顶点的路径长度值(即为从源点过顶点 u 到
达该顶点的路径长度)中的较小者。此过程不断重复,直到集合 T 中的顶点全部加入到
集合 S 中为止。
初始时令 S=[v0],T={其余顶点},引入一个辅助数组 D,它的每一个分量 D[i]表
示当前找到的从源点 v0 到终点 vi 的最短路径的长度。辅助数组 D 的初始状态:
1)若从顶点 v0 到 vi 有边的话,则 D[i]为该边上的权值。
2)若从顶点 v0 到 vi 没有边的话,则 D[i]为∞。
评论0
最新资源