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连接都正确~

相关推荐
Blossom.1184 小时前
移动端部署噩梦终结者:动态稀疏视觉Transformer的量化实战
java·人工智能·python·深度学习·算法·机器学习·transformer
轻微的风格艾丝凡4 小时前
卷积的直观理解
人工智能·深度学习·神经网络·算法·计算机视觉·matlab·cnn
田梓燊7 小时前
红黑树分析 1
算法
晚风吹长发7 小时前
二分查找算法+题目详解
c++·算法·二分查找
悠悠~飘7 小时前
18.PHP基础-递归递推算法
算法·php
pilgrim538 小时前
结合 Leetcode 题探究KMP算法
算法·leetcode
罗义凯8 小时前
其中包含了三种排序算法的注释版本(冒泡排序、选择排序、插入排序),但当前只实现了数组的输入和输出功能。
数据结构·c++·算法
kevien_G19 小时前
JAVA之二叉树
数据结构·算法
syt_biancheng9 小时前
Day3算法训练(简写单词,dd爱框框,3-除2!)
开发语言·c++·算法·贪心算法
二进制的Liao9 小时前
【编程】脚本编写入门:从零到一的自动化之旅
数据库·python·算法·自动化·bash