标签: algorithm
给定100个(可能交叉的)100个不同项的子集,可以选择的最大子集数是多少,这样它们就不会重叠。
这样做的一种方法是:
for i in 100 downto 0 foreach choice C of (100 choose i) subsets: if (no two elements of C overlap) return i;
但显然这太慢了。有多项式时间解决方案吗?
答案 0 :(得分:2)
这是Set packing,这是一个经典的NP完全问题。没有多项式时间解决方案。