19-最短路径(Shortest Path)

最短路径(Shortest Path)

最短路径是指两个顶点之间权值之和最小的路径(有向图,无向图均可,不能有负权环

最短路径到底表达的是什么意思呢?

例如下面的有向图

从顶点A出发,到达其余顶点的权值如下

如果是无向图

从顶点A出发,到达其余顶点的权值如下

如果是无权图,则相当于是全部边的权值为1的有权图

无权图同样有最短路径的概念,在这种情况下, 由于每条边的权值均相等,所以两个顶点之间,经过的边数量最少,就是两个顶点的最短路径。

无权有向图依然适用这种方法。

负权边

当有负权边,但是没有负权环时,依然存在最短路径。例如下面的有向图

其中

  1. A到E的最短路径是:A→B→E
负权环

有负权环时,不存在最短路径

例如下面的无向与有向图

例如

  1. 在有向图中,顶点D,E,F构成了环,并且成环中有边的权值为负数,这种环就称为负权环。
  2. 在无向图中,顶点D,E,F同样构成了环,并且成环中有边的权值为负数,这种环依然称为负权环。

为什么有负权环就没有最短路径呢?

假设现在要计算A到E的最短路径,现在的最短路径并不是A到E,而是A→E→D→F→E,这种情况下的权重是最小的,这时的权值是-1,如果继续以环进行绕圈,路径为A→E→D→F→E→D→F→E,现在的权值是-8。如果一直循环,最终得到的权值会越来越小。所以这种情况,A到E的路径可以无限段,所以不存在最短路径。

应用场景

最短路径的经典应用场景之一:路径规划问题

求最短路径的3个经典算法:

  1. 单源最短路径算法(单源:单个起点的意思;即从一个点出发,到其他点的最短路径)
    • Dijkstra(迪杰斯特拉算法)
    • Bellman-Ford(贝尔曼-福特算法)
  2. 多源最短路径算法(多源:多个起点;即从多个起点出发,到其他点的最短路径,能把这些顶点之间,互相到达的最短路径都计算出来)
    • Floyd(弗洛伊德算法)

以上三种算法,都会在后面的内容中介绍到

完!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、定义 在一幅加权有向图中,最短路径是指从顶点s到顶点t的最短路径是所有从s到t的路径中的权重最小者。求解最短路...
    null12阅读 7,380评论 0 4
  • 1. 图的定义和基本术语 线性结构中,元素仅有线性关系,每个元素只有一个直接前驱和直接后继;树形结构中,数据元素(...
    yinxmm阅读 10,853评论 0 3
  • 前言 本专题旨在快速了解常见的数据结构和算法。 在需要使用到相应算法时,能够帮助你回忆出常用的实现方案并且知晓其优...
    蛮三刀酱阅读 8,733评论 0 0
  • 1 最小生成树(minimum spanning tree) (1)基本概念生成树的概念:一个有 n 个结点的连通...
    1nvad3r阅读 9,392评论 0 5
  • 图的最短路径 迪杰斯特拉算法 贝尔曼-福特算法 弗洛伊德算法 SPFA算法(中国西南交通大学段凡丁发明) 最短路径...
    董泽平阅读 3,332评论 0 1

友情链接更多精彩内容