在系統(tǒng)工程書中戳寸,建立解釋結(jié)構(gòu)模型中求解可達(dá)矩陣是必不可少的一環(huán)
故利用python寫了一段求解可達(dá)矩陣的代碼,只需要輸入鄰接矩陣便可計(jì)算得到可達(dá)矩陣
代碼如下:
import numpy as np
def change(a): #乘自身并歸一
b=np.dot(a,a)
m=a.shape
for i in range(m[0]):
for j in range(m[1]):
if b[i,j]!=0:
b[i,j]=1
return b
def unit(n): #生成n維單位矩陣
a=np.zeros((n,n))
for i in range(n):
for j in range(n):
if i==j:
a[i,j]=1
return a
def keda(b): #生成可達(dá)矩陣
m=b.shape
unit_b=unit(m[0])
K1=b+unit_b
for i in range(m[0]):
KN=change(K1)
if np.array_equal(KN,K1)==True:
break
K1=KN
print(KN)
return KN
#################################################
A=np.array([[0,0,0,0,0,0,0,0,0,0],
[1,0,1,1,0,0,0,0,0,1],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[1,0,0,0,0,1,0,0,0,0],
[1,0,0,0,1,0,0,0,0,0],
[1,1,0,0,0,0,0,1,0,0],
[1,0,1,1,0,0,0,0,0,1],
[1,1,0,1,1,1,0,1,0,0],
[1,0,1,1,0,0,0,1,0,0]],dtype=int)
keda(A)
可以得到運(yùn)算結(jié)果
可達(dá)矩陣結(jié)果.PNG