Skip to content

算法Algorithm

Set Cover 的贪心近似

greedy set cover · set cover approximation

按单位新增覆盖成本选择集合,并以元素收费证明调和数近似比。

形式陈述 ​

算法 ​

给有限集合宇宙 U、显式有限集合族 S⊆2U 和有限非负成本 c(S)。空宇宙直接返回成本为零的空覆盖;若某元素不属于任何集合,则报告不可行。以下设 m=|U|≥1 且实例可覆盖,并剔除空集合;非负成本保证这不改变最优值。维护未覆盖集 R;每步选择新增覆盖非空且

c(S)|S∩R|

最小的集合,加入解并从 R 删除其覆盖元素,直到 R=∅;每步至少新覆盖一个元素,所以至多执行 m 步。无权情形等价于选覆盖未覆盖元素最多的集合;覆盖数为零的集合不可作为候选。

收费证明 ​

选择 S 时把成本均摊给刚覆盖元素,每个收 c(S)/|S∩R|,算法总成本等于全部收费和。固定最优解中的集合 T,按其元素被贪心覆盖的先后看:当还剩 r 个 T 元素未覆盖时,T 自身单位成本至多 c(T)/r,贪心收费不超过该值。因此 T 内总收费至多

c(T)(1+12+⋯+1|T|)≤c(T)H|U|.

把每个元素归给一个覆盖它的最优集合求和,得 ALG≤H|U|OPT;因此该算法的近似比至多为 H|U|。

直觉

每轮选择只为尚未覆盖的元素创造价值,因此分母必须随覆盖状态缩小。把集合成本平均收给本轮新覆盖元素后,任意最优集合中第 j 个较晚被覆盖的元素,面对的剩余候选只会更少;这些收费形成调和级数,而不是每轮都付同一个最坏比率。

新增覆盖收益与逐轮选择

图中的 C:4,A:3,B:1 标记各轮新增覆盖数。例如八元素宇宙上取成本均为 1 的 C={4,5,6,7}、A={1,2,3}、B={8},即得到所画的剩余集合序列;后面的六元素例子另用于比较不同成本。

例子与边界

真实选择图像 ​

布置监测站覆盖一组区域时,一个站虽覆盖面大但成本也高;加权规则比较“每新增覆盖一个尚未监测区域的成本”,已覆盖区域不再贡献分母。无权规则若直接用于成本差异大的站点,会偏离证明。

边界与相邻问题 ​

Hm≤1+ln⁡m,且 Hm=ln⁡m+γ+o(1),其中 γ 是 Euler 常数;因此保证随宇宙大小按对数增长。最大覆盖问题给定只能选 k 个集合、目标最大化覆盖量,具有不同的 1−1/e 分析。参数 |U| 是宇宙元素数;若改用最大集合大小可得更细 Hd,必须明确 d。

推论与应用

算法每步选择单位成本覆盖新元素最多的集合,是贪心算法;调和数近似保证来自把每个新覆盖元素按当步单位代价收费,并与最优解中某个集合尚未覆盖的元素数比较。

实现与 tie-breaking ​

每轮需要按当前未覆盖集重新评估候选,求交集的访问成本也须计入。无权版可维护按当前 uncovered count 的桶或懒优先队列;选出候选后重新计算其真实新增量,过期键就更新再弹。若成本以有理数给出,可交叉相乘精确比较加权比率,并计入整数位长;对任意实数成本,则须明确采用精确算术与比较 oracle。

平局任取都保留近似证明,因为只用“单位成本不大于任何候选”。但输出若要求可重复,仍应以集合 ID 固定 tie-break。预处理还要确认每个元素至少属于一个集合,否则实例不可覆盖。

加权实例的选择轨迹 ​

取 U={1,2,3,4,5,6},A={1,2,6} 成本 3,B={6} 成本 2,C={1,2,3,4,5} 成本 4。初始单位新增成本分别为 1,2,4/5,所以先选 C;此时只剩元素 6,A 的比例变为 3,B 仍为 2,第二轮选 B,总成本为 6。若沿用最初排序则会错误地把 A 排在 B 前面。

实现可用懒堆保存上次计算的比例:弹出候选后按当前未覆盖集重算,只有仍不劣于堆顶才真正选择,否则以新键放回。这个技巧减少实际重算,却不改变最坏近似证明;tie-breaking 影响具体解,不影响 H|U| 上界。

若使用元素关联表,总关联数为 M=∑S∈S|S|,逐轮重新扫描全部关联和集合可在 O(m(M+|S|)) 次基本访问内完成;空集与不可行分支的预处理另需 O(M+|S|+m)。懒堆是可选实现,不改变这份保守的显式输入成本上界。

独立舍入加最便宜集合补选提供另一条覆盖路线:先解LP,再抽样并修复所有遗漏,每次输出都可行,而成本相对于LP的保证在期望意义下成立。本页贪心的调和数界则对每条实际选择轨迹成立,两者不能混称为相同的逐次保证。

参考资料
  • Václav Chvátal, A Greedy Heuristic for the Set-Covering Problem, Mathematics of Operations Research, 1979.

  • David Johnson, Approximation Algorithms for Combinatorial Problems, JCSS, 1974.

  • David P. Williamson、David B. Shmoys,The Design of Approximation Algorithms,2011,§1.6,Algorithm 1.2 与 Theorem 1.11:加权贪心和调和数分析。

关系图谱5 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
分类位置

上位 / 更一般

下位 / 直接特例

暂未标注直接特例。