书接上文,本文来解决最小生成树问题:
1.什么是最小生成树?
最小生成树问题可以简单地理解为将一张各点链接后的无向图。在一个赋权的连通的无向图 G 中找出一个生成树,并使得这个生成树的所有边的权数之和为最小。
先立个FLg,数学建模系列更新完毕后会给出如下问题的解:
https://blog.csdn.net/weixin_44949135/article/details/115614625?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-1.essearch_pc_relevant&spm=1001.2101.3001.4242
这个博客里继承了一些经典的问题,最后解决。
2.最小生成树的两种解法:
(1)破圈法
(2)避圈法
(1)如图所示,找到最大的边,破掉圈。
(2)避圈法
(3)直接用prim法求解。
基本思想:设置两个集合P和Q,其中P用于存放的最小生成树G中的顶点,集合Q存放的最小生成树G中的边。P的处置随便设为某一个顶点。基本思想是将P中的顶点与P中没有的顶点一一比对,拿最小的value填充进P和Q中。如此循环,直到所有的点都被包含进P为止。感觉和避圈发差不多的逻辑。
clc;clear;
a=zeros(7);
a(1,2)=50; a(1,3)=60<