1

假设我们有一个集合 U = {x1, x2, x3} 和一个集合 S = {{x1},{x1, x2},{x1, x3},{x1,x1,x3}}。这纯粹是一个例子,问题是针对一般问题的。这看起来就像一个常规的集合覆盖问题,这就是为什么我认为将其简化为一个真正的集合覆盖问题是可行的。扭曲之处在于 U 中的元素需要被“挑选”z 次,其中 z 对于每个 x1、x2、x3.... 等都是不同的。

S 中的任何子集只能一次提取它们内部的元素。给定一个数字“k”,是否有可能在 S 中形成一个子集的集合,使得

  1. U 中的每个元素都包括在内。
  2. 每个元素都包含 z 次,其中所有 x 的 z 都不同。

如果我能以这样的方式制定 Set Cover 问题,那就太好了,但我卡在这部分。

4

1 回答 1

-2

覆盖问题是NP完全的,因此采用启发式方法来找到好的解决方案。Skiena的“算法设计手册”对此进行了详细的讨论。

于 2017-12-08T11:24:22.027 回答