最短路 Finding Shortest Path

本文详细介绍了图的存储方式,包括邻接矩阵和邻接表,以及四种常用的最短路径算法:Dijkstra、Floyd、SPFA和Bellman-Ford。Dijkstra算法适用于非负权的单源最短路径,Floyd算法可以处理多源最短路径,SPFA是Bellman-Ford的优化版,而Bellman-Ford则能处理含负权边的最短路径问题。每种算法的原理、适用场景和代码实现都进行了讲解,并给出了相关题目实例进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图的存储

若一个图的每一对不同顶点恰有一条边相连,则称为 完全图
稀疏图 的边数远远少于完全图,用 邻接表 存储;
稠密图 的边数接近于或等于完全图,用 邻接矩阵 存储。

从图中的某个顶点出发到达另外一个顶点的所经过的 边的权重和最小 的一条路径,称为 最短路径

  • Dijkstra (迪杰斯特拉算法)基于 贪心 思想,用于求某个单源点到其余各个顶点的最短路径,图中边的权值不能出现负数,即 非负权单源最短路径 算法。
  • Floyd (弗洛伊德算法)基于 动态规划 思想,用于求任意一对顶点间的最短路径,图中边的权值可以是负数,但不能出现 负环,主要处理 多源最短路径 问题。
  • SPFA 基于 队列 优化思想,用于求某个单源点到其余各个顶点的最短路径,图中边的权值可以是负数,但不能出现 负环

一、Dijkstra 迪杰斯特拉算法

Dijkstra 算法: 单源 正权值 最短路径,算法思想

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值