MATLAB图论合集(二)计算最小生成树

今天来介绍第二部分,图论中非常重要的知识点------最小生成树。作为数据结构的理论知识,Prim算法和克鲁斯卡尔算法的思想此处博主不详细介绍,建议在阅读本帖前熟练掌握。


对于无向带权图,在MATLAB中可以直接以邻接矩阵的方式创建出来,如下:

Matlab 复制代码
A=[0 20 0 0 15 0;
   20 0 20 60 25 0;
   0 20 0 30 18 0;
   0 60 30 0 35 10;
   15 25 18 35 0 15;
  0 0 0 10 15 0];
G=graph(A);

但是这种创建方式对于可视化并不是很友好------无法在图上显示每条边对应的权值,因此采用下面的方式创建:

Matlab 复制代码
s=[1 1 2 2 2 3 3 4 4 5];
t=[2 5 3 4 5 4 5 5 6 6];
weights=[20 15 20 60 25 30 18 35 10 15];
G=graph(s,t,weights);
plot(G,'EdgeLabel',weights);

创建出的带全无向图如下:

首先我们先用普利姆算法手写一遍,得出的答案如下:

然后用MATLAB计算并可视化,用到内置函数minspantree

Matlab 复制代码
T=minspantree(G);
plot(T);

计算结果如下:

如图,和博主手算的略微有区别:其实是因为1------2与2------3两条边的权值一致,所以最后找到的结点2无论和结点1还是结点3连接都正确~

相关推荐
charlie11451419122 分钟前
从 0 开始的机器学习——NumPy 线性代数部分
开发语言·人工智能·学习·线性代数·算法·机器学习·numpy
执携1 小时前
算法 -- 冒泡排序
数据结构·算法
寻星探路2 小时前
【算法专题】滑动窗口:从“无重复字符”到“字母异位词”的深度剖析
java·开发语言·c++·人工智能·python·算法·ai
wen__xvn2 小时前
代码随想录算法训练营DAY14第六章 二叉树 part02
数据结构·算法·leetcode
Ka1Yan2 小时前
[数组] - 代码随想录(2-6)
数据结构·算法·leetcode
suoge2233 小时前
六面体传热单元(体积热源)有限元MATLAB程序【理论文本+代码】|热传导有限元|对流换热边界条件|有限元传热分析
matlab·有限元编程·热传导·传热有限元·传热学·体积热源·热平衡方程
漫随流水3 小时前
leetcode算法(104.二叉树的最大深度)
数据结构·算法·leetcode·二叉树
matlabgoodboy3 小时前
程序代做python代编程matlab定制代码编写C++代写plc设计java帮做
c++·python·matlab
机器学习之心HML3 小时前
鲸鱼算法(WOA)优化Kriging模型
算法
DYS_房东的猫3 小时前
《 C++ 零基础入门教程》第6章:模板与 STL 算法 —— 写一次,用万次
开发语言·c++·算法