对于0-1分数规划的Dinkelbach算法…

对于0 - 1分数规划的Dinkelbach算法的分析



武钢三中 吴豪[译]

摘要:
0 - 1分数规划问题是指求出解集{xi | xi = 0或1}使目标(c1x1 + c2x2 + 对于0-1分数规划的Dinkelbach算法的分析 + cnxn) / (d1x1 + d2x2 + + dnxn) = cx / dx达到最大。对于分数规划问题,Dinkelbach提出了一个算法,它通过解决一个子问题Q(L)来得到原文题的解。这里Q是一个线性的最小化目标函数cx - Ldx,且满足x等于0或1。在本文中,我们证明了Dinkelbach算法在最坏情况下可以在O(log(nM))的时间内解决子问题,这里M = max{max | ci | ,max | di | , 1 }。
1 0 - 1分数规划问题



要使两个线性函数的比值最大或最小的问题,我们称作分数规划问题或双曲线问题。分数规划问题在许多领域都可以找到[
22 ]。它在经济学中的应用有些常见的例子,如寻找最优收入比率或者在效益约束下的最佳物资调配问题。另外,系统效率也常常用比率来衡量,如收益 / 时间、利润 / 风险和消费 / 时间。有大量的文章对这类问题做了分析[ 3 5 12 20 24 ]。


有几类分数规划问题已被广泛地研究。如0
- 1分数规划问题[ 1 ],它包含最优比率生成树问题[ 4 ],最优比率环问题[ 8 6 19 ],分数背包问题[ 15 ],以及分数剪枝问题[ 10 ]。在本文中,我们研究0 - 1分数规划问题,它的描述如下:


令c
= (c1,c2,…,cn)和d = (d1,d2,…,dn)为n维整数向量,那么一个0 - 1分数规划问题用公式描述如下:

FP: 最小化
(c1x1
+ …cnxn) / (d1x1…dnxn) = cx / dx
xi∈{
0 , 1 }
这里x表示列向量(x1,x2,…,xn)T .
0 - 1值向量的子集Ω称作可行域,而x则是Ω的一个元素,我们称x为可行解。贯穿全文,我们假定对于任意可行解x,dx都是正数。这里我们记C = max{max | ci | , 1 },D = max{max | di | , 1 }。那么,显然问题的最优解在区间[ - nC,nC]内。
对于分数规划问题,有许多算法都能利用下面的线性目标函数解决问题。

Q(L): 最小化 cx
- Ldx

xi∈{
0 , 1 }
记z(L)为Q(L)的最值。令x
* 为分数规划的最优解,并且令L *= (cx * ) / (dx * )(注:分数规划的最值)。那么下面就容易知道了:

z(L)
> 0
当且仅当
L
< L *

z(L)
= 0
当且仅当
L
= L *

z(L)
< 0
当且仅当
L
> L *
此外,Q(L
* )的最优解也能使分数规划最优化[ 7 , 16 , 17 ]。因此,解决分数规划问题在本质上等同于寻找L = L * 使z(L) = 0 。出于这个目的,关于L的函数z(L)具有很多不错的性质:分段线性,凹函数,严格递减,z(
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值