




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、动态规划之-0- 1背包问题及改 进作者:日期:有N件物品和一个容量为 V的背包。第i件物品的重量是 wi,价值是v i 。求解将 哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。在选择装入背包的物品时,对于每种物品i ,只能选择装包或不装包, 不能装入多次,也不能部分装入,因此 成为0 -1背包问题。形式化描述为:给定 n个物品,背包容量C0,重量第i件物品的重量 wi 0,价值V i 0 , 1wiw n.要求找一 n 元向量(X1,X 2,,Xn ,), Xi 0,1,使得 刀(wi * Xi) C, 且刀V i * Xi达最大即一个特殊的整数规划问题。数学描述为:
2、y u.T J ,即第i个物品重量大于背包容量j时,m (i, j)=m ( i +1,j)(2) 当wi = j,即第i个物品重量不大于背包容量j时,这时要判断物品i放入和不放入对m的影响。若不放入物品i,则此时m (i,j)=m(i+ 1 , J ) 若放入物品i,此时背包剩余容量为J - w :i,在子结构中已求出当容量 k= 0,1, 2C 时的最优值 m (i+1 , k )。所以此时 m(i,j)=m( i+1, j-wi: ) + vi。取上述二者的最大值,即m(i, J ) = m a x m (i+1 , j), m (i+1,j- w i )+ vi 总结得出状态转移方程为
3、= 皿+1琼 + 1J - 叫)+ 片叫尸1叭+1J)0勺叫也(血力=该算法的pyth o1 # 0 -1背包问题代码实现:2 _a u th o r_ice5 # 背包容量 Ocapacity,不是 0c a pa c ity- 16 defkn a psac k(weig h t, v alue, capaci t y):if le n( wei ght) != lena lue):print ( pa rameter e r r!r et ur n10b j_nu m =1 en(w ei ght)res u lt = for x inrang e(ob j num)12divide =
4、 min(weight-1, capai ty)14r e s ult -1 .e X te n d(value-1 f o r X:inr an15for i in r e verse d(list(range(1, ob j_num 1 ):1 6divide = min(weig h t i,capa c it y)仃f orj i n ran g e ( d ivide):18resu1 ti.a p p end(resulti+ 1 :j :)19fo r j inr ang e (di v ide,c apacit y +1 )1 3result-1range(di v id e
5、)1 n20res ul t i.appe n d (max(resu 1 ti + 1ge( d iv i de, capac=0 for X1 t y + 1)resu 1ti + 1 j - w eighti +2122re s ult0 =capaci t y: resu1t 1 capacity: 2 3i fwe ight0 2人n时,需要Q ( n *2人n)计算时间。所以,改进算法如下:对于函数m(i, j)的值,当i确定,j为自变量时,是单调不减的跳跃式增长,如图所示。而 这些跳跃点取决于在(物品1,物品1 +1,物品n)中选择放入哪些物品使得在放入重量小于容量j (0v =
6、jd,则(c, 掉受控跳跃点,是为了求得在物品由此计算得出Pn,P n -1, (3) 求P i1 ,即求PiU Qi然后再去掉 受控跳跃点 后的点集。此处有个 受控跳跃点 的概 d)受控于(a,b),所以(c,d )?Pi-1o 去i 1放入后m较大的点,即使m取最优值的跳跃点。,P1。求得P1的最后那个跳跃点即为所求的最优值m(1 ,C)o举个例子n =5,c= 1 0, w= 2,2,6,5, 4,v= 6, 3,5,4,6 。跳跃点的计算过程如下初始时 因此,p6=(0,0)q 6 = p 6 (w5,V 5 )= (4, 6 )p : 5=(0,0), (4,6)q 5 =p5 (w
7、4,v4)=( 5 , 4) , (9, 1 0)4 ),(9, 1 0)10q :4=p4: (0,0),p : 3= q 3 = p3:(6,5)=(6,5),(10, 11)(4 ,6),(9, 1 0) , (10,11)(2 , 3 )= (2,3),(6 , 9) p2=(0, 0), (2, 3), (4,6 ), (6,9), (9, 10),(10, 1q2= p: 2 (2, 6)= ( 2 ,6) ,(4 , 9),(6 , 12), ( 8, 1 5)p : 1 = (0, 0), (2 , 6 ),(4,9) , (6,1 2 ) , ( 8 ,15)p 1 的最后的
8、那个跳跃点(8 , 15)即为所求的最优值,最后,p y thon代码的实现:C lass Poin t:d e finit(self , x , y )sel f .x = xsel f .y = y0 -1背包问题改进def knapsac k impr o ve( we i gh t, va 1 u e , capacity):i f le n (weigh t) ! = len (v alu e ):pr i nt (para met er err!m(1,C) =15p 4 =(0 ,0) , (4 , 6), (9 , 10) p 5与q 5的并集 p5: Uq: 5=(0, 0
9、),( 4 ,6),(5, 中跳跃点(5,4)受控于跳跃点(4 , 6)。将受控跳跃点(5, 4 )清除后,得到p 4ret u rn12o bj_ nu m = len(w eight)13jump_p oints_pfor a n g e ( o b j _num)14jum p p oin ts qf or xin range (obj_n u m)15ju mp_points p.a pp end (Poin t (0,0)16jump_p o ints _ q . a p p end(Po i n t(w ei g ht : obj_ n um - 1, va 1 u e obj_n
10、u m - 1)fo r i in r ever sed(l is t(range( 1 , o bj_ nu n):18jum p _po int s _p :i = mer gepo ints(ju mp_p oin ts_ p i +1 , jump_p oi n t s _q i +1)19jump poi n ts q i = Point(po i n t . x + weig h ti - 1,po i nt .y + v a lue :i 1) fo i n t in jump_ points_ p i ifp oin t. x + weig h ti - 1 = c apa c
11、 it y r e sult = merge_p oi n ts(ju m p_p oint sp 1, j u mp _po in ts_q1)ret u r n resul t2 5def m erg e _poi n t s(p oi n ts_x, poi n ts _y):26x_le n = len( po int s _x )27y len =l e n(poi n ts_y)28merg e d_po ints =2 9i = j= 030while T rue:31if i=x_len o r j =y 1 en:32b reak33i f po in ts _ x i .
12、x= p oints_y j. y:36J += 137i += 138else :3 9mergedpoi nt s. a ppe n d (po in ts _y j )40if p oin ts _ y J.y = p o int s_xi .y:4 1i += 142j+ = 143while i merg ed _po int s- 1 .x and p oints _x i.y me rge d_po int s - 1.y :4 5me r ged_p o int s. ap pend(points xi)46i += 14 7whil e jmer ged_po ints-1 .x and p oints_yj.y merged points- 1 .y:49me rg e d_po ints;.a ppe nd( p o int s _y j )5 0j += 151re t urn merge dpo ints52535 4result = kna
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广告工程合同
- 2025标准版上海仓库租赁合同书
- 2025租赁合同(先付租金后使用)
- 一般承揽合同
- 彩票人工缩水服务合同范本
- 2025二级建造师建设工程施工管理考点知识:合同变更与现场签证与合同价款期中支付
- 2025年度装修合同范本
- 2025(范本)设备采购合同
- 广东房屋借住协议书
- 避险安置协议书范文
- 湖南省炎德英才名校联考联合体2024-2025学年高二下学期3月月考-数学+答案
- 蔬菜水果食材配送服务投标方案(技术方案)
- 中医内科学知到课后答案智慧树章节测试答案2025年春浙江中医药大学
- 第二单元第10课《小型网络的搭建》教学设计 2023-2024学年浙教版(2023)初中信息技术七年级上册
- 《高效能NLP沟通技巧》课件
- 电力应急物资储备与管理
- 中国公民健康素养-基本知识与技能(2024年版)试题及答案
- 【语文】第三单元整本书阅读《骆驼祥子》圈点、批注、做笔记课件-2024-2025学年统编版语文七年级下册
- 新目录监理规划2025
- 2024年天翼云认证运维工程师考试复习题库(含答案)
- 储能项目竣工报告
评论
0/150
提交评论