【问题标题】:Determine whether a network (graph) is connected based on its matrix根据矩阵判断一个网络(图)是否连通
【发布时间】:2014-04-05 21:21:28
【问题描述】:

如何从描述双模网络的给定 m x n 矩阵中确定它是否已连接?

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

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

您对这两个问题有何建议?

【问题讨论】:

    标签: matlab graph social-networking octave


    【解决方案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)的单模网络的矩阵。


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-11
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 2022-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多