单源最短路径(single-source shortest path )

本文详细介绍了单源最短路径问题,包括问题描述、解决思路和两种常见算法:Bellman-Ford和Dijkstra。在不含负权重边的情况下,Dijkstra算法利用贪心策略寻找最短路径;而Bellman-Ford算法适用于存在负权重边的情况,通过松弛操作逐步更新最短路径,时间复杂度为O(VE)。此外,还讨论了差分约束系统与最短路径的关系。
摘要由CSDN通过智能技术生成

《算法导论》单源最短路径笔记

问题描述:给定一个图G=(V,E),我们希望找到从给定源结点到每个结点v的最短路径

解决思路:两个结点之间的一条最短路径包含着其他的最短路径。

注:最短路径不能包含权重为负值的环路。当图中不含负权重边的时候我们可以使用Dijkstra算法来找到所有从源结点出发最短的路径。当图中含有负权重边的时候我们使用效率低一些的Bellman-Ford算法,在找寻最短路径的同时不断判断图中是否包含负权重环路。

1. 松弛操作(Relaxation)

我们将结点v的前驱记作v.pi,v到源点的最短距离为v.d。我们首先将d初始化为无穷大,pi初始化为NULL。


然后我们便可以使用任意一种寻找最短路径的算法来遍历图中的点并更新点到源点的最短路径了。

其中更新最短路径的操作也叫做放松(relax),伪代码如下:


2. Bellman-Ford

Bellman-Ford算法解决的是一般情况下的单源最短路径问题。通过对边进行松弛

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值