保研复习:数据结构(最短路)

本文详细介绍了多源最短路和单源最短路的几种经典算法,包括Floyd算法的三层循环实现、Dijkstra算法的贪心策略以及Bellman-Ford算法的负权处理能力。此外,还提到了SPFA算法作为Bellman-Ford的优化版。同时,A*算法被提及用于寻找两点间的最短路径,它结合了实际代价和预测代价进行节点选择。
摘要由CSDN通过智能技术生成

多源最短路:

Floyd(O(n^3)):

依次考虑以每个点为中间点更新距离,判断考虑了这个点之后所有点两两之间的最短距离。(三重循环;松弛;可以处理负权、检测负环)

单源最短路:

Dijkstra(O(n^2)):

从源点开始,选距离源点最近的点,加入源点所在的集合,之后每次都选择离源点所在集合最近的点加入集合,直到所有点都加入集合。每次加入点的时候,记录该点到源点的距离,就是该点到源点的最短距离。(不能解决带有负权边的问题,因为它利用贪心的思想:若A到C的最短路径经过B,则A到B的那一段必须取最短)

Bellman-ford(O(VE)):

每一次循环,遍历所有边,进行松弛。循环V-1次后,得到单源最短路。(可以处理负权、检测负环(V-1次循环必得最短路,遍历所有边,若仍存在d(v)>d(u)+w(u,v)则有负环))
SPFA:对Bellman-ford用队列优化的版本,类似广度优先搜索。

两点之间最短路:

A*:

根据点到源点的代价和点到终点的预估代价,选择下一个点。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值