第06讲 装箱问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3 。 2
FFD算法的渐进性能比
11 定理:对于任意实例I,FFD( I ) OPT ( I ) 1 ,且存在 9
OPT (I) ,任意大的实例I,使得 FFD ( I )
RFFD
11 OPT ( I ) ,因而 9
11 9

CF算法:
step1:把物件 L {a1 , a2 ,...., an } 按其大小进行非增序排列,
min
n
z yi
i 1
n
s.t
w x
j 1
j ij
Cyi
i 1, 2...., n j 1, 2...., n i 1, 2...., n i, j 1, 2...., n
x
i 1
n
ij
1,
0 yi 1 0 xij 1
背包问题的下界
松弛问题的一个最优解
绝对性能比
对于一个极小(大)化问题π,I为任意实例。设A是π的 近似算法,用A解I得到的解值为A(I),而I得最优解为 OPT( I ),记
A( I ) OPT ( I ) RA ( I ) , ( RA ( I ) ) OPT ( I ) A( I )
则近似算法A的绝对性能比 RA 定义为
装箱问题
Bin Packing
装箱问题描述
w i 设有许多长为C的一维箱子及长分别为, i , 1,..., n
的n件物品,且 0 wi C ,欲把这些物品全部装入箱 中,为了给出它的整数线性规划描述,我们引入一些变量: 如果第i个箱子被使用,则 yi 1 ,否则 yi 0 ,第j个物品 放入第j个箱子中 xij 1 ,否则 xij 0
WF算法
WorstFit策略与BestFit策略刚好相反, BestFit策略是在 候选箱中选取最满的箱子, 装入后, 箱子的已装容量看起来 比较悬殊, 而WorstFit策略是在候选箱中选取最空闲的箱 子———这也是“最差”的含义而非指性能最差, 这样箱 子的 已装容量看起来比较平均。
其它装箱问题
不妨设 s(a1 ) s(a2 ) ..... s(an ) . step2:首先把 a1 放入箱子中 B1 ,然后从最右端开始,依 次把物件an , an1.... 放入 B1 ,直到下一个物件不能再放入 箱子为止,开启新的箱子 B2 .
CF算法:
step3:设在第i 步循环时,打开第i 个箱子,此时把物件 ai
时,把 ak 1 , ak 2 ,..., al 放入中 Bi ,开启新的箱子 Bi 1
.
CF算法:
step4:直到把所有物件都放入箱子中,循环终止,并输 出箱子数目m.
CF算法的绝对性能比为3/2,时间复杂度为 O(n log n) ,该算 法又称为交叉适应算法。
在线装箱问题:在物品未到达前不必预知其 长度。 离线装箱问题:事先知道物品的所有信息。
有色Baidu Nhomakorabea箱问题 二维装箱问题 三维装箱问题
作业
P : 2, 4 115
BF算法
依次处理物品, 如果当前物品不能装入到当前所有打开的 箱子中, 仍然保持箱子开放, 同时, 打开一个新的箱子并将 该物品装入。如果当前有几个打开的箱子均可装入该物品, 则选择一个剩余空间最小(最接近装满) 的箱子装入。之所 以保持箱子开放, 是希望后边更小的物品能够装入已打开 的箱子中, 充分利用箱子的剩余空间。
放入 Bi 中. 假设第i-1 个箱子 Bi 1 中最后一个放入的物件 为 ak ,则在i 步循环时最右端的物件为ak 1 ,那么当
s(ai ) s(ak 1 ) ... s(al ) C 且 s(ai ) s(ak 1 ) ... s(al ) s(al 1 ) C
当i j时,xij 1; 当i j时,xij 0; wi yi C

z i 1 最优解值 C
w
n
i
背包问题的下界
定理:装箱问题的最优解的一个下界为
n wi L1 i 1 C
背包问题的下界
定理:设a是任意满足 问题的一个任意实例,记
练习
箱子长为1,设有30个物品,物品长度为
1 i 6 1/ 4 1/ 4 6 i 12 wi 12 i 18 1/ 4 2 1/ 2 18 i 30
分别用NF算法,FF算法,FFD算法,CF算法给出近似 解,并与最优解进行比较。
按照物品的给定顺序装箱,并且把每一个物品放入第一 个适合它的箱子中;把 w1 放入第一个箱子当中,设 wi 是当前要装入的物品,B1, B2 ,...., B j 是当前已经使用过的 箱子,在这些箱子中找一个剩余长度不小于 wi 且下标 最小的箱子,将 wi 放入该箱子,如果不存在这样的箱 子,则另开一个新箱子 Bj 1 ,并将 wi 放入中 Bj 1 。
装箱问题数学描述
min
n
z yi
i 1
n
s.t
w x
j 1
j ij
Cyi
i 1, 2...., n j 1, 2...., n
x
i 1
n
ij
1,
yi 0 或者1 i 1, 2...., n xij 0 或者1 i, j 1, 2...., n
背包问题的松弛问题
是背包问
题最优解的一个下界。
背包问题的下界
推论:记 L2 max{L(a) | 0 a C , a为整数} ,则是装箱问题最优
2
解的一个下界。
NF算法
把物品按照给定的顺序装箱:把 w1 放入第一个箱子; 设 wi 是当前要装入的物品, B j 是具有最大下标的使 用过的箱子,若 wi 的长度不大于 B j 的剩余长度,则 把 wi 装入 B j ,否则把 wi 放入一个新的箱子 Bj 1 , 且 B j在以后不再使用。 通俗的说:将物品按顺序装箱,当第一个箱子不能再装 的情况下,将箱子打包运走,下面使用第二个箱子…… 下次适应(Next Fit)算法,其时间复杂性为 O(n) .
首次适应(First Fit)算法,其时间复杂性为O(n log n)

FF算法绝对性能比的上界
FF ( I ) 7 定理: 。 OPT ( I ) 4
FF算法的渐进性能比
FF 定理:对于任意实例I, ( I ) 17 OPT ( I ) 1 ,而且存在OPT(I) 10
,因而有 RFF
任意大的实例I
,使得 FF ( I )
17 (OPT ( I ) 1) 10
17 . 10
FFD算法
将物品按照长度从大到小排列,然后按FF算法对物品进行 装箱。
First Fit Decreasing ,其算法时间复杂性为 O(n log n) 。
FFD算法的绝对性能比
R 定理: FFD
0a C 2
的一个整数,对于装箱
J1 {物品j | w j C a} J 2 {物品j | C a w j a} J 3 {物品j | C w j a} 2

w j (| J 2 | C wi ) jJ iJ 2 L(a ) | J1 | | J 2 | max 0, 3 C
RA inf{r 1, 对于所有实例I,RA I) r} (
渐进性能比
RA inf{r 1| 存在N Z , 对于所有满足OPT ( I ) N的实例,RA ( A) r}
1 RA RA
NF算法的绝对性能比
定理:RNF 2
FF算法
相关文档
最新文档