小编Roy*_*oyM的帖子

搜索最不同于一组位串的位串

我有一组位串:({'0011', '1100', '1110'}一组中的所有位串都具有相同的长度)。

我想快速找到与集合最大相似度最小的相同长度的位串。最大相似度可以这样计算:

def max_similarity(bitstring, set):
    max = 0
    for item in set:
        temp = 0
        for i in range(len(bitstring)):
            if bitstring[i] == item[i]:
                temp += 1
        if temp > max:
            max = temp
    return max
Run Code Online (Sandbox Code Playgroud)

我知道我可以遍历该长度的所有可能的位串,计算每个位的最大相似度,最后保留这些迭代中的最小者。但这解决了O(2 ^ n)中的问题。我想知道是否有人看到任何更快的选择。

我一直在玩Pythons XOR:

def int2bin(integer, digits):
    if integer >= 0:
        return bin(integer)[2:].zfill(digits)
    else:
        return bin(2**digits + integer)[2:]


def XOR(bitset):  
    intset = [int('{}'.format(bitstring), 2) for bitstring in bitset]

    digits = len(bitset.pop())

    if len(intset) == 1:
        return int2bin(~intset.pop(), digits)        
    else:
        curr …
Run Code Online (Sandbox Code Playgroud)

python search bit hamming-distance python-3.x

10
推荐指数
1
解决办法
305
查看次数

标签 统计

bit ×1

hamming-distance ×1

python ×1

python-3.x ×1

search ×1