01分数规划
2019.9.6
学习资料
- [Algorithm]01分数规划 By PerSeAwe
- 01分数规划入门 By CaptainLi
- 01分数规划问题相关算法与题目讲解(二分法与Dinkelbach算法) By tianxiang971016
- 【算法微解读】浅谈01分数规划 By dawnstar
- 0/1分数规划详解 By Judge_Cheung
简介
01分数规划问题简单说来就是给你一堆物品,每件物品有两个属性a,b。每个物品都有选或不选两种情况,设定一个参数x[i],当x[i] = 0时代表物品i不选,x[i] = 1时代表物品选。我们需要从中取出若干物品,也就是求出
的最值,我们移一下项,式子变成了
求出满足式子的R的最(大/小)值
提公因式得到
我们可以发现,式子左边的值是随着R的增大而减小的。
我们以求最大值为例,对于一个确定的R值,当左边的式子的值大于零时,说明有更大的R使得式子更接近0
所以可以二分R的值,求出的最大值,也就是可以将a[i]-R*b[i]看做权值,至于怎么求,就可以套其他算法了,当然如果允许,也可以暴力。大家就根据套的算法为01规划问题分了个类,
但是有的时候出题人想卡常,于是二分便靠不住了,有一种名为Dinkelbach的东西(详见上面的blog或这个链接),简洁说来就是直接跳横截距,理论上会快一点,但是还是要根据实际情况来选择啊
例题
最优比率生成树
1. MZOJ #82 总统竞选 :my blog
这题卡常,还卡精度