构造常规网络的邻接矩阵

时间:2016-06-10 13:20:28

标签: algorithm graph adjacency-matrix

请注意,如果它看起来太简单了,但我试图构建常规网络的邻接矩阵,这样每个节点的程度为k,节点数量为N 。每个节点在环形网络中的每一侧连接到它的最近邻居k/2。没有环路和多个边缘。对于一个简单的案例N=8k=4,我们有:

  0 1 1 0 0 0 1 1 
  1 0 1 1 0 0 0 1
  1 1 0 1 1 0 0 0
  0 1 1 0 1 1 0 0
  0 0 1 1 0 1 1 0
  0 0 0 1 1 0 1 1
  1 0 0 0 1 1 0 1
  1 1 0 0 0 1 1 0

我写了这样的代码:

    A (1:n,1:n) = 0
    do j = 1,n
    do i = 1,n
       if ( (i-k/2<=j) .and. (j<=i+k/2) )  A(i,j) = 1
       if ( (j-k/2<=i) .and. (i<=j+k/2) )  A(i,j) = 1
       if (i==j) A(i,j) = 0
    enddo
 enddo

问题是k行向上和向下。也许应该使用定期的债券。 我搜索了许多类似的问题,然而,没有找到任何东西。

1 个答案:

答案 0 :(得分:1)

这可以在没有任何条件的情况下解决。

一侧vertex x的k / 2个邻居可以映射为:

A(x , ((x - 1 + 1) % N) + 1) = 1

A(x , ((x - 1 + 2) % N) + 1) = 1
.
.
.so on till k/2 neighbours

另一侧的vertex x的k / 2个邻居可以映射为:

A(x , ((x - 1 + N - 2) % N) + 1) = 1

A(x , ((x - 1 + N - 1) % N) + 1) = 1
.
.
.so on till k/2 neighbours