博主想起当时证明出来特开心,虽然不会长更博弈论,还是可以分享一下。有问题想要一起讨论的也可以私信博主。
背包拍卖
在背包拍卖中,每一个竞拍者 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=1∑nwixi≤W
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 wi≤W。
背包问题的贪心算法:
- 将竞拍者按照以下公式的顺序从高到低排序:
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}} w1b1≥w2b2≥...≥wnbn - 按照这个顺序依次选取赢家,直到背包剩余容量容纳不下新的竞拍者的规模,算个停止。
- 要么返回上一步中的解,要么直接返回最高报价者。判断方法是,对比这两者的社会福利值,哪个更大就返回哪个。
读完一遍算法,博主又过一阵蒙蔽,这是什么选择?但是只要明白排序中第一个的报价不一定是最高的就能理解这个算法。这个算法是要不按照单价最高开始选取,要不就直接选择报价最高的。
该算法有个性质:对于任意一个背包问题,该算法所返回的值至少了最优解的一半。
证明
最优解说明
首先要说明一下这里的最优解是指“部分背包”的贪心算法的最优解。
“部分背包”的贪心算法:
- 将竞拍者按照以下公式的顺序从高到低排序:
b 1