定义:有向图D=(V,E),顶点集V={v1,v2,...,vn}。定义矩阵P=(pij)n×n 为
pij=⎧⎩⎨0,1,vi到vj不可达vi到vj可达
称矩阵P是图D的可达矩阵 【算法】
一般,设n阶有向图D的邻接矩阵为A,由A可得图D的可达矩阵P,步骤
- 首先,求出Bn=A+A2+⋅⋅⋅+An
- 然后把矩阵Bn中不为0的元素改为1,为0的元素保持不变
【程序】
[参数]
- A表示图的邻接矩阵
- B表示图的可达矩阵
[matlab program]
% 计算图的可达矩阵
function P=dgraf(A)
n = size(A,1);
P = A;
% 计算矩阵$B_n$
for i = 2:n
P = P+A^i;
end
P(P ~= 0) = 1; % 将不为0的元素变为1
P;
test
A = [0 1 1 1;1 0 1 1;1 1 0 1;1 1 1 0]
A =
0 1 1 1
1 0 1 1
1 1 0 1
1 1 1 0
P = dgraf(A)
P =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1