给定节点连接创建邻接矩阵

时间:2018-04-22 01:47:51

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

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

resulting graph

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

1 个答案:

答案 0 :(得分:0)

在伪代码中,您可以执行以下操作:

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)
相关问题