算法博弈论-这个贪心算法为什么是背包问题的1/2近似算法


博主想起当时证明出来特开心,虽然不会长更博弈论,还是可以分享一下。有问题想要一起讨论的也可以私信博主。

背包拍卖

在背包拍卖中,每一个竞拍者 i 都有一个公开的规模 w i w_{i} wi和一个私有的估值。卖家有容量 W W W。可行集合 X X X是一个0-1向量 ( x 1 , . . . , x n ) (x_{1}, ...,x_{n}) (x1,...,xn),且 ∑ i = 1 n w i x i ≤ W \sum_{i=1}^nw_{i}x_{i}\le W i=1nwixiW
x i x_{i} xi仍表示竞拍者 i i i是拍卖中的一个赢家。

博主给个常见的情景,某档综艺中休息时间的广告投标。多个不同广告(时间不同,价格不同)。中间休息时间的长度是固定的。

其中一种分配规则:贪心

对于 w i > W w_{i}>W wi>W的竞拍者,把他们移除对竞拍结果没有影响,别人一共能放30s,你的广告40s,报高报少都不会中标(当然,抽疯了给了天价也是有可能的,这里讨论正常的交易情况)。
所以在下面算法中 w i ≤ W w_{i}\le W wiW
背包问题的贪心算法:

  1. 将竞拍者按照以下公式的顺序从高到低排序:
    b 1 w 1 ≥ b 2 w 2 ≥ . . . ≥ b n w n \frac{b_{1}}{w_{1}}\ge \frac{b_{2}}{w_{2}}\ge ...\ge \frac{b_{n}}{w_{n}} w1b1w2b2...wnbn
  2. 按照这个顺序依次选取赢家,直到背包剩余容量容纳不下新的竞拍者的规模,算个停止。
  3. 要么返回上一步中的解,要么直接返回最高报价者。判断方法是,对比这两者的社会福利值,哪个更大就返回哪个。

读完一遍算法,博主又过一阵蒙蔽,这是什么选择?但是只要明白排序中第一个的报价不一定是最高的就能理解这个算法。这个算法是要不按照单价最高开始选取,要不就直接选择报价最高的。
该算法有个性质:对于任意一个背包问题,该算法所返回的值至少了最优解的一半。

证明

最优解说明

首先要说明一下这里的最优解是指“部分背包”的贪心算法的最优解。
“部分背包”的贪心算法:

  1. 将竞拍者按照以下公式的顺序从高到低排序:
    b 1
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值