第11章 图论模型与算法
学习目标
- 掌握无根树的常用存储法和转化为有根树的方法
- 掌握由表达式构造表达式树的算法
- 掌握Kruskal算法及其正确性证明,并用并查集实现
- 掌握基于优先队列的Dijkstra算法实现
- 掌握基于FIFO队列的Bellman-Ford算法实现
- 掌握Floyd算法和传递闭包的求法
- 理解最大流问题的概念、流量的3个条件、残量网络的概念和求法
- 理解增广路定理与最小割最大流定理的证明方法,会实现Edmonds-Karp算法
- 理解最小费用最大流问题的概念,以及平行边和反向弧可能造成的问题
- 会实现基于Bellman-Ford的最小费用路算法
- 学会用网络流算法求解二分图最大基数匹配和最大权完美匹配
- 学会最小费用循环流的消圈算法
本章介绍一些常见的图论模型和算法,包括最小生成树、单源最短路、每对结点的最短路、最大流、最小费用最大流等。限于篇幅,很多算法都没有给出完整的正确性证明(很容易在其他参考资料中找到相关内容),但给出了简单、易懂的完整代码,方便读者参考。