1. 最短路径 —— DAG
1.1. 前置条件
1.2. 基本原理
DAG上一定存在拓扑排序,且若在有向图 G 中从顶点 u -> v有一条路径,则在拓扑排序中顶点 u 一定在顶点 v 之前,而因为在DAG图中没有环,所以按照DAG图的拓扑排序进行序列最短路径的更新,一定能求出最短路径。
1.3. 代码示例
题目:给定几个带点权有向无环图,选一条从入度为0的起点走到出度为0的终点的路径,使得路径上的点权和最小。
分析:
1.4. 特性分析
2. 最短路径 —— Dijkstra 算法
2.1. 前置条件
2.2. 基本思路
(1) 找出“最便宜”的节点,即可在最短时间内到达的节点。
(2) 更新该节点对应的邻居节点的开销。
(3) 重复这个过程,直到对图中的每个节点都这样做了。
(4) 计算最终路径。
2.3. 程序代码
2.4. 动画展示
2.5. 特性分析
3. 最短路径 —— Bellman-Ford 算法
3.1. 前置条件
3.2. 基本思路
3.3. 程序代码
3.4. 特性分析