给定整数N,其中N <= 100。是否存在大小为NxN的Hadamard矩阵,例如:
我做了什么:
我尝试过蛮力解决方案。每个元素可以是1或-1。因此,最多可以有2个(n 2 )矩阵。我试过检查所有这些矩阵,但算法太慢了。 O(n 2 *(2 (n 2 ))实际上。我的电脑没有显示n = 5的任何输出,我不得不终止程序。
有人能建议更好的方法来解决这个问题吗?
编辑:您不仅要回答是或否,还要枚举一个这样的矩阵。显然,当N为奇数时,答案是不可能的。 N = 1是一个简单的案例,答案为1或-1。
答案 0 :(得分:1)
正如评论所指出的那样,具有所述属性的矩阵称为 Haramard矩阵。在这些Wikipedia writes上:
Hadamard矩阵的阶数必须是1,2或4的倍数。
[...]
Hadamard猜想提出对于每个正整数 k
存在4阶 k 的Hadamard矩阵[...]
截至2008年,有13个倍数小于或等于2000,其中没有该序列的Hadamard矩阵。 [8] 它们是:668,716 ,892,1004,1132,1244,1388,1436,1676,1772,1916,1948和1964。
由于您的问题显示 N ≤100,因此判断此类矩阵是否存在的算法很简单:测试N==1 || N==2 || (N%4)==0
。
当然,这并没有告诉你如何生成这样的矩阵。阅读更多维基百科建议您可以将Sylvester's construction与 N = 2 k ,Payley's construction合并为 N = q + 1其中 q = p k prime p 和 q ≡3(mod 4)(确保 N 是4的倍数。)
在 N ≤100的范围内,这些算法都不起作用的唯一 N 将 N = 92.所以你要么还为此特定情况添加Williamson's construction或硬编码矩阵。
Searching我发现Eric Tressler's Survey of the Hardamard Conjecture的构造方法的名称描述了构造算法,并且还包含一个表格,用于分析Sylvester或Payley的构造中的数字到目前为止尽可能。评论还提到Sloane's Library of Hadamard Matrices,其中包含通过不同方法获得的实际矩阵的链接。如果要对其进行硬编码,可以将其用作 N = 92案例的来源。