我试图找到一个优雅的算法,用于创建1和0和0的N x N矩阵,但有以下限制:
矩阵不是绝对必要的随机(随机和非随机解决方案都很有趣),因此对于Q均匀,只需使每一行成为矢量的循环移位
[0 1 1 0 ... 0 0 0 ... 0 1 1](对于Q = 4)
是一个有效的解决方案。
然而,如何为Q奇做这个?或者如何为Q偶然做,但是以随机方式?
对于那些好奇的人,我试图在抽象网络上测试一些现象。
如果之前已经回答过,我道歉,但我找不到任何问题都有对称限制,这似乎使它变得更加复杂。我没有证据证明这样的矩阵总是存在,但我确实这样认为。
答案 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,那么就不能有任何这样的对称分布。。希望它有所帮助。