确定网络(图形)是否基于其矩阵连接

时间:2014-04-04 22:57:54

标签: matlab graph social-networking octave

如何从给定的m×n矩阵中确定是否连接了双模网络?

当然可以创建一个数据结构来找出它 - 但是有没有数学解决方案?

我发现n x n矩阵(单模网络)很容易:解决方案是:M * M然后查看结果矩阵中的对角线。如果对角线上有任何零,则它没有连接。那不是真的吗?

对于这两个问题,你有什么建议?

1 个答案:

答案 0 :(得分:1)

单模式网络并非如此简单,但您已经接近了。

网络矩阵M本身告诉您哪个节点在一个步骤中连接到哪个其他节点。 M * M告诉您哪个节点与正好两个步骤中的哪个节点连接,M ^ 3是否在正好三个步骤中,依此类推。 “完全”很重要,因为如果节点没有连接到它们自己(零对角元素),那么M * M不仅会获得两步连接,而且会失去一步连接。

如果所有节点都连接到自身,产品(电源)会更有用:

A = (M + eye(size(M)) > 0)

此步骤还将加权矩阵转换为纯邻接矩阵。现在

(A ^ i > 0)

为您提供有关两个节点是否以i步骤或更少连接的信息。在具有n = size(M, 1)个节点的网络中,两个节点之间的距离最多为n - 1步。因此

C = (A ^ (n - 1) > 0)

为您提供两个节点是否完全连接的信息。如果没有未连接的节点对,则连接整个网络,即如果

connected = (sum(C(:)) == N ^ 2)

我不确定如何定义双模网络中的连通性。一种简单的方法是忽略两种类型节点之间的差异,并将它们全部视为单模式网络的一部分。如果M是大小为[m, n] = size(M)的原始双模网络矩阵,那么

M = [zeros(m, m) , M ; M' ; zeros(n, n)];

将其转换为描述大小为(m+n) x (m+n)的相应单模网络的矩阵。


这些矩阵功率不仅可以告诉您整个网络是否已连接,还可以用于查找连接的子网(网络群集)(如果不是)。由于矩阵的幂的行为与其谱分解(a.k.a。eigendecomposition)密切相关,因此这个想法导致了spectral clustering的方法。对于加权同步网络的应用,请参阅例如arXiv:0706.3375