请注意,如果它看起来太简单了,但我试图构建常规网络的邻接矩阵,这样每个节点的程度为k
,节点数量为N
。每个节点在环形网络中的每一侧连接到它的最近邻居k/2
。没有环路和多个边缘。对于一个简单的案例N=8
和k=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
行向上和向下。也许应该使用定期的债券。
我搜索了许多类似的问题,然而,没有找到任何东西。
答案 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