找回密码
 立即注册
查看: 31|回复: 0

数据词典:迪杰斯特拉算法(Dijkstra Algorithm)

[复制链接]

1231

主题

74

回帖

4110

积分

管理员

积分
4110
发表于 2025-12-4 22:21:59 | 显示全部楼层 |阅读模式
Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。
Dijkstra算法的基本思想:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就将加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点vS中各顶点的最短路径长度不大于从源点vU中任何顶点的最短路径长度。此外,每个顶点对应一个距离,S中的顶点的距离就是从v到此顶点的最短路径长度,U中的顶点的距离,是从v到此顶点只包括S中的顶点为中间顶点的当前最短路径长度。
Dijkstra算法的基本步骤如下:
1.初始时,S只包含起点sU包含除s外的其他顶点,且U中顶点的距离为"起点s到该顶点的距离"。例如,U中顶点v的距离为(s,v)的长度,然后sv不相邻,则v的距离为∞。
2.U中选出"距离最短的顶点k",并将顶点k加入到S中;同时,从U中移除顶点k
3.更新U中各个顶点到起点s的距离。之所以更新U中顶点的距离,是由于上一步中确定了k是求出最短路径的顶点,从而可以利用k来更新其它顶点的距离;例如,(s,v)的距离可能大于(s,k)+(k,v)的距离。
4.重复步骤(2)(3),直到遍历完所有顶点。
【出处】网络。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|全数联人才测评中心 ( 京ICP备2024094898号 )

GMT+8, 2026-1-3 05:52 , Processed in 0.081298 second(s), 20 queries .

版权所有: 全数联人才测评(北京)中心 备案图标.png 京公网安备11011102002767号 京ICP备2024094898号

友情链接: 中华全国数字人才培育联盟 全数联人才测评中心学习平台 全数联人才测评中心存证平台 全数联人工智能职业认证中心

快速回复 返回顶部 返回列表