图的存储
若一个图的每一对不同顶点恰有一条边相连,则称为 完全图。
稀疏图 的边数远远少于完全图,用 邻接表 存储;
稠密图 的边数接近于或等于完全图,用 邻接矩阵 存储。
从图中的某个顶点出发到达另外一个顶点的所经过的 边的权重和最小 的一条路径,称为 最短路径。
- Dijkstra (迪杰斯特拉算法)基于 贪心 思想,用于求某个单源点到其余各个顶点的最短路径,图中边的权值不能出现负数,即 非负权 的 单源最短路径 算法。
- Floyd (弗洛伊德算法)基于 动态规划 思想,用于求任意一对顶点间的最短路径,图中边的权值可以是负数,但不能出现 负环,主要处理 多源最短路径 问题。
- SPFA 基于 队列 优化思想,用于求某个单源点到其余各个顶点的最短路径,图中边的权值可以是负数,但不能出现 负环。
一、Dijkstra 迪杰斯特拉算法
Dijkstra 算法: 单源 正权值 最短路径,算法思想