数据结构与算法-进阶(十一)图&最短路径

摘要

所有的图都是有最短路径的,计算最短路径比较经典的应用场景就是路径规划。最短路径也有它自身的局限性,比如不能出现负权环等。这里先了解最短路径的概况,后面几期将分别介绍求最短路径的几个经典算法。

在有权值的图中,可以找到最短路径,即指两顶点之间权值之和最小的路径,有向图和无向图都是可以找到最短路径的。如下图所示:

上面两个图就是有向图和无向图中顶点 A 到不同顶点的最短路径。

那么无权图有没有最短路径呢?答案也是有的

无权图中的每一个边的权值可以想象成 1,那么每一个边的权值都是一样的。所以无权图的最短路径取决于该顶点到另外一个顶点途径边的数量。

负权边

有权图中,存在边的权值是负数时,被称为负权边。寻找图的最短路径中,是允许有负权边,但是不被允许存在负权环。因为负权环会让路径一直循环,权值一直无限递减下去,如下图所示:

左侧图中,顶点A到顶点E是 -20,是被允许的。右侧图,顶点E到顶点C是-10,是不被允许的,因为顶点E、C、D 形成了一个环,并且是负权环(即三个边权值加起来是负值),在持续的循环下,权值会不断递减,是不合理的。

算法

应用最短路径最多的场景就是路径规划。处理最短路径的算法主要分为两类,一类是单源最短路径,就是确定一个顶点,求该顶点到其他边的最短路径。另外一类就是多源最短路径,就是可以求出任意的两个顶点之间的最短路径。不同的类别都对应的有经典的算法:

  • 单源:Dijkstra(迪杰斯特拉算法)、Bellman-Ford(贝尔曼-福特算法)

  • 多源:Floyd(弗洛伊德算法)

看算法的名称,就大概明白算法都是以发明者的名字来命名的。不同的算法都有各自的特点和局限性,在实际应用中要根据自己的需求来选择。最高级的是理解算法的逻辑,能够触类旁通,后面几期将分别介绍这几个算法。

总结

  • 所有的图都是有最短路径的,不管有向图还是无向图;

  • 图中的权值是允许存在负权边的,但是不允许存在负权环;

  • Dijkstra、Bellman-Ford 和 Floyd 都是获取最短路径的经典算法;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我为双鱼狂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值