【问题标题】:Create adjacence matrix given node connections给定节点连接创建邻接矩阵
【发布时间】:2018-04-22 01:47:50
【问题描述】:

我想在给定 n 行的情况下创建一个邻接矩阵,这些行表示图的某些节点之间的部分连接。例如,由于每条线代表一个集团,线A-B; B-C; C-D; A-E-D 形成如下图。

我的第一种方法是使用for loop 读取每一行,对于每一行我使用另一个for loop 来获取其中的每个节点,最后,使用另一个for loop 检查其余节点是否已经在分析的节点的adyacence列表中,如果没有,我添加它。所有这些都给出了 O(n^3) 的复杂度。是否有另一种方法可以降低复杂性?是否有可能用 O(n) 完成?

【问题讨论】:

  • 输入是什么? IE。现在如何定义集团连接?
  • 输入是来自多行文本框的字符串,每一行都是一个集团。
  • 如果您可以以线性方式读取您的派系,则只需先创建 (nCliques x nClicques) 矩阵,读取每一行并填写矩阵位置。

标签: graph adjacency-matrix adjacency-list clique clique-problem


【解决方案1】:

在伪代码中,你可以这样做:

A[n,n] <- {0 ... 0n}    // Dense matrix size n x n , initalized to zero.

for L in LINES:          // Loop through input lines
  {N,adj}=Split(L)       // Split Node and adjecencies
  I=IDNameToIndex(N)  // Numeric index corresponding to Node name or id.
  for n in adj:          // Loop through adjecencies 
     i=IDNameToIndex(n)  // Numeric index corresponding to Node name or id.
     A[I,i]=1;           // Set unidrectional adjecency 
     A[i,I]=1;           // Set bidirectional adjecency(optional, depending on input)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多