最可能的对

时间:2016-10-19 23:52:28

标签: 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未配对。

列表中任何元素的可能匹配项可以是任何值集,但关系是对称的。值可以重复

我当然可以生成所有可能的配对并测试每一个,但这很慢。尝试将其作为一种树 - 生成可能的匹配(或不匹配),从列表中删除对,并在列表耗尽后返回不匹配的数量 - 有效,但是一旦我点击就会大幅减速列表大小在20年代(介意,这可能只是我的实现)。

在内部,我将匹配信息作为字典,其中

matches[i] = [j for j in range(len(values)) if ismatch(values[j], values[i])]

本身可能有效,也可能不高效。

0 个答案:

没有答案