构建常规网络的邻接矩阵

Construct the adjacency matrix of a regular network

对不起,如果这看起来太简单了,但我正在尝试构造一个常规网络的邻接矩阵,使得每个节点的度数为k,节点数为N .每个节点都连接到环形的每一侧的 k/2 个最近的邻居 network.There 是无环和多条边。对于一个简单的案例 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行上下。或许应该采用定期债券。 我搜索了很多类似的问题,但是没有找到。

无条件解决

一侧 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