- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * Floyd算法实例 * 动态规划算法的基本步骤 划分阶段: 选择状态: 确定决策并写出状态转移方程: 写出规划方程(包括边界条件): 动态规划的实质是分治思想和解决冗余,因此,动态规划是一种将问题实例分解为更小的、相似的子问题,并存储子问题的解而避免计算重复的子问题,以解决最优化问题的算法策略。 * 最优二叉查找树Optimal Binary Search Trees 二叉查找树一种重要的数据结构,主要应用于字典的实现。 例如:3,7,9,12的二叉查找树有: 哪一棵树在成功查找时,键的平均比较次数最少? 设3,7,9,12四个键分别以概率0.1,0.2,0.4,0.3来查找 0.1*1+0.2*2+0.4*3+0.3*4=2.9 0.1*2+0.2*1+0.4*3+0.3*2=2.2 0.1*2+0.2*1+0.4*2+0.3*3=2.1 0.1*3+0.2*4+0.4*2+0.3*1=2.2 * 最优二叉查找树Optimal Binary Search Trees 对于n个a1a2...an互不相等的键,设p1,p2,...,pn分别是它们的查找概率。 假设T1n是由这n个键构成的一棵最优二叉查找树,如何计算成功查找的1到n的最小平均键比较次数C[1,n],以及如何构造这棵树? 动态规划分析 划分阶段(子问题):为了 得到C[1,n],须从1到n中 选取一个节点k作为根节 点,则有这样一棵树: * 最优二叉查找树Optimal Binary Search Trees 对于ai...aj构成的一棵最优二叉树,有: * 最优二叉查找树 Optimal Binary Search Trees 这里只是得到最优二叉树中成功平均比较次数。 如果想得到二叉树本身,该怎么办? * 最优二叉查找树 Optimal Binary Search Trees 最优二叉树举例 键 3 7 9 12 概率 0.1 0.2 0.4 0.3 初始表格 1 2 3 4 T(1,2) T(4,4) T(1,4) R[i,j]=k表示包含i和j的最优树的根是k * 最优二叉查找树Optimal Binary Search Trees 算法 OptimalBST(P[1..n]) //用动态规划算法求解最优二叉树 //输入:一个n个键的有序列表的查找概率数组 //输出:成功查找平均比较次数,根表R for(i?1;i=n;i++){ C[i,i-1]?0;C[i,i]?i;R[i,i]?i;} C[n+1,n]?0; for(d?1;dn;d++) for(i?1;i=n-d;i++){ j?i+d;minval?∞; for(k?i;k=j;k++) if(C[i,k-1]+C[k+1,j]minval){ minval?C[i,k-1]+C[k+1,j];kmin?k;} R[i,j]?k; sum?P[i]; for(s?i+1;s=j;s++) sum?sum+P[s]; C[i,j]?minval+sum;} return C[1,n],R; 分析:OptimalBST算法的时间效率是Θ(n3) * 背包问题(The Knapsack Problem) 重量 w1 w2 ... wn 价值 v1 v2 ... vn n个物品,背包容量W 最大化: 限制条件: * 背包问题(The Knapsack Problem) 动态规划分析 设V[i,j]为前i个物品放到背包容量为j的背包中时最优解的物品总价值。则目标是:V[n,W]。 * 背包问题(The Knapsack Problem) 对于一般情况有: 设V[i,j]为前i个物品放到背包容量为j的背包中时最优解的物品总价值。有两种情况: a. 第i个物品不在背包中,则最优解物品总价值为V[i-1,j] b. 第i个物品在背包中,则最优解物品总价值为该物品的价值 加上 前i-1个物品中能够放进承重量为j-wi的背包的最优子集,即V[i-1,j-wi]+vi 以上情况为j-wi=0,即不管放不放,第i个背包放得进去。 如果i个背包放不下去了, j-wi0, 则V[i-1,j] * 背包问题(The Knapsack Problem) 物品 重量 价值 1 2 12¥ 2 1 10¥ 3 3 20¥ 4 2 15¥ 承重量W=5 V[4,5]≠V[3,5],物品4包含在最优解中
您可能关注的文档
最近下载
- 金属加工软件:ESPRIT二次开发_(4).ESPRIT API介绍.docx VIP
- 家传牛肉面配方大公开 .pdf VIP
- [医药卫]解读《医疗机构药事管理规定》秦玉琳.ppt VIP
- 镇江历史文化名城保护规划.pdf VIP
- 活性石灰生产手册.doc VIP
- 国家基本比例尺地图图式 第4部分国标.pdf VIP
- 金属加工软件:ESPRIT二次开发_(16).ESPRIT与其他软件的集成.docx VIP
- 中文版CorelDRAW X8平面设计案例教程教学课件534.pptx VIP
- 六年级英语毕业考试质量分析及教学建议.doc VIP
- 金属加工软件:ESPRIT二次开发_(1).ESPRIT软件概述.docx VIP
文档评论(0)