用最小的最大交集大小设置封面

时间:2018-11-04 01:20:00

标签: algorithm

给定一个宇宙U和一个U子集的族S,找到一个盖,它是子集C <= S的集合,且其并集为U。对于C中的每个c,令我为c和U的交集。约束是

  • 我们希望最小化C语言中所有子集的i的最大大小。
  • C的大小很小。

例如,

S = {{1,2}, {1,2,3}, {3, 4}}
U = {1,2,3}

C为{{1,2},{2,4}},但不是{{1,2,3}}。因为{{1,2},{3,4}}的i的最小最大大小为2,而{{1,2,3}}的i的最小最大大小为3。

这似乎与the traditional set coverage problem有关。就像这样:

Given a universe U and a family S of subsets of U, a cover is a subfamily C <= S of sets whose union is U. Find a C, s.t. the size of C is minimal.

我的问题叫什么名字?

1 个答案:

答案 0 :(得分:0)

如前所述,我不知道是否有人可以命名。对于U中的每个元素,请在C中找到包含目标元素的最小尺寸的集合。由所有这些选项组成的封面可以覆盖该组合,因此按您的度量,它可能是最好的组合,因为其中最大的组合不能用较小的组合代替。

我没有名字,但是我可以指出相关问题。如果您不知道如何平衡两个目标,则可能要看https://en.wikipedia.org/wiki/Multi-objective_optimization#Scalarizing并尝试优化它们的线性组合。由于一个目标是NP完全的,因此您可能最终会考虑所有可能的保障,这时计算两个目标的加权总和可能会增加最少的麻烦。

如果要尽量减少用于创建封面的套的数量,但要限制所涉及套的最大尺寸,则可以很好地解决三个问题。

如果涉及的所有集合的大小均为1,那么您几乎没有问题-显然,每个覆盖的对象都需要一个集合。

如果涉及的所有集合的大小均为2,我认为您可以将这些集合视为边,并使用{多项式时间}算法来最小覆盖https://en.wikipedia.org/wiki/Edge_cover

如果涉及的所有集合的大小均为3,则您的问题的特殊情况是https://en.wikipedia.org/wiki/3-dimensional_matching,不幸的是,这是NP完全的。