Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何创建1'的对称矩阵;s和0';具有常量行和列和的s_Algorithm_Graph_Adjacency Matrix_Magic Square - Fatal编程技术网

Algorithm 如何创建1'的对称矩阵;s和0';具有常量行和列和的s

Algorithm 如何创建1'的对称矩阵;s和0';具有常量行和列和的s,algorithm,graph,adjacency-matrix,magic-square,Algorithm,Graph,Adjacency Matrix,Magic Square,我试图找到一个优雅的算法,在以下限制条件下创建1和0的nxn矩阵: 每行和每列的总和必须等于Q(可自由选择) 对角线必须为0 矩阵必须是对称的 矩阵不一定是随机的(然而,随机和非随机解都很有趣),因此对于Q偶数,只需将每一行作为向量的循环移位 [0 1 10…0 0 0…0 1 1](对于Q=4) 这是一个有效的解决方案 然而,如何为Q奇数做到这一点?或者如何为Q偶数,但以随机方式 对于那些好奇的人,我试图在抽象网络上测试一些现象 我很抱歉,如果之前已经回答过这个问题,但是我能找到的所有问题

我试图找到一个优雅的算法,在以下限制条件下创建1和0的nxn矩阵:

  • 每行和每列的总和必须等于Q(可自由选择)
  • 对角线必须为0
  • 矩阵必须是对称的
矩阵不一定是随机的(然而,随机和非随机解都很有趣),因此对于Q偶数,只需将每一行作为向量的循环移位

[0 1 10…0 0 0…0 1 1](对于Q=4)

这是一个有效的解决方案

然而,如何为Q奇数做到这一点?或者如何为Q偶数,但以随机方式

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


我很抱歉,如果之前已经回答过这个问题,但是我能找到的所有问题都没有对称限制,这似乎使问题变得更加复杂。我没有证据证明这样一个矩阵总是存在的,但我假设它是存在的。

你试图构造的对象更规范地被称为无向d正则图(其中d=Q)。根据握手定理,N和Q不能都是奇数。如果Q是偶数,则将顶点v连接到{-Q/2,-Q/2+1,…-1,…,Q/2-1,Q/2}中k的v+k模N。如果Q是奇数,那么N是偶数。像以前一样构造一个(Q-1)-正则图,然后添加从v到v+N/2模N的连接

如果你想要随机性,有一个马尔可夫链,它的极限分布在d-正则图上是一致的。从任意d-正则图开始。重复随机拾取顶点v、w、x、y。当诱导子图看起来像

v----w

x----y ,
翻到

v    w
|    |
x    y .

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

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

i、 e.保持q1在第一行,这样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 


但是你可以看到,对于奇数N(即偶数N-1)和奇数Q,不可能有任何这样的对称分布。希望能有所帮助。

您的第一个限制,即常数因子Q,称为a。对于Q奇数,我认为对角线上必须有一个1,这违反了您的第二个要求。不过,我可能错了。但是,我想不出如果一个3x3的情况下,每行/每列只有一个1,而不在诊断线上,你会怎么做。也许有更大的情况,你可以有奇怪的问题。。。
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