Python 选择三个元素最多的列表最有效的方法是什么?

Python 选择三个元素最多的列表最有效的方法是什么?,python,list,selection,Python,List,Selection,给定一个列表列表,例如,[[0,1],[1,3],[2,4,5],[3,7,9],是否有一种有效的(比暴力强制所有可能性更好)方法来选择三个列表,从而使所有三个列表中的唯一元素的数量最大化?我只能找到启发性的方法,最终导致和暴力一样的最坏情况。 这是我的暴力代码: def maximum_number_of_elements_brute(list): maximum = 0 maximum_combination = [] for a in range(len(list)

给定一个列表列表,例如,
[[0,1],[1,3],[2,4,5],[3,7,9]
,是否有一种有效的(比暴力强制所有可能性更好)方法来选择三个列表,从而使所有三个列表中的唯一元素的数量最大化?我只能找到启发性的方法,最终导致和暴力一样的最坏情况。 这是我的暴力代码:

def maximum_number_of_elements_brute(list):
    maximum = 0
    maximum_combination = []
    for a in range(len(list)):
        for b in range(a,len(list)):
            for c in range(b,len(list)):
                number_of_elements = len(set(list[a] + list[b] + list[c]))
                if number_of_elements > maximum:
                    maximum = number_of_elements
                    maximum_combination = [a,b,c]
    return (maximum, maximum_combination)
应用于示例列表的函数结果返回:
([0,2,3],8)

这是。这是NP难的事实表明,你不可能比蛮力做得更好(尽管固定k为3,渐近结果不成立)。当然,你可以做一些可能更快的分支和绑定:首先考虑最大的集合,如果搜索至少有一个大的集合,则停止部分,如果剩下的集合可以形成的话。三个选定列表中元素的数量、唯一元素的数量或它们的总和?@jfaccioni问题标题是不同元素的最大数量。@wim和正文阅读“选择三个列表”,这样所有三个列表中的元素数量组合在一起是最大的,因此我感到困惑。如果是最大总和,或者最大数不考虑唯一性,那么问题就很简单了。因此,最大化数唯一元素是唯一有意义的解释。改进问题的建议:1。展示你的暴力和/或启发式代码,作为一个例子,说明有效的方法需要打败什么,以及正确的结果是什么。2.修改示例,使其成为一个非平凡的例子(在本例中,第一个列表已经是第二个列表的子集,因此这里没有太多要做的事情)。3.澄清在解决方案不唯一的情况下您想做什么-返回所有可能的解决方案,或者只选择其中一个?