Set Cover的贪心算法

Set Cover的贪心算法

什么是Set Cover问题

SetCover问题即集合覆盖问题,给定一组集合,每个集合都有cost值,找到能够覆盖其中所有元素的一组集合,要求cost值总和最小。

具体思路

图源北航算法课件

目前关于集合覆盖问题,仍然找不到一个有效的OPT算法,我们这里提出的是一种基于贪心策略的近似性算法。

北航高级算法课件Chp5
注意图中花写S和S的区别

我们每次选取的都是 c o s t ( S ) S ∖ C \frac {cost(S)}{S\setminus C} SCcost(S)最小的集合S,即每次新添的集合S的新增覆盖率相对于cost值都是最大的,从而实现局部最优。

性能分析

在贪心算法的每次迭代过程中,对于剩余元素OPT算法的 c o s t cost cost不可能大于原问题OPT算法的 c o s t cost cost,所以剩余集合的平均 c o s t cost cost不大于 c o s t o p t ( S ) ∣ U ∖ C ∣ \frac {cost_{opt}(S)}{|U\setminus C|} UCcostopt(S)
e k e_k ek被覆盖的时候, ∣ C ∣ ≤ k |C|\le k Ck,那么 ∣ U ∖ C ∣ ≥ n − k + 1 |U\setminus C|\ge n-k+1 U

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值