计算有向图可达矩阵Matlab实现

来源:互联网 发布:裁剪声音的软件 编辑:程序博客网 时间:2024/05/06 14:44

定义:有向图D=(V,E),顶点集V={v1,v2,...,vn}。定义矩阵P=(pij)n×n

pij=0,1,vivjvivj
称矩阵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;endP(P ~= 0) = 1; % 将不为0的元素变为1P;

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     0P = dgraf(A)P =     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1
0 0
原创粉丝点击