定义:有向图
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