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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Dijkstra 算法解释 本文引用三篇文章:分别是 谢光新 -Dijkstra 算法, zx770424 -Dijkstra 算法, 中华儿女英雄 -Dijkstra 算法 有兴趣的朋友请引用原文,由于分类很不相同难以查找,此处仅作汇总。 谢光新 的文章浅显易懂,无需深入的数学功力,每一步都有图示,很适合初学者了解。 zx770424 将每一步过程, 都用图示方式和公式代码 伪代码对应也有助于, 代码 的理解。 中华儿女英雄 从大面上总结了 Dijkstra 的思想,并将演路图描叙出来了。起到总结的效果。 希望这篇汇总有助于大家对 Dijkstra 算法的理解。 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 + 无穷大之间不存在边  ) 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 有边)或 )(若 u 不是 v 的出边邻接点)。 ( 2)从 U 中选取一个距离 v 最小的顶点 k,把 k,加入 S 中(该选定的距离就是 v 到 k 的最 短路径长度)。 ( 3)以 k 为新考虑的中间点,修改 U 中各顶点的距离;若从源点 v 到顶点 u( u U)的距离 (经过顶点 k)比原来距离(不经过顶点 k)短,则修改顶点 u 的距离值,修改后的距离值的顶点 的距离加上边上的权。 ( 4)重复步骤( 2)和( 3)直到所有顶点都包含在 S 中。 复杂度分析 Dijkstra 算法的时间复杂度为 O(n^2) 空间复杂度取决于存储方式,邻接矩阵为 O(n^2) Dijkstra 算法的基本思想是:

文档评论(0)

183****9328 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档