<p>我已经调查过了。在</p>
<p>首先要注意的是:1)当矩阵的大小为21x21,而不是30x30时,5600万是最大值:<a href="https://en.wikipedia.org/wiki/Hadamard%27s_maximal_determinant_problem#Connection_of_the_maximal_determinant_problems_for_.7B1.2C.C2.A0.E2.88.921.7D_and_.7B0.2C.C2.A01.7D_matrices" rel="nofollow">https://en.wikipedia.org/wiki/Hadamard%27s_maximal_determinant_problem#Connection_of_the_maximal_determinant_problems_for_.7B1.2C.C2.A0.E2.88.921.7D_and_.7B0.2C.C2.A01.7D_matrices</a>。在</p>
<p>但这也是-1,1矩阵的上界,而不是1,0。在</p>
<p>编辑:请仔细阅读以下链接:</p>
<blockquote>
<p>The maximal determinants of {1, −1} matrices up to size n = 21 are given in the following table. Size 22 is the smallest open case. In the table, D(n) represents the maximal determinant divided by 2n−1. Equivalently, D(n) represents the maximal determinant of a {0, 1} matrix of size n−1.</p>
</blockquote>
<p>所以这个表可以用于上界,但要记住它们被2n−1除。还要注意的是22是最小的开放情况,所以试图找到30x30矩阵的最大值还没有完成,甚至还没有接近完成。在</p>
<p>2)大卫·茨威克的代码给出3000万的答案可能是因为他在最小化。不是最大化。在</p>
<pre><code>return -np.linalg.det(self.state)
</code></pre>
<p>你看他是怎么得到负号的吗?在</p>
<p>3)而且这个问题的解空间很大。我计算出不同矩阵的数量为2^(30*30),即10^270的顺序。所以看每一个矩阵都是不可能的,甚至大多数矩阵也是如此。在</p>
<p>我不知道怎么修改代码。在我的电脑上进行1000万次迭代大约需要45分钟,或者100万次迭代只需要大约2分钟。我得到的最大值是34亿左右。但我还是不知道这离理论上的最大值有多近。在</p>
^{pr2}$
<p>这有帮助吗?在</p>