给定一组带有数字的集合,找到一组不包括任何给定数字的数字

时间:2015-04-22 15:11:58

标签: algorithm set max subset

给定一定数量的数字集合(例如0-20),我们被要求找到0-20中不包含任何给定集合的最大数字集合(它可以包括集合中的数字,但不是整套) 例如:设置最大数量8并给出集合

{1,2}
 {2,3} 
 {7}
 {3,4}
 {5,6,4},

一个最大解是集合{1,3,5,6,8}。 我正在考虑将其表示为图形,然后将其引入最大独立集问题,但这似乎只有当集合仅由成对组成时才起作用,这是不成立的。任何想法?提前感谢。

1 个答案:

答案 0 :(得分:0)

为每个集使用位图,设置适当的位。如果成员少于32个,则可以使用uint32_t。然后可以通过用特定位图掩蔽所有成员(即所有集合的并集),然后使用具有特定位图的xor来计算全集包含。如果是子集,结果将全部为0,否则结果将是最大独立集的成员。