我正在玩一些Hadamard 矩阵的变体。我想生成满足这些要求的所有 n位二进制字符串:
- 您可以假设n是 4 的倍数。
- 第一个字符串是 0 n。
→ 一个全 0 的字符串。 - 其余字符串按字母顺序排序。
→ 0 在 1 之前。 - 每两个不同的n位字符串具有汉明距离 n/2。
→ 两个不同的n位字符串恰好在 n/2 个位置一致,而在恰好n /2 个位置不一致。 - 由于上述条件,除第一个字符串之外的每个字符串都必须具有相同数量的 0 和 1。
→ 除第一个字符串之外的每个字符串都必须有n/2个 1 和n/2 个零。 - (更新)所有n位字符串都以 . 开头
0
。
例如,这是我在n=4时想要的列表。
0000
0011
0101
0110
您可以很容易地看到每两个不同的行具有汉明距离n/2 = 4/2 = 2,并且该列表也满足所有其他要求。
请注意,我想生成所有此类字符串。我的算法在终止之前可能只输出三个字符串0000
,0011
和。0101
此列表满足上述所有要求,但未满足0110
.
- 生成此类集合的好方法是什么?
首选 python 伪代码,但任何高级描述都可以。 - 对于给定的n ,此类字符串的最大数量是多少?例如,当n=4时,此类字符串的最大数量恰好是 4。我想知道这个上限是否有任何封闭形式的解决方案。
谢谢。