Python 最可能的对
给定一个值列表和可能匹配的信息,是否有一种有效的方法来确定一对中遗漏的最小值数?比如说Python 最可能的对,python,Python,给定一个值列表和可能匹配的信息,是否有一种有效的方法来确定一对中遗漏的最小值数?比如说 values = [1,2,3,4] matches[1] = [4] matches[2] = [3, 4] matches[3] = [2] matches[4] = [1, 2] 这里可能的配对可能是 [(1,4),(2,3)] [(2,4)] 其中前者最好,0个未配对 列表中任何元素的可能匹配项可以是任何一组值,但关系是对称的。值可以有重复 我当然可以生成所有可能的配对并测试每个配对,但这相当慢。
values = [1,2,3,4]
matches[1] = [4]
matches[2] = [3, 4]
matches[3] = [2]
matches[4] = [1, 2]
这里可能的配对可能是
[(1,4),(2,3)]
[(2,4)]
其中前者最好,0个未配对
列表中任何元素的可能匹配项可以是任何一组值,但关系是对称的。值可以有重复
我当然可以生成所有可能的配对并测试每个配对,但这相当慢。尝试像树一样生成可能的匹配(或不匹配),从列表中删除对,并在列表用尽后返回未匹配的数目,这样做是可行的,但在20年代达到列表大小时,速度会急剧减慢(请注意,这可能只是我的实现)
在内部,我将有关匹配的信息作为字典,其中
matches[i] = [j for j in range(len(values)) if ismatch(values[j], values[i])]
它本身可能有效,也可能无效。是否将
匹配[n]
作为允许匹配的n
值的列表?你的描述不清楚。听起来这只是一个例子,你应该去看看。