matlab怎么判断是否是harary图
时间: 2023-06-13 08:02:46 浏览: 40
判断一个图是否为 Harary 图的方法是计算其相关的 Harary 矩阵,如果该矩阵的所有主子式均为正数,则该图是 Harary 图。具体步骤如下:
1. 首先,对于给定的无向图,计算其邻接矩阵 $A$。
2. 根据邻接矩阵 $A$,构造 Harary 矩阵 $H$。Harary 矩阵的定义如下:
$H = (h_{i,j})$,其中 $h_{i,j}=\frac{1}{d_i+d_j-a_{i,j}-1}$,$d_i$ 表示节点 $i$ 的度数,$a_{i,j}$ 表示节点 $i$ 和节点 $j$ 之间是否有边相连。
3. 计算 Harary 矩阵 $H$ 的所有 $n$ 个主子式($n$ 为矩阵 $H$ 的阶数),如果所有主子式均为正数,则该图是 Harary 图;否则不是。
Matlab 代码实现如下:
```matlab
function isHarary = isHararyGraph(A)
% 判断一个无向图是否为 Harary 图
% 输入:邻接矩阵 A(n*n)
% 输出:isHarary(true/false)
n = size(A, 1);
H = zeros(n, n);
for i = 1:n
for j = 1:n
if i == j
H(i, j) = 0;
else
di = sum(A(i,:));
dj = sum(A(j,:));
aij = A(i,j);
H(i, j) = 1 / (di + dj - aij - 1);
end
end
end
isHarary = all(eig(H) > 0);
end
```
其中,`eig(H)` 表示求矩阵 $H$ 的所有特征值,`all(eig(H) > 0)` 表示判断矩阵 $H$ 的所有特征值是否均大于 $0$。如果是,则返回 `true`,表示该图为 Harary 图;否则返回 `false`,表示该图不是 Harary 图。