首页 > 编程知识 正文

matlab 邻接矩阵,怎样用matlab生成邻接矩阵

时间:2023-05-03 13:39:49 阅读:191162 作者:3088

邻接矩阵与关联矩阵均是图的不同形式的矩阵表示,他们均可代表图的拓扑结构,无论是对于无向图还是有向图它们之间均能相互转换,下列代码实现了无向图的关联矩阵与邻接矩阵之间的相互转化。

function res = trans(M,f)% M为图的邻接矩阵% f = 0时,要完成邻接矩阵转化为关联矩阵% f = 1时,要完成关联矩阵转化为邻接矩阵if f==0 m = sum(sum(M))/2; n = size(M,1); res = zeros(n,m); k = 1; for i=1:n for j=i:n if(F(i,j)~=0 res(i,k)=1; res(j,k)=1; k = k+1; end end endelseif f==1 m = size(F,2); n = size(F,1); res = zeros(n,n); for i=1:m A = find(F(:,i)~=0; res(A(1),A(2))=1; res(A(2),A(1))=1; endelse fprint('输入f值不正确!!!');end

若为有向图,则邻接矩阵与关联矩阵的转化可表示如下:

function res = trans(M,f)% M为图的邻接矩阵% f = 0时,要完成邻接矩阵转化为关联矩阵% f = 1时,要完成关联矩阵转化为邻接矩阵if f==0 m = sum(sum(M)); n = size(M,1); res = zeros(n,m); k = 1; for i=1:n for j=i:n if(F(i,j)~=0 res(i,k)=1; res(j,k)=-1; k = k+1; end end endelseif f==1 m = size(F,2); n = size(F,1); res = zeros(n,n); for i=1:m A = find(F(:,i)~=0; if F(A(1),i)== 1 res(A(1),A(2))=1; else res(A(2),A(1))=1; endelse fprint('输入f值不正确!!!');end

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。