




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2所谓0/1背包问题是指在物品不能分割,只能整件装入背包或不装入的情况下,求一种最佳装载方案使得总收益最大.给定n种物品和一背包,物品编号从1到n。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大.0-1背包问题是一个特殊的整数规划问题。niiixv1maxnixCxwiniii1,1 , 01最优子结构0/1背包的最优解具有最优子结构特性。设 (x1, x2, , xn),xi0,1是0/1背包的最优解,那么,(x1 ,x2, , xn-1) 必然是0/1背包子问题的最优解:背包载重Cwnxn,共有n-1件物品,第i件物品的重量为
2、wi,效益Vi,wi0,vi0,1in。4设所给0-1背包问题的子问题nikkkxvmaxnkixjxwknikkk,1 , 0的最优值为m(i,j),即m(i,j)是背包容量为j,可选择物品为1,2,i时0-1背包问题的最优值。由0-1背包问题的最优子结构性质,可以建立计算m(i,j)的递归式如下。0j或00,0),1(),1(),1(max),(iwjiwjjimvwjimjimjimiiii 假如有容量为假如有容量为9 9的背包,要装入的背包,要装入4 4种体积为种体积为2 2,3 3,4 4和和5 5的物品,的物品,价值分别为价值分别为3 3,4 4,5 5和和7 7。 要在不超出背包
3、容量的前提下,用某种方法尽可能多地在背包内要在不超出背包容量的前提下,用某种方法尽可能多地在背包内装入物品,使总价值最大,装入物品,使总价值最大, 首先,准备一个标号为首先,准备一个标号为0 0到到4 4共共5 5行行和标号从和标号从0 0起到起到9 9共共1010列列的空的的空的矩形表矩形表, ,接着接着用值用值0 0初始化初始化0 0列和列和0 0行行的元素的元素 按如下办法直接填行按如下办法直接填行1 1的值:的值:m m11,j j=3(=3(第一种物品的价值第一种物品的价值) ),当,当且仅当且仅当j2(j2(第一种物品的体积第一种物品的体积) )。 第二行中的每项第二行中的每项m2
4、,jm2,j有两种可能性,有两种可能性,第一种可能性第一种可能性是置是置m m22,j=j=m m1,j1,j这相当于把第一种物品放入背包,号物品放不下;这相当于把第一种物品放入背包,号物品放不下;第第二种可能性二种可能性是置是置m2,j=m2,j=m m1,j-3+4,1,j-3+4,它相当于加上第二种物品,使它它相当于加上第二种物品,使它或者仅包含第二种物品,或者同时包含第一种和第二种物品。当然,或者仅包含第二种物品,或者同时包含第一种和第二种物品。当然,仅当仅当j3j3时,才有可能加上第二种物品。继续这种方法,填入第时,才有可能加上第二种物品。继续这种方法,填入第3 3行行和第和第4 4
5、行,得到如图所示的表。行,得到如图所示的表。 列号列号体积为体积为2 2,3 3,4 4和和5 5的物品,价值分别为的物品,价值分别为3 3,4 4,5 5和和7 7。容量为容量为9 9的背包的背包设有0/1背包问题n=3,(w1,w2,w3)=(2,3,4),(v1,v2,v3)=(1,2,4)和C=6。Knapsack有两个较明显的缺点:1.算法要求所给物品的重量w是整数2.当背包容量c很大时,算法需要的计算时间比较多。9由m(i,j)的递归式容易证明,在一般情况下,对每一个确定的i(1in),函数m(i,j)是关于变量j的阶梯状单调不减函数。跳跃点是这一类函数的描述特征。在一般情况下,函
6、数m(i,j)由其全部跳跃点唯一确定。如图所示。对每一个确定的i(1in),用一个表pi存储函数m(i,j)的全部跳跃点。表pi可依计算m(i,j)的递归式递归地由表pi+1计算,初始时pn+1=(0,0)。 10n=3,c=6,w=4,3,2,v=5,2,1。x(0,0)m(4,x)x(2,1)m(4,x-2)+1x(0,0)(2,1)m(3,x)(3,2)xm(3,x-3)+2(5,3)x(0,0)(2,1)m(2,x)(3,2)(5,3)xm(2,x-4)+5(4,5)(6,6)(7,7)(9,8)x(0, 0)(2, 1)m(1,x)(3,2)(5,3)(4,5)(6,6)(7,7)(
7、9,8)x(0,0)(2,1)m(3,x)x(0,0)(2,1)m(2,x)(3,2)(5,3)11函数m(i,j)是由函数m(i+1,j)与函数m(i+1,j-wi)+vi作max运算得到的。因此,函数m(i,j)的全部跳跃点包含于函数m(i+1,j)的跳跃点集pi+1与函数m(i+1,j-wi)+vi的跳跃点集qi+1的并集中。易知,(s,t)qi+1当且仅当wisc且(s-wi,t-vi)pi+1。因此,容易由pi+1确定跳跃点集qi+1如下qi+1=pi+1(wi,vi)=(j+wi,m(i,j)+vi)|(j,m(i,j)pi+1 另一方面,设(a,b)和(c,d)是pi+1qi+1
8、中的2个跳跃点,则当ca且db时,(c,d)受控于(a,b),从而(c,d)不是pi中的跳跃点。除受控跳跃点外,pi+1qi+1中的其它跳跃点均为pi中的跳跃点。由此可见,在递归地由表pi+1计算表pi时,可先由pi+1计算出qi+1,然后合并表pi+1和表qi+1,并清除其中的受控跳跃点得到表pi。12n=5,c=10,w=2,2,6,5,4,v=6,3,5,4,6。初始时p6=(0,0),(w5,v5)=(4,6)。因此,q6=p6(w5,v5)=(4,6)。p5=(0,0),(4,6)。q5=p5(w4,v4)=(5,4),(9,10)。从跳跃点集p5与q5的并集p5q5=(0,0),(
9、4,6),(5,4),(9,10)中看到跳跃点(5,4)受控于跳跃点(4,6)。将受控跳跃点(5,4)清除后,得到p4=(0,0),(4,6),(9,10)q4=p4(6,5)=(6,5),(10,11)p3=(0,0),(4,6),(9,10),(10,11)q3=p3(2,3)=(2,3),(6,9)p2=(0,0),(2,3),(4,6),(6,9),(9,10),(10,11)q2=p2(2,6)=(2,6),(4,9),(6,12),(8,15)p1=(0,0),(2,6),(4,9),(6,12),(8,15)p1的最后的那个跳跃点(8,15)给出所求的最优值为m(1,c)=15。
10、13上述算法的主要计算量在于计算跳跃点集pi(1in)。由于qi+1=pi+1(wi,vi),故计算qi+1需要O(|pi+1|)计算时间。合并pi+1和qi+1并清除受控跳跃点也需要O(|pi+1|)计算时间。从跳跃点集pi的定义可以看出,pi中的跳跃点相应于xi,xn的0/1赋值。因此,pi中跳跃点个数不超过2n-i+1。由此可见,算法计算跳跃点集pi所花费的计算时间为从而,改进后算法的计算时间复杂性为O(2n)。当所给物品的重量wi(1in)是整数时,|pi|c+1,(1in)。在这种情况下,改进后算法的计算时间复杂性为O(minnc,2n)。 nniinniOOipO22| 1|22查
11、找插入删除设 有 元 素 集 合 S = x1, x2, , xn , 其 中 ,x1x2xn。表示有序集S的二叉搜索树利用二叉树的结点来存储有序集中的元素。二叉搜索树的叶子结点是形如( xi,xi+1 )的开区间。在表示S的二叉搜索树中搜索一个元素x,返回的结果有两种情形:(1)在二叉搜索树的内结点中找到x=xi (2)在二叉搜索树的叶子结点中确定x属于( xi,xi+1 )22n二叉搜索树(1)若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;(2)若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值;(3 它的左、右子树也分别为二叉排序树451253337241006
12、19078在随机的情况下,二叉查找树的平均查找长度和 是等数量级的nlogp(i) 是在集合中成功查找xi 的概率,1i n,q(i)是待查元素x值满足 xixxi+1的概率,0i n(假定x0= , xn+1=+)。最优二叉搜索树问题是指设法构造一棵具有最小平均搜索时间的二叉搜索树。niniiqip101)()(设 c(0,n) 是由元素值集合a1,an所构造的最优二叉搜索树的代价,则 n)w(0, n)c(k,1)kc(0, min n)c(k,1)kc(0,n) w(0, min n)c(0,nk1nk1一般地,c(i,j) ,ij 是元素值集合ai+1,aj所构造的最优二叉搜索树的代价
13、,设r(i,j)=k为该树的根,要求结点k满足)jw(i, j)c(k,1)kc(i, min j)c(k,1)kc(i,j)w(i, minj)c(i,jk1ijk1i设n4且(a1,a2,a3,a4)=(Mon,Thu,Tue,Wed)。又设p(1:4)=(3,3,1,1)和q(0:4)(2,3,1,1,1)。这里p和q都已乘了16。构造最优二叉搜索树int Find(int i,int j,int *r,float*c) float min=INFTY; int k; for (int m=i+1;m=j;m+) if (cim-1+cmj)min) min=cim-1+cmj;k=m;
14、 return k; void CreateOBST(float* p,float* q, float *c,int *r,float*w,int n) for (int i=0;i=n-1;i+) wii=qi;cii=0.0;rii=0; wii+1=qi+qi+1+pi+1; cii+1=qi+qi+1+pi+1; rii+1=i+1; wnn=qn;cnn=0.0;rnn=0; for (int m=2;m=n;m+) for (i=0;iM的阶跃点得到。 S1=(0,0),S10=(2,1) S0=(0,0),(2,1),S11=(3,2),(5,3)S1=(0,0),(2,1),(3,2),(5,3),S12=(4,4),(6,5),(7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校招产品类笔试题目及答案
- 2025年法学概论考试的出题方向与试题及答案
- 2025年软件设计师考试常见陷阱及试题及答案
- 校招:云计算工程师笔试题库及答案
- 2025年计算机视觉技术试题及答案
- 大数据时代的智能办公软件选择指南
- 商业视角下的在线教育平台发展前景
- 软件开发中的挑战与创新解决方案试题及答案
- 校招:软件测试工程师笔试真题及答案
- 2025年软件设计师考试新趋势试题及答案
- 2024年重庆市高考物理试卷(含答案解析)
- 2024-2030年中国军用个人防护装备行业市场发展趋势与前景展望战略分析报告
- 2022年6月英语四级真题 第一套
- DB33∕T 2154-2018 公路桥梁后张法预应力施工技术规范
- 新编应用文写作全套教学课件
- 四川省凉山州2022-2023学年七年级下学期期末历史试题
- JBT 1306-2024 电动单梁起重机(正式版)
- QBT 2262-1996 皮革工业术语
- 《工程建设标准强制性条文电力工程部分2023年版》
- 心理干预各论家庭治疗
- 《输变电工程无人机倾斜摄影测量技术规程》
评论
0/150
提交评论