问题描述
带权无向图的顶点数目为v,边数为e,当v较大时,其邻接矩阵v*v元素数目很多,手动创建过于麻烦。
解决方法
step.1
根据图中的所有边(每一条边都包含2个顶点i、j,以及边的权值w),
创建一个文本文件tu.txt,共e行3列,
第1列为i,第2列为j,第3列为w,
每一行为图中一条边的信息。
step.2
编写MATLAB函数,
输入:顶点数、边数、e行3列的矩阵B(B根据tu.txt生成)
输出:图的邻接矩阵G
function [G] = adjacentmatrix(v,e,B)
% 根据带权无向图的所有边组成的矩阵B,生成图的邻接矩阵G
G=inf(v);
for i=1:v
for j=1:v
if i==j
G(i,j)=0;
end
for m=1:e
if B(m,1)==i && B(m,2)==j
G(i,j)=B(m,3);
elseif B(m,1)==j && B(m,2)==i
G(i,j)=B(m,3);
end
end
end
end
end
step.3
执行主函数main
clear
clc
v=39;%顶点个数
e=54;%边数
%% 生成图的邻接矩阵G
fileID=fopen('tu.txt');%tu.txt文件每一行为(顶点1,顶点2,边的权值)
A=textscan(fileID,'%f %f %f');
fclose(fileID);
B=cell2mat(A);
G=adjacentmatrix(v,e,B);
注:程序结构文章来源:https://www.toymoban.com/news/detail-521408.html
下面的三个文件需放在同一文件夹下文章来源地址https://www.toymoban.com/news/detail-521408.html
到了这里,关于根据图的信息创建邻接矩阵(MATLAB实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!