在处理与韦斯坦猜想(https://cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.pdf)相关的问题时,我需要为n =生成所有n x n (0,1) 矩阵2, 3, 4,... 如果您考虑正确的二进制序列并相应地对它们进行分区,这并不难。例如,这里是所有 3 x 3 矩阵:
With[{n = 3},
lis = PadLeft[IntegerDigits[#, 2], n^2]& /@ Range[0, 2^n^2 - 1];
mats = (Partition[#, n] & ) /@ lis
];
Weisstein 猜想涉及,对于每个n = 2, 3, ...,计算特征值都是实数和正数的矩阵的数量。对于n = 2,有 3 个;对于n = 3,有 25 个;对于n = 4,有 543 个;等等。特征值计算耗时但简单。
不过,我感兴趣的是找到枚举n x n矩阵的其他方法。为了得到所有这些,我使用了整数的基数 2 表示,最多为 2^( n ^2) 并分区以制作矩阵。必须有其他(更有效的?)方法。