数据结构-6.5图

前言-数据结构

数据结构是需要反复咀嚼,不管什么时候都可以重中获取现在在开发中的遇到的问题答案。

最短路径(有向网)

  • 求两个顶点的最短路径 (解决甲地到乙地的那条路径最短例子)
  • 单源点的最短路径(不是求任意两个点的最短路径,那个是顶点对):给定一个出发点(单源点)和一个有向网G = {V,E}求出源点到其他各顶点之间的最短路径

迪杰斯特拉(Dijkstra)算法

  • 说明

  • 设置并且逐步扩充一个集合S(存放已经求出最短路径的顶点 ),

  • V(所有顶点) - S,其实也就是W

  • 直到V(所有顶点) - S为空

  • 例子

  • 并且是两个点之间的 和权(就是加起来的权) 最小就行 比如:1-2-4-5 = 11 + 12 = 23 < 1-5 = 30
    在这里插入图片描述

  • 最后 在这里插入图片描述

  • 总结算法

  • 设源点V1则S包含V1,W(除V1外的所有顶点) = V(所有顶点集合) - S(V1)

  • 如果有弧<Vi,Vj>,两个顶点的距离为权值,否则就是∞

  • 选择一个权值最小的顶点Vm加入到S中,每次往S中加入一个顶点,就要修正到各个顶点的距离

  • 如果<Vi,Vm> + <Vm,Vj> < <Vi,Vj>,那么就将Vi到下一个顶点的距离改为 Vm到下一个顶点的距离<Vi - Vj+1> -> <Vm - Vj+1>

  • 直到W为空,S中包含所有顶点为止

猜你喜欢

转载自blog.csdn.net/weixin_41732253/article/details/109632726