对于最短路问题的一些总结

屏幕截图 2024-03-29 185234.png
1、Dijkstra算法:每次用离源点最短的边去更新其他边,图中不能存在负权边,否则会破坏性质

**2、Bellman_Ford算法:非常暴力地去遍历所有地边,每次对边都进行更新,如果更新次数 > n - 1,则说明存在负权回路 **

下面解释一下为什么Bellman_Ford算法需要遍历 n - 1次:

Bellman-Ford算法是一种用于解决单源最短路径问题的算法,它通过对图中的边进行松弛操作来逐步求解从源点到其他所有顶点的最短路径。

在Bellman-Ford算法中,为了保证找到最短路径,需要进行 n − 1 n-1 n1次松弛操作,其中 n n n为图中顶点的个数。这是因为在一幅含有 n n n个顶点的图中,任意两个顶点之间的最短路径最多包含 n − 1 n-1 n1条边。因此,进行 n − 1 n-1 n1次松弛操作可以确保找到从源点到所有其他顶点的最短路径。

如果在进行 n − 1 n-1 n1次松弛操作后仍然存在可以继续松弛的边,则说明图中存在负权回路,即存在一个环路,使得沿着这个环路走一圈可以让路径的总权值变小。在这种情况下,Bellman-Ford算法会检测到负权回路并报告图中存在负权回路,因为负权回路会导致最短路径无法确定。

因此,进行 n − 1 n-1 n1次松弛操作是Bellman-Ford算法的关键步骤,确保找到最短路径并检测负权回路。

3、spfa算法:队列优化版的Bellman算法,防止了一些节点无需更新,但是仍然更新的情况

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值