Dijkstra最短路径算法(SPF)

Dijkstra算法是一种求单源最短路径的算法,适用于无负权边的有向或无向图。从一个点开始,每次扩展距离最短的点并更新相邻点的距离。若要求所有点的最短路径,需对每个点调用一次。算法流程包括初始化、循环找到未扩展的最短点并更新相邻点距离。最简单的实现时间复杂度为O(n^2),空间复杂度为O(n)(仅保存距离)或O(2n)(保存路径)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法描述:

Dijkstra算法是一种求单源最短路算法,即从一个点开始到所有其他点的最短路。其基本原理是:每次新扩展一个距离最短的点,更新与其相邻的点的距离。当所有边权都为正时,由于不会存在一个距离更短的没扩展过的点,所以这个点的距离永远不会再被改变,因而保证了算法的正确性。不过根据这个原理,用Dijkstra求最短路的图不能有负权边,因为扩展到负权边的时候会产生更短的距离,有可能就破坏了已经更新的点距离不会改变的性质。

如果用本算法求一个图中全部的最短路,则要以每个点为源调用一次Dijkstra算法。

使用条件与限制:

有向图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值