- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                0/1背包 ;0-1背包问题;最优子结构
0/1背包的最优解具有最优子结构特性。
设 (x1, x2,… , xn),xi?{0,1}是0/1背包的最优解,那么,(x1 ,x2,… , xn-1) 必然是0/1背包子问题的最优解:背包载重C?wnxn,共有n-1件物品,第i件物品的重量为 wi,效益Vi,wi0,vi0,1?in。;0-1背包问题;      假如有容量为9的背包,要装入4种体积为2,3,4和5的物品,价值分别为3,4,5和7。
      要在不超出背包容量的前提下,用某种方法尽可能多地在背包内装入物品,使总价值最大,
      首先,准备一个标号???0到4共5行和标号从0起到9共10列的空的矩形表,接着用值0初始化0列和0行的元素
      按如下办法直接填行1的值:m[1,j]=3(第一种物品的价值),当且仅当j≥2(第一种物品的体积)。
      第二行中的每项m[2,j]有两种可能性,第一种可能性是置
m[2,j]=m[1,j]这相当于把第一种物品放入背包,2号物品放不下;第二种可能性是置m[2,j]=m[1,j-3]+4,它相当于加上第二种物品,使它或者仅包含第二种物品,或者同时包含第一种和第二种物品。当然,仅当j≥3时,才有可能加上第二种物品。继续这种方法,填入第3行和第4行,得到如图所示的表。 ;体积为2,3,4和5的物品,价值分别为3,4,5和7。;;Knapsack有两个较明显的缺点:
1.算法要求所给物品的重量w是整数
2.当背包容量c很大时,算法需要的计算时间比较多。;算法改进;一个例子;函数m(i,j)是由函数m(i+1,j)与函数m(i+1,j-wi)+vi作max运算得到的。因此,函数m(i,j)的全部跳跃点包含于函数m(i+1,j)的跳跃点集p[i+1]与函数m(i+1,j-wi)+vi的跳跃点集q[i+1]的并集中。易知,(s,t)?q[i+1]当且仅当wi?s?c且(s-wi,t-vi)?p[i+1]。因此,容易由p[i+1]确定跳跃点集q[i+1]如下q[i+1]=p[i+1]?(wi,vi)={(j+wi,m(i,j)+vi)|(j,m(i,j))?p[i+1]} 
另一方面,设(a,b)和(c,d)是p[i+1]?q[i+1]中的2个跳跃点,则当c?a且db时,(c,d)受控于(a,b),从而(c,d)不是p[i]中的跳跃点。除受控跳跃点外,p[i+1]?q[i+1]中的其它跳跃点均为p[i]中的跳跃点。
由此可见,在递归地由表p[i+1]计算表p[i]时,可先由p[i+1]计算出q[i+1],然后合并表p[i+1]和表q[i+1],并清除其中的受控跳跃点得到表p[i]。;一个例子;上述算法的主要计算量在于计算跳跃点集p[i](1≤i≤n)。由于q[i+1]=p[i+1]?(wi,vi),故计算q[i+1]需要O(|p[i+1]|)计算时间。合并p[i+1]和q[i+1]并清除受控跳跃点也需要O(|p[i+1]|)计算时间。从跳跃点集p[i]的定义可以看出,p[i]中的跳跃点相应于xi,…,xn的0/1赋值。因此,p[i]中跳跃点个数不超过2n-i+1。由此可见,算法计算跳跃点集p[i]所花费的计算时间为
从而,改进后算法的计算时间复杂性为O(2n)。当所给物品的重量wi(1≤i≤n)是整数时,|p[i]|≤c+1,(1≤i≤n)。在这种情况下,改进后算法的计算时间复杂性为O(min{nc,2n})。;最优二叉搜索树 ;;;二叉搜索树的基本操作;;;;设有元素集合S={x1,x2,…,xn},其中,x1x2…xn。表示有序集S的二叉搜索树利用二叉树的结点来存储有序集中的元素。
二叉搜索树的叶子结点是形如( xi,xi+1 )的开区间。
在表示S的二叉搜索树中搜索一个元素x,返回的结果有两种情形:
(1)在二叉搜索树的内结点中找到x=xi 
(2)在二叉搜索树的叶子结点中确定x属于( xi,xi+1 );最优二叉搜索树;p(i) 是在集合中成功查找xi 的概率,1?i? n,q(i)是待查元素x值满足 xixxi+1的概率,0?i? n(假定x0= ??, xn+1=+?)。
最优二叉搜索树问题是指设法构造一棵具有最小平均搜索时间的二叉搜索树。
;设 c(0,n) 是由元素值集合{a1,…,an}所构造的最优二叉搜索树的代价,则;一般地,c(i,j) ,i?j 是元素值集合{ai+1,…,aj}所构造的最优二叉搜索树的代价,设r(i,j)=k为该树的根,要求结点k满足;例
设n=4且(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。;;构造最优二叉搜索
                
原创力文档
                        

文档评论(0)