如何使用恒定的行和列总和创建1和0的对称矩阵

时间:2014-05-20 13:37:27

标签: algorithm graph adjacency-matrix magic-square

我试图找到一个优雅的算法,用于创建1和0和0的N x N矩阵,但有以下限制:

  • 每行和每列必须总和为Q(自由选择)
  • 对角线必须为0' s
  • 矩阵必须是对称的。

矩阵不是绝对必要的随机(随机和非随机解决方案都很有趣),因此对于Q均匀,只需使每一行成为矢量的循环移位

[0 1 1 0 ... 0 0 0 ... 0 1 1](对于Q = 4)

是一个有效的解决方案。

然而,如何为Q奇做这个?或者如何为Q偶然做,但是以随机方式?

对于那些好奇的人,我试图在抽象网络上测试一些现象。

如果之前已经回答过,我道歉,但我找不到任何问题都有对称限制,这似乎使它变得更加复杂。我没有证据证明这样的矩阵总是存在,但我确实这样认为。

2 个答案:

答案 0 :(得分:5)

您尝试构建的对象更典型地称为无向d-正则图(其中d = Q)。通过握手定理,N和Q不能都是奇数。如果Q是偶数,则在{-Q / 2,-Q / 2 + 1,..., - 1,1,...,Q / 2 - 1中将顶点v连接到v + k模N的k, Q / 2}。如果Q是奇数,那么N是偶数。像以前一样构造一个(Q - 1) - 正则图,然后将v的连接添加到v + N / 2模N.

如果你想要随机性,那么马尔可夫链的极限分布在d-正则图上是均匀的。您可以从任何d-regular图开始。随机重复选择顶点v,w,x,y。每当诱导子图看起来像

v----w

x----y ,

将其翻转为

v    w
|    |
x    y .

答案 1 :(得分:1)

如果可能,您可以始终遵循循环移位算法。

使用循环移位算法时,您需要遵循的唯一条件是在第一行保持对称性。

即。将Q 1保持在第一行,使Q [0,1]到Q [0,N-1] {假设0个索引行和列,Q [0,0]为0.}是对称的,简单的例子是110010011。

因此,N = 10,Q = 5,您可以获得许多可能的安排,例如:

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

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

但正如你可以看到对于奇数N(即均为N-1)和奇数Q,那么就不能有任何这样的对称分布。。希望它有所帮助。