最短路径问题——单源最短路径问题

一、相关概念及性质

1、环路

负环路:将环路的所有权重相加为负值。

我们要说明的是:对于我们所讨论的最短路径问题中,最短路径上一定不会存在环路。因此,对于图G=\left ( V,E \right ),每条最短路径至多存在\left | V \right |-1条边。

解释:在最短路径问题中,我们所讨论的图均不含负环路(严谨的说,不含从源点可达的负环路)。这是因为,如果存在负环路,我们总可以通过多次经过该负环路来使得路径长度不断减少,这时最短路径是不存在的,于是我们不考虑负环路情况。所以最短路径上肯定不会存在负环路。如果路径上存在非负环路,那么我们总可以通过去掉该环路使得路径长度减少。总而言之,求得的最短路径上一定不会存在环路。

2、松弛操作(relaxation)

对于每个结点v使用v.\pi保存其前驱结点,v.d保存从源结点sv的最短路径估计。任何算法结束时,v.\pi保存v最短路径上的前驱结点,v.d保存从源结点sv的最短路径的长度。

初始化:

时间复杂度:O(V)

对边\left ( u,v \right )松弛操作:

时间复杂度:O(1)

我们所讨论的算法都需要使用如上初始化和松弛操作。算法之间的不同之处在于:对每条边进行松弛的次数和次序不同。Dijkstra算法和用于有向无环图的最短路径算法对每条边松弛一次,Bellman-Ford算法则对每条边松弛\left | V \right |-1次。

3、引理及性质

我们所使用的算法正确性依赖于如下性质及定理。

引理(最短路径的子路径也是最短路径):p=\left \langle v_{0},v_{1},...,v_{k} \right \rangle为从结点v_{0}到结点v_{k}的一条最短路径,并且对于任意i,j,0\leq i\leq j\leq k,设p_{ij}=\left \langle v_{i},v_{i+1}....,v_{j} \right \rangle为路径p中从结点v_{i}v_{j}的子路径。那么p_{ij}是从结点v_{i}v_{j}的一条最短路径。

三角不等式性质:对于任何边\left ( u,v \right )\in E,有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值