【发布时间】:2013-09-23 20:56:18
【问题描述】:
我在玩Hadamard matrices 的一些变体。我想生成满足这些要求的 all n 位二进制字符串:
- 您可以假设 n 是 4 的倍数。
- 第一个字符串是 0n。
→ 一个全为 0 的字符串。 - 其余字符串按字母顺序排序。
→ 0 在 1 之前。 - 每两个不同的 n 位字符串都有Hamming distance n/2。
→ 两个不同的 n 位字符串一致正好在 n/2 个位置,而在正好 n/2 个位置不同意。 - 由于上述条件,除了第一个字符串之外的每个字符串都必须有相同数量的 0 和 1。
→ 除了第一个字符串之外的每个字符串都必须有 n/2 个和 n/2 个零。 - (已更新)所有 n 位字符串均以
0开头。
例如,这是我在 n=4 时想要的列表。
0000001101010110
您可以很容易地看到,每两个不同的行都有汉明距离 n/2 = 4/2 = 2,并且该列表也满足所有其他要求。
请注意,我想生成 all 这样的字符串。我的算法在终止之前可能只输出三个字符串0000、0011 和0101。此列表满足上述所有要求,但缺少0110。
- 生成此类集合的好方法是什么?
首选 Python 伪代码,但任何高级描述都可以。 - 对于给定的 n,此类字符串的最大个数是多少?
例如,当 n=4 时,最大这样的字符串的数量恰好是 4。我想知道这个上限是否可以有任何封闭形式的解决方案。
谢谢。
【问题讨论】:
-
这些列表不是唯一的。例如,这里有 3 个满足您条件的其他列表:{0000,0110,1010,1100}、{0000,0011,1001,1010}、{0000,0101,1001,1100}。您还想生成所有此类列表吗?
-
@Matt 哎呀。我忘了提。所有n位字符串都以0开头。那么我认为它保证只存在一个这样的列表。听起来合理吗?
-
你能发布一个 n = 8 的例子吗?
-
我相信添加要求编号 6 会使列表对于
n = 4是唯一的,但对于n = 8则不是。例如,{00000000, 00001111, 00110011, 00111100, 01010101, 01011010, 01100110, 01101001}和{00000000. 00001111, 00110101, 00111010, 01010011, 01011100, 01100110, 01101001} -
我将删除限制编号 6,并添加问题 3:对于给定的
n,存在多少个最大集合?
标签: string algorithm math combinatorics