数学建模图论算法学习总结

数学建模图论算法学习总结

图论基本知识

B站视频: 图论中的圈与块:

一、Dijkstra& Floyd求解最短路径

1.1 Dijkstra (MATLAB C#)

采用贪心算法(Greedy Algorithm)范式进行设计 B站MATLAB实现: C#实现:

1.2 Floyd (MATLAB) Bellman-Ford

用于计算带权有向图中单源最短路径。 采用动态规划(Dynamic Programming)进行设计 B站MATLAB实现: 总结:到问题,转化为带权邻接矩阵,然后输入程序。数学建模时可以用不同算法比较分析,更有说服力。

二、Kruskal& Prim求解最小生成树

B站视频,讲的特别好!

2.1最小生成树

生成树: i. 不能有环 ii. 必须连接图中的全部顶点 所以最小生成树的任意两个顶点之间可以连通,对于有N个顶点的树,其边的个数为N-1。 最小生成树: 对于一个图,可以有很多生成树,边的权值相加最小的就是最小生成树。 应用: 如几个城市之间铺设光缆,按最小生成树铺设,就可以实现几个城市之间都能连通,所需成本又最小。

2.2 Kruskal

2.3 Prim

三、最大流

管道网络中每条边的最大通过能力(容量)是有限的,实际流量不超过容量。 最大流问题(maximum flow problem),一种组合最优化问题,就是要讨论如何充分利用装置的能力,使得运输的流量最大,以取得最好的效果。 基本概念: 算法:FF算法、EK算法、dinic算法 EK算法:BFS找增广路 dinic算法

四、二分匹配,匈牙利算法

二分图 找增广路

经验分享 程序员 微信小程序 职场和发展