第24章:单源最短路径

最短路径一般来说是简单路径,即不包含环路的路径。一方面最短路径不能包含权重为负值的环路,因为若包含权重为负值的环路,则我们可以遍历这环路任意遍,则总是得到比之前权重值比之前少的最短路径,我们规定如果从源结点到某一结点的某条路径上存在权重为负值的环路,我们认为其最短路径权重值为负无穷。另一方面,如果最短路径包含权重值和为正值或0的环路,我们可以把这个环路删除,得到一个权重值更少或和之前一样的的最短路径,并且该路径是简单路径。因此不失一般性,我们可以假定找到的最短路径中没有环路,即它们都是简单路径。

有一个关于最短路径的定理,那就是最短路径的子路径也是最短路径,证明见算法导论第24章。

书中介绍了bellman-ford,利用拓扑排序和Dijkstra这三种算法来解决单源最短路径问题。它们的适用情形如下:

算法 适用情形
bellman-ford 有向图(能应用于无向图,因为可以把无向图理解为有向图),边的权重可以为负值,允许有环路,如果该环路权重和为负值,则算法会探测并报告其存在
利用拓扑排序 有向图,边的权重可以为负值,但不能有环路,所以不能应用于无向图
Dijkstra 有向图(也能应用于无向图),边的权重必须不能为非负值,可以有环路,当然该环路的权重和为非负值
一:bellman-ford算法

bellman-ford算法解决的是一般情况下的单源最短路径问题,在这里,边的权重可以为负值。给定带权重的有向图**G=(V,E)和权重函数w: E->**Rbellman-ford算法返回一个布尔值,以表明是否存在一个从源结点可以到达的权重为负值的环路。如果存在这样一个环路,算法将告诉我们不存在解决方案,返回false;如果没有这种环路存在,算法将给出最短路径和它们的权重

bellman-ford算法通过对边进行松弛操作来渐渐地降低从源结点s到每个结点v的最短路径的估计值v.d,知道该估计值与实际的最短路径权重 δ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录(Table of Contents)   前言(Preface)   第一部分(Part I) 基础(Foundations)   第一 计算中算法的角色(The Role of Algorithms in Computing)   第二 开始(Getting Started)   第三 函数的增长率(Growth of Functions)   第四 递归(Recurrences)   第五 概率分析与随机化算法(Probabilistic Analysis and Randomized Algorithms)   第二部分(Part II) 排序与顺序统计(Sorting and Order Statistics)   第六 堆排序(Heapsort)   第七 快速排序(Quicksort)   第八 线性时间中的排序(Sorting in Linear Time)   第九 中值与顺序统计(Medians and Order Statistics)   第三部分(Part III) 数据结构(Data Structures)   第十 基本的数据结构(Elementary Data Structures)   第十一 散列表(Hash Tables)   第十二 二叉查找树(Binary Search Trees)   第十三 红-黑树(Red-Black Trees)   第十四 扩充的数据结构(Augmenting Data Structures)   第四部分(Part IV) 高级的设计与分析技术(Advanced Design and Analysis Techniques)   第十五 动态规划(Dynamic Programming)   第十六 贪婪算法(Greedy Algorithms)   第十七 分摊分析(Amortized Analysis)   第五部分(Part V) 高级的数据结构(Advanced Data Structures)   第十八 B-树(B-Trees)   第十九 二项式堆(Binomial Heaps)   第二十 斐波纳契堆(Fibonacci Heaps)   第二十一 不相交集的数据结构(Data Structures for Disjoint Sets)   第六部分(Part VI) 图算法(Graph Algorithms)   第二十二 基本的图算法(Elementary Graph Algorithms)   第二十三 最小生成树(Minimum Spanning Trees)   第二十四 单源最短路径(Single-Source Shortest Paths)   第二十五 全对的最短路径(All-Pairs Shortest Paths)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值