首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集合覆盖的回溯算法

集合覆盖的回溯算法
EN

Stack Overflow用户
提问于 2010-10-30 04:54:09
回答 2查看 1.8K关注 0票数 1

有没有人可以提供一个回溯算法来解决“集合覆盖”问题,以找到覆盖宇宙中所有元素的最小集合数量?

贪婪方法几乎总是选择比最佳集合数量更多的集合。

EN

回答 2

Stack Overflow用户

发布于 2010-10-30 05:16:43

paper使用线性规划松弛来解决覆盖问题。

基本上,LP松弛产生了良好的边界,并且在许多情况下可以用来确定最优解。顺便说一句,当我上一次查看开源LP解算器(约2003年)时,我并不印象深刻(有些给出了不正确的结果),但现在似乎有一些不错的开源LP解算器。

票数 2
EN

Stack Overflow用户

发布于 2010-10-30 11:13:13

你的问题需要更多的澄清--似乎你得到了一个集合A的子集族$$S_1,\ldots,S_n$$,使得这些子集的并集等于A,并且你想要一个最小数目的子集,其并集仍然是A。

基本的方法是分支定界和一些启发式方法。例如,如果A的特定元素只在一个子集$$S_i$$中,则必须选择$$S_i$$。类似地,如果$$S_k$$是$$S_j$$的子集,那么就没有理由考虑$$S_k$$;如果元素$$a_i$$在$$a_j$$所在的每个子集内,那么您就不必考虑$$a_i$$了。

对于分支和边界,您需要良好的边界启发式方法。下界可以来自独立集(如果A中有k个元素$$i_1,\ldots,i_L$$,使得每个元素如果$$i_p$$包含在$$A_p$$中,$$i_q$$包含在$$A_q$$中,则$$A_p$$和$$A_q$$是不相交的)。更好的下界来自上面描述的LP松弛。

伯克利的Espresso逻辑最小化系统有一个非常高质量的集合覆盖引擎。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4055834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档