算法 ​
给集合宇宙
最小的集合,加入解并从
收费证明 ​
选择
把每个元素归给一个覆盖它的最优集合求和,得 ALG
真实选择图像 ​
布置监测站覆盖一组区域时,一个站虽覆盖面大但成本也高;加权规则比较“每新增覆盖一个尚未监测区域的成本”,已覆盖区域不再贡献分母。无权规则若直接用于成本差异大的站点,会偏离证明。
边界与相邻问题 ​
实现与 tie-breaking ​
直接每轮重算所有集合新增覆盖成本可能为
平局任取都保留近似证明,因为只用“单位成本不大于任何候选”。但输出若要求可重复,仍应以集合 ID 固定 tie-break。预处理还要确认每个元素至少属于一个集合,否则实例不可覆盖。
加权实例的选择轨迹 ​
设未覆盖元素为 6 个,集合
实现可用懒堆保存上次计算的比例:弹出候选后按当前未覆盖集重算,只有仍不劣于堆顶才真正选择,否则以新键放回。这个技巧减少实际重算,却不改变最坏近似证明;tie-breaking 影响具体解,不影响
若某元素不属于任何集合,实例本身不可行,算法应在
参考资料
- 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.