已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书(论文)用纸摘 要动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解,每个解都对应一个值,要求找到具有最优值的解。其基本思想是将待求解问题分解成若干个子问题,先求解子问题,并把所有已解子问题的答案记录到一个表中,而不考虑这些子问题的答案以后是否被用到。用动态规划算法来求解最优二叉搜索树问题,可以描述为对于有序集S及S的存取概率分布(a0,b1,a1,, bn,an),在所有表示有序集S的二叉搜索树中找出一棵开销最小的二叉搜索树。动态规划算法的有效性依赖于问题本身具有最优子结构性质和子问题重叠性质。最典型的就是路由器中的路由搜索引擎查找一条指定的路由最坏情况下最多只用查找31次。该文给出了用动态规划算法构造最优二叉搜索树的详细步骤,并用C+语言具体实现了该算法,用一定的空间换取时间,提高了解决本问题的效率。关键词:动态规划,最优二叉搜索树,最优子结构目 录1 问题描述12 问题分析23 算法设计34 算法实现45 测试分析6结 论7参考文献8II1 问题描述给定一个有序序列K=k1k2k3,kn和他们被查询的概率P=p1,p2,p3,pn,要求构造一棵二叉查找树T,使得查询所有元素的总的代价最小。对于一个搜索树,当搜索的元素在树内时,表示搜索成功。当不在树内时,表示搜索失败,用一个“虚叶子节点”来标示搜索失败的情况,因此需要n+1个虚叶子节点d0d1dn。其中d0表示搜索元素小于k1的失败结果,dn表示搜索元素大于kn的失败情况。di(0in)表示搜索节点在ki和k(i+1)之间时的失败情况。对于应di的概率序列是Q=q0,q1,qn。在最有二叉搜索树问题是指已给出一株二叉树的中序遍历(或需要你全排列枚举),以及每个节点搜索概率,搜索到一层花费1,问如何安排这颗二叉树使搜索花费的期望值最小。第5页 共8 页2 问题分析最优二叉搜索树问题具有最优子结构性质。证明:设Tij是有序集xi,xj关于存取概率分布(ai-1,bi,bj,aj)的一棵最优二叉搜索树,平均路长为pij。Tij的根结点存储元素xk。其左右子树Tl和Tr的平均路长分别为pl和pr。由于Tl是关于集合xi,xk-1的一个二叉搜索树,故plpi,k-1。如果plpi,k-1,那么用Ti,k-1替换Tl可得到平均路长比Tij更小的二叉搜索树。这与Tij是最优二叉搜索树相矛盾。所以,左子树Tl是一棵最优二叉搜索树,同理可证右子树Tr也是一棵最优二叉搜索树,即最优二叉搜索树的子树也是最优二叉搜索树。建立递归关系式若最优二叉搜索树Ti,j的根结点为k,最小平均路长为pi,j,mi,j表示Ti,j的开销,则有mi,j=wi,jpi,j,其中,可建立下列递归关系:Mi,j=bk+(mi,k-1+wi,k-1)+ (mk+1,j+wk+1,j) 而 wi,j=bk+wi,k-1+wk+1,j则mi,j=wi,j+mi,k-1+mk+1,j(1)将k=i+1,i+2,,j分别代入式,选取使mi,j达到最小的K,这样递归关系式改为:mi,j=wi,j+minmi,k-1+mk+1,jmi,i-1=0,1in解递归关系,m1,n就是所求的最优值。将对应于mi,j的断开位置k记录在si,j中(也称为根表,记录子树的根),以便构造最优解。根据记录的最优断开位置si,j,可以容易地构造出最优解。3算法设计寻找最优子结构。一个最优二叉树的子树必定包含连续范围的关键字kikj,1=i=j=n,同时也必须含有连续的虚叶子节点di-1dj。如果一棵最优二叉查找树T有一棵含有关键字kikj的子树T,那么,T也是一棵最优查找树,这通过剪贴思想可以证明。现在开始构造最优子结构:在kikj中,选定一个r,i=r=i时,需要选择合适的kr作为根节点,然后其余节点kiK(r-1)和k(r+1)kj构造左右孩子。这时要考虑左右孩子这些节点成为一个节点的子树后,它的搜索代价的变化:根据ET的计算,得知它们的期望代价增加了“子树中所有概率的总和”w。wi,j= pl / 对每个l=ij+ql /对每个l=i-1j于是当j=i时,ei,j=pr + (ei,r-1+wi,r-1)+(er+1,j+wr+1,j) = ei,r-1 + er+1,j+wi,j;4 算法实现计算最优二叉树的期望代价ei,j= q(i-1) /如果j=i-1min(ei,r-1 + er+1,j+wi,j),如果i=j,其中i=r=j wi,j=q(i-1) 如果j=i-1wi,j=wi,j-1+pj+qj 如果i=j 3.代码实现view plaincopy to clipboardprint?#include using namespace std; #define MAXNUM 100 #define MAX 65536 /p中为有序关键字k1到k5的搜索概率,k1k2k3k4k5 double pMAXNUM = 0.00,0.15,0.10,0.05,0.10,0.20; double qMAXNUM = 0.05,0.10,0.05,0.05,0.05,0.10; void optimal_bst(double eMAXNUM,int rootMAXNUM,double wMAXNUM,int n) int i =0,j=0; /针对左或右孩子为空树情况初始化 for(i = 1;i=n+1;i+) eii-1 = qi-1; wii-1 = qi-1; int l = 0; /计算顺序如下:根据计算式:ei,j = ei,r-1+er+1,j 首先计算节点个数为1的最优二叉树的代价e1,1,e2,2 接着计算节点个数为1的最优二叉树的代价e1,2,e2,3最后计算结点个数为n的最优二叉树的代价e1,n,利用之前保存的较少结点最优二叉树的结果。 for(l = 1;l=n;l+) for(i = 1;i=n-l+1;i+) j = i+l-1; eij = MAX; wij = wij-1 + pj+qj; for(int r = i;r=j;r+) double t = 0; t = eir-1+er+1j + wij; if(teij) eij= t; rootij = r; int main() double eMAXNUMMAXNUM; int rootMAXNUMMAXNUM; double wMAXNUMMAXNUM; optimal_bst(e,root,w,5); for(int i =1;i=6;i+) for(int j = 0;j=5;j+) cout eij ; cout endl; 5测试分析在二叉树中T内搜索一次的期望代价为:(depth(ki)+1)*pi /对每个i=1n,搜索成功情况+(depth(di)+1)*qi /对每个i=0n,搜索失败情况i,j= q(i-1) /如果j=i-1min(ei,r-1 + er+1,j+wi,j),如果i=j,其中i=r=jwi,j = q(i-1) 如果j=i-1 wi,j=wi,j-1+pj+qj 如果i=j结 论 最优二叉搜索树是整个搜索成本最低的二叉搜索树。具体来说就是:给定键值序列 K = ,k1 k2 kn,其中键值ki,被搜索的概率为pi,要求以这些键值构建一颗二叉搜索树T,使得搜索的期望成本最低(搜索成本为检查的节点数)。对于键值ki, 如果其在构造的二叉搜索树里的深度(离开树根的分支数)为depthT(ki),则搜索该键值的成本= depthT(ki) +1(需要加上深度为0的树根节点)。由于每个键值被搜索的概率分别为pi=1,2,3,n。本算法分析与设计课程设计是综合分析和理解动态规划算法,综合运用C、C+或JAVA等程序设计语言,设计的过程也是一个不断摸索的过程。只有对所作题目有了清楚的认识和理解,有了思想上的充分准备,才能在设计过程中“胸有成竹”。所以我们对题目进行了比较详尽的考虑。当实际操作过程中遇到这样那样的困难,就通过查看资料、上网等方式解决。通过这次课程设计,我们对动态规划算法有了更深的认识,同时也更加熟练了C、C+和JAVA程序设计语言的运用,是开发人员必不可少的有力工具。同时,我们学到了如何用算法的思想分析一个给定的问题,最终动手解决问题。在整个过程中,需要不断的调试,更改代码,当中,我们遇到了很多棘手问题。在不断思考、调试后,不仅锻炼了我的实际动手能力,更锻炼了我们发现问题、分析问题的能力。参考文献1孙雄勇. Visual C+ 6.0 实用教程. 北
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院深化作风整顿大行动实施方案
- 搪瓷制品的质量检测与控制措施考核试卷
- 小学跳蚤图书市场活动方案
- 海水养殖的智慧化管理系统考核试卷
- 石棉防护措施与个人防护装备考核试卷
- 电视设备智能林业监测技术考核试卷
- 竞品分析报告产品特色与差异化竞争考核试卷
- 服饰业电商模式与线上推广考核试卷
- 中国气动灌装阀行业市场现状分析及竞争格局与投资发展研究报告(2024-2030版)
- 中国杂志广告行业消费态势及营销趋势预测研究报告(2024-2030版)
- 2024年秋季新人教版九年级上册化学全册教案
- 2024秋八年级道德与法治上册 第四单元 维护国家利益 第十课 建设美好祖国 第1框 关心国家发展教学设计 新人教版
- 2024-2030年中国南美白对虾行业市场竞争格局及发展趋势与投资前景研究报告
- 公共租赁住房运行管理标准
- 重大事故隐患判定标准课件
- 2024年东南亚QCW准连续激光器市场深度研究及预测报告
- 统编版2024年新版七年级上册历史第二单元测试卷(含答案)
- 2023年12月人民日报社工作人员(74名)笔试近年2018-2023考点突破与答案详解研判
- 2023-2024学年浙江“七彩阳光”新高考研究联盟高一上学期期中联考生物试题(解析版)
- 机械设备维修保养合同范本2024年
- 2024年江苏省南京市国土资源信息中心招聘2人(高频重点提升专题训练)共500题附带答案详解
评论
0/150
提交评论