Python 最小设置覆盖汉明距离1内的所有图案
你有两种字母{A,B} 字符串的长度是3 那么所有模式的数量是8: AAA,AAB,ABA,ABB,BAA,BAB,BBA,BBB 现在我想挑选其中一些来覆盖1个海明距离内的所有图案 例1) 集合(AAA,BBB)满足这一点 AAA、AAAB、ABA、BAA与AAA之间的海明距离为0或1 ABB、BAB、BBA、BBB与BBB之间的汉明距离为0或1 所以所有的模式都被集合覆盖(AAA,BBB) 例2) set(AAA,AAB)剂量不满足此要求 AAA、AAAB、ABA、BAA与AAA之间的海明距离为0或1 ABB、BAB与AAB之间的汉明距离为0或1 BBA,BBB是到AAA或AAAB的2汉明距离 因此,它们不在set(AAA、AAB)范围内 如果字母是3种类型:{A,B,C} 长度是10。aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 如何获得一个组合来覆盖1个海明距离内的所有图案Python 最小设置覆盖汉明距离1内的所有图案,python,combinations,Python,Combinations,你有两种字母{A,B} 字符串的长度是3 那么所有模式的数量是8: AAA,AAB,ABA,ABB,BAA,BAB,BBA,BBB 现在我想挑选其中一些来覆盖1个海明距离内的所有图案 例1) 集合(AAA,BBB)满足这一点 AAA、AAAB、ABA、BAA与AAA之间的海明距离为0或1 ABB、BAB、BBA、BBB与BBB之间的汉明距离为0或1 所以所有的模式都被集合覆盖(AAA,BBB) 例2) set(AAA,AAB)剂量不满足此要求 AAA、AAAB、ABA、BAA与AAA之间的海明距
from itertools import product, combinations
all_patterns = set(product('ABC', repeat=10))
def hamming(patterns1, patterns2):
for pattern2 in patterns2:
if min(sum(a!=b for a, b in zip(pattern1, pattern2)) for pattern1 in patterns1) > 1:
return False
return True
def calc_minimum_patterns():
for i in range(1, len(all_patterns)):
for patterns in combinations(all_patterns, i):
if hamming(patterns, all_patterns):
return patterns
我正在使用python。itertools模块的产品和组合用于解决该问题。但是计算所有的组合花费了太多的时间。有没有解决这个问题的想法?这个问题只要求回答,没有显示代码,试图自己找到正确的解决方案。如果您编辑问题以显示您尝试了什么,并准确地解释您在尝试中面临的问题,则可以避免问题被关闭。在那之前,我想。你能不能补充一些解释,说明你的代码的输出与你想要的不同?我相信这段代码会生成我想要的模式。然而,由于订单太大,它实际上没有及时完成。