读书人

集合覆盖有关问题

发布时间: 2012-12-26 14:39:29 作者: rapoo

集合覆盖问题
有n个集合,要从中挑出m个集合,使得这m个集合的并集与n个集合的并集相同,而且m必须是最小的值。


[解决办法]
vertex cover problem,npc问题,算法导论第三版approximation algorithm第三部分.
deterministic 的解就brute force遍历所有可能吧。
approximation的解记得是可以random取集合中的任意一个点,然后选中所有cover这个点的set,
除去所有被cover的点,直到所有的点被cover。复杂度分析忘了哦,查查吧。
[解决办法]
相当于给定n个二进制数,要挑选最少的m个数,使其逻辑与(and)之后为0。
应该没有多项式算法,建议用贪心。
[解决办法]
这个问题以前解决过,“m必须是最小的值"就是求最优解,可能有多组解。
当时采用的也是取覆盖集中,被覆盖项最少的进行展开解决的。

如果所求集合加上约束:交集为空,那么就可以用DLX了。

读书人网 >软件架构设计

热点推荐