小编mac*_*elo的帖子

查找 12 个 32 位数字,每个数字对之间至少有 17 位差异

找到 12 个 32 位数字,其中每对至少在 17 个位置上有位不同。

我正在努力寻找解决这个问题的最佳算法。更一般的问题是:找到“n”个 32 位数字,使得它们中的每对至少在“m”个位置上有位不同。

我的第一个方法是随机选择一个数字,或者从 6 (00000110) 开始,然后再次选择其他随机数字。然后进行异或运算并计算异或结果的二进制表示形式中有多少个 1,这将表明数字有多少个位置不同。如果条件被接受,我们可以存储这两个数字并执行相同的过程,直到达到所需的数字数量。然而,这种算法似乎不是最佳的,因为我们选择随机数,因此它可以“永远”持续下去。

*更新 我准备了这样的代码,对于 m = 16 它实际上返回 12 个结果,但是对于 17 (我需要的)它停止在 9 个结果并且代码永远不会完成。我想知道在[0, 2^32]范围内是否有可能没有这十二个数字,但如何证明呢?

import random

def hamming_distance(x, y):
    dist = 0

    # The ^ operator sets to 1 only the bits that are different
    val = x ^ y
    while val > 0:
        # We then count the bit set to 1 using the Peter Wegner way
        val = val & (val - 1) …
Run Code Online (Sandbox Code Playgroud)

algorithm math binary backtracking hamming-distance

5
推荐指数
2
解决办法
323
查看次数

标签 统计

algorithm ×1

backtracking ×1

binary ×1

hamming-distance ×1

math ×1