算法设计技巧与分析(十一):近似算法(approximation algorithms)


近似算法(approximation algorithms)

组合优化问题不是最小化问题就是最大化问题,它由以下三部分组成:
1、一个实例(instances)集合D;
2、对于每个实例I属于D,存在I的一个候选解的有限集S(I);
3、D中的一个实例I的每个解a属于S(I),存在一个值f(a),称为a的解值。

用OPT(I)表示最优值f(a*),且它小于等于f(a)。

最优化问题的一个近似算法A是一个多项式时间的算法,使得给出一个实例I属于D,它输出的某个解a属于S(I),将用A(I)表示f(a)。

差界(difference bounds)

对于问题的所有实例I,由近似算法A可以得到也是最想得到的解A是使得|A(I)-OPT(I)|<=K,K是某个常数。

只有很少的NP难的最优化问题,他们的差界是已知的。

困难结果:背包问题

对于背包问题,我们将证明不存在带差界的背包问题的近似算法。

假设存在一个带差界的求解背包问题的近似算法A:
在这里插入图片描述

相对性能界(relative performance bounds)

对于最小化问题,定义近似比(approximation ratio):
在这里插入图片描述
对于最大化问题,有:
在这里插入图片描述

装箱问题(the bin packing problem)

给定尺寸为s1、s2、…、sn的物品u1、u2、…、un的集合,其中sj介于0和1之间,我们需要将这些物品包装到单位容量的最小数量的箱子中。

下面介绍最先适配方法(First Fit)。

所有的箱子初始值为空,考虑把这些物品按照u1、u2、…、un的顺序装箱,为了装物品ui,我们找到最小的序号j使得箱j最多装了1-si的东西,并把物品ui加到箱j中。

设FF(I)标记在I中用FF启发式方法装物品所用箱子数目,设OPT(I)是最优箱子数目:
由于不可能存在两个半空的箱子:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值