集合覆盖贪心近似定理

概述

集合覆盖贪心近似定理(Greedy Set Cover Approximation Theorem):对于集合覆盖问题,贪心算法可以找到一个不超过最优解 倍的近似解,其中 是第 个调和数, 是最大集合的大小。

定理陈述

形式化陈述

集合覆盖问题:给定全集 和子集族 ,其中 。目标是找到 的最小子族 使得

贪心算法:每一步选择能覆盖最多未被覆盖元素的集合。

定理:设 ,贪心算法输出的集合覆盖 满足: 其中 是最优集合覆盖,

特别地,当 时,近似比为

贪心算法描述

GREEDY-SET-COVER(X, S):
    U = X                          // 未覆盖元素集合
    C = empty set                  // 选择的集合
    while U ≠ empty:
        选择 S ∈ S 使得 |S ∩ U| 最大
        C = C ∪ {S}
        U = U \ S
    return C

证明概要

证明思路(Charging Argument / 费用分摊论证)

证明的核心思想是费用分摊(charging argument):将贪心算法的总费用合理地”分摊”到最优解中的每个集合上,证明每个最优集合最多承担 的费用。

关键引理:调和数不等式

对任意正整数 ,有:

证明主体

步骤1:定义费用函数

设贪心算法依次选择的集合为 。定义第 步选择 时的单位费用为: 其中 是第 步之前尚未被覆盖的元素集合。

贪心算法的总费用为:

步骤2:对最优解中的集合分摊费用

考虑最优解中的任意集合 ,设 。将 中的元素按被贪心算法覆盖的先后顺序排列为

步骤3:界定每个元素的费用

当元素 在第 步被覆盖时, 中仍有至少 个元素未被覆盖(因为 都未覆盖)。

贪心算法选择了覆盖最多未覆盖元素的集合,所以:

因此 被分摊的费用为:

步骤4:汇总每个最优集合的费用

步骤5:总费用上界

参考资源

关键推论

  • NP-hard性:集合覆盖问题是NP-hard的,因此除非P=NP,否则不存在多项式时间的精确算法
  • 不可改进性(除非P=NP):除非P=NP,集合覆盖问题不存在 近似算法(),即 的量级是最优的
  • 加权推广:加权集合覆盖问题中,贪心算法同样给出 -近似,其中 是最大集合大小
  • 与顶点覆盖的关系:顶点覆盖是集合覆盖的特例(),,但顶点覆盖有更好的 -近似算法

应用场景

在算法导论(CLRS)Ch35近似算法中的具体应用:

  1. 设施选址:在候选位置中选择最少的设施覆盖所有需求点
  2. 网络监控:选择最少的传感器节点覆盖整个监控区域
  3. 信息检索:用最少的查询词组合覆盖所有相关文档
  4. 贪心算法:集合覆盖贪心算法是贪心策略在NP-hard问题上的经典成功案例,展示了贪心方法即使无法获得最优解,仍能提供有理论保证的近似解

参见