最短路径算法—dijkstra总结.pdf

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Dijkstra 算法解释 本文引用三篇文章:分别是 谢光新 -Dijkstra 算法 , zx770424 - Dijkstra 算法 , 中华儿女英雄 - Dijkstra 算法 有兴趣的朋友请引用原文,由于分类很不相同难以查找,此处仅作汇总。 谢光新 的文章浅显易懂,无需深入的数学功力,每一步都有图示,很适合初学 者了解。 zx770424 将每一步过程,都用图示方式和公式代码 伪代码对应也有助于,代 码的理解。 中华儿女英雄 从大面上总结了 Dijkstra 的思想,并将演路图描叙出来了。起到 总结的效果。 希望这篇汇总有助于大家对 Dijkstra 算法的理解。 1 Dijkstra 算法是典型最短路算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点 为中心向外层层扩展,直到扩展到终点为止。 Dijkstra 算法能得出最短路径的最优解,但由于它遍历计 算的节点很多,所以效率低。 简介    Dijkstra( 迪杰斯特拉 )算法是典型的单源 最短路径 算法,用于计算一个节点到其他所有节点的 最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。 Dijkstra 算法是很 有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如 数据结构 ,图论, 运 筹 学 等 等 。 Dijkstra 一 般 的表 述 通 常 有 两 种 方 式 , 一 种 用 永 久 和 临 时 标 号 方 式 ,一 种 是 用 OPEN, CLOSE 表的方式,这里均采用永久和临时标号的方式。注意该算法要求图中不存在负权 边。 算法描述    ( 这里描述的是从节点 1 开始到各点的 dijkstra 算法, 其中 Wa->b 表示 a->b 的边的权值, d(i) 即为最短路径值 )    1 . 置集合 S={2,3,...n}, 数组 d(1)=0, d(i)=W1->i(1,i 之间存在边 ) or + 无穷大 (1.i 之间不存在 边 )    2 . 在 S 中,令 d(j)=min{d(i),i 属于 S} ,令 S=S-{j} ,若 S 为空集则算法结束,否则转 3    3 . 对全部 i 属于 S, 如果存在边 j->i ,那么置 d(i)=min{d(i), d(j)+Wj->i} ,转 2    Dijkstra 算法思想为:设 G=(V,E) 是一个带权有向图,把图中顶点集合 V 分成两组,第一组 为已求出最短路径的顶点集合(用 S 表示,初始时 S 中只有一个源点,以后每求得一条最短路 径 , 就将 加入到集合 S 中,直到全部顶点都加入到 S 中,算法就结束了),第二组为其余未确 定最短路径的顶点集合 (用U 表示) ,按最短路径长度的递增次序依次把第二组的顶点加入 S 中。 在加入的过程中, 总保持从源点 v 到 S 中各顶点的最短路径长度不大于从源点 v 到 U 中任何顶点 的最短路径长度。此外,每个顶点对应一个距离, S 中的顶点的距离就是从 v 到此顶点的最短路 径长度, U 中的顶点的距离, 是从 v 到此顶点只包括 S 中的顶点为中间顶点的当前最短路径长度。   算法具体步骤    ( 1)初始时, S 只包含源点,即 S= ,v 的距离为 0 。U 包含除 v 外的其他顶点, U 中顶点 u 距离为边上的权(若 v 与 u 有边)

文档评论(0)

171****9219 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档