迪杰斯特拉算法

输入可能是边以及权值,将其保存在邻接表之后转为使用邻接矩阵来进行存储。然后需要一个数组来存放从起点到所有点的距离的数组dist,需要一个visited数组来表示是否以访问。

算法流程:

  1.   首先初始化起点到各点的初始距离
  2.   选择其中最短的一个距离对应的顶点,并且要求该点未被访问。这个时候选到的点为起点到该点的最短距离,可以使用反证法证明:如果此时选到的点不是最短的距离,那么肯定有另外一个点,起点到达该点之后再到达选中的点的距离更短。但是由于迪杰斯特拉算法解决的是权值非负的图,因此在此基础上再加多边只会更大。因此此时选到的点就是起点到选中点的最短距离。
  3.   然后将该点标记为已访问,然后从该点往其他未访问过的点前进,因为已访问过的点已经是最短距离了,无需再访问,此过程如果发现新的路径更短,那么更新dist数组。
  4.   重复2,3直至访问玩所有顶点。

 

posted @   海蓝笨  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示