首页 > 学院 > 开发设计 > 正文

单源最短路径-Dijkstra算法

2019-11-06 06:50:00
字体:
来源:转载
供稿:网友

 算法说明

迪杰斯特拉算法解决的事带权重的有向图上单源最短路径问题,该算法要求所有边的权重都为非负值。他在运行过程中维护的关键信息是一组节点集合S。算法重复从节点集V-S中选择最短路径估计最小的节点u,将u加入到集合S中,然后对所有从u发出的边进行松弛。我们使用最小优先队列Q来保存节点集合,每个节点的关键值为其d值。

算法步骤

G={V,E}1. 初始时令 S={V0},T=V-S={其余顶点},T中顶点对应的距离值若存在<V0,Vi>,d(V0,Vi)为<V0,Vi>弧上的权值若不存在<V0,Vi>,d(V0,Vi)为∞2. 在(T)未确定的点中选取当前以得的最短路径(与S中顶点有关联边且权值最小)3. 对其余T中顶点的距离值进行修改:若加进W作中间顶点,从V0到Vi的距离值缩短,则修改此距离值4.重复上述步骤2、3,直到S中包含所有顶点,即W=Vi为止

算法举例

实现代码

/***未完待续**/
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表