怎么样用matlab编写程序借助二元矩阵计算可达矩阵

怎么样用matlab编写程序借助二元矩阵计算可达矩阵,第1张

编搏唤程思路如下:

假设邻接矩阵为A,I为链路长度矩阵。毁银族经过n步后为可达矩阵M,

则有:

B=(A+I)^n=I+A+A^2+..A^n

再将B中非零元素改为1,零元素不变即为A的n步可达矩阵M;

代码如下:

function M=reach(A,I,n)

%A,I和n要给定

[row,cow]=size(A) %此处row和cow应该相等

E=ones(row,cow) %生成单位矩阵E

B=zeros(row,cow) %初始全0矩阵B

B=B+I

%循环+A^n

for i=1:n

B=B+A^i

end

%将B中非零元素改为1,零元素不变,即让B和E进行交运算。

M=B&E纤弊

end

楼上那个算法缺了一步,

应该是

n=size(A,1)

p=A

for i=2:n

p=p+A^i

end

x=eye(n,n)

p=p+x

p(p~=0)=1

因为可达矩阵是I+A+A^2+A^3+……


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12546450.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存