算法简介:图最短路径

算法简介

算法简介

图最短路径相关算法

  • 图最短路径算法总结:
    在这里插入图片描述

1. 深度优先搜索算法(DFS)

2. 广度优先搜索算法(BFS)

  • 解决问题
    求图中多源(全源)最短路问题
  • 时间复杂度
    纯算法时间复杂度O(N^2)
  • 特点
    比深度优先算法块,更加适用于边权相同的情况
  • 代码示例
    最短路径BFS—无向图

3. Floyd-Warshall(弗洛伊德算法----只有五行的算法)

  • 解决问题
    求图中多源(全源)最短路问题
  • 时间复杂度
    O(N^3)
  • 特点
  1. 非常简单,只有五行
  2. 可以求图中全源最短路问题
  3. 也可以求单源最短路问题(指定一个顶点到其余各个顶点的最短路径)
  4. 图中边权可以有负值,但是不可以含有负权回路

3. Dijkstra

  • 解决问题
    求图中单源最短路问题
  • 时间复杂度
  1. 用一般的图的邻接矩阵法存的话,时间复杂度为O(N^2)
  2. 对于稀疏图来说,用堆和邻接表存储法,可以将时间复杂度优化为O((M+N)logN),N为顶点数,M为边数.最坏的情况M等于N^2, 那么O((M+N)logN)比O(N^2) 大,但是一般来说边没有那么多,所以O((M+N)logN)比O(N^2)小很多
  • 特点
  1. 可以求图中单源最短路问题
  2. 时间复杂度为O(N^2),可以优化为O((M+N)logN),N为顶点数,M为边数
  3. 图中边权不可以有负值

4. Bellman-Ford

  • 解决问题
  1. 求图中单源最短路问题
  2. 求图中是否存在负权回路
  • 时间复杂度
  1. 未使用队列优化过的:O(NM),N为顶点 M为边
  2. 使用队列优化过的,最坏的时间复杂度是O(NM),N为顶点 M为边
  • 特点
  1. 是一个无论是思想上还是代码实现上都堪称完美的最短路算法,核心代码只有4行
  2. 可以处理带有负权边的图
  3. 经常会在未达到n-1轮松弛前就已经计算出最短路(最多进行n-1轮边的松弛操作,n为顶点数量)
  • 优化
  1. 经常会在未达到n-1轮松弛前就已经计算出最短路,所以这时可以跳出循环,做优化
  2. 可以使用队列进行优化:每次仅对最短路程发生变化了的点的相邻边执行松弛操作,使用队列保存这些最短路程变化了的点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值