Dijkstra Bellman-Ford SPFA 几种最短路径求法 基本理论

本文介绍了最短路径问题的四种常见算法:Dijkstra、堆优化的Dijkstra、Bellman-Ford和SPFA。Dijkstra算法适合无负权图,而Bellman-Ford能处理负权但复杂度高,SPFA在效率上优于Bellman-Ford但稳定性不足。Floyd-Warshall算法用于求每对节点间的最短路径,但复杂度较高。
摘要由CSDN通过智能技术生成

最短路问题
一、概念:
在图论中最短路径有着非常广泛的应用,而由于应用的方法不同也形成了多种求最短路径的方法,而对于不同类的问题虽然每种方法都可以用,不过各有其最优的实现方法。
首先对于最短路径问题,可以分成如下几类:


1. 求单源最短路径问题:这种问题是最短路径问题中最基本的问题了,其主要目的是求从一个固定源点开始到每一个点的最短路径;对于这个问题,所有的方法都适用;


2. 求单汇最短路径问题:这种问题的目标是求所有的点到某个确定汇点的最短路径,不难想到,对于求所有点到某个点的最短路径,就相当于求从这个点出发到其余点的最短路径,不过需要对每条边进行“反向”操作(类似于将竖直上抛运动转化为自由落体运动一样),这样同理于单源最短路问题,所有的方法都适用;


3. 求一个确定源点到一个确定汇点的最短路径问题:这个问题其实非常简单,通过分析不难发现,解决这个问题的最好方法其实还是和单源最短路一模一样的,到现在为止尚未发现比应用求单源最短路方法更好的解决这个问题的方法;


4. 求每对源汇点间最短路径问题:这个问题首先可以简化为从每个节点开始求一遍单源最短路,然后慢慢统计即可。不过这个方法的复杂度比较大,这样子就衍生出了一种特殊的方法来求解这个问题,不过在时间复杂度上要落后于多次单源最短路,这点是比较重要的。


综上所述,其实在最短路径问题中,最重要的其实就是如何求解单源最短路问题。


二、算法:
对于单源最短路问题,我们有两种最基本的方法:Dijkstra

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值