- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
减治法
第五章 减 治 法 减治法的设计思想 查找问题中的减治法 排序问题中的减治法 * * 算法与算法复杂性 王 涛 长春工业大学 计算机科学与工程学院 wangtao690103@163.com 减治是基于变换的思想。 分两个阶段工作,即“变”阶段和“治”阶段. 变治法的三种类型: 1)实例化简(instance simplification) 2)改变表现(representation change) 3)问题化简(problem reduction) problem’s instance simpler instance or Another representation or another problem’s instance solution 图5.1 减治法的典型情况(减半技术) 子问题 的规模是n/2 子问题的解 原问题的解 原问题 的规模是n (1)原问题的解只存在于其中一个较小规模的子问题中; (2)原问题的解与其中一个较小规模的解之间存在某种对应关系。 对于给定的整数a和非负整数n,计算an的值。 利用减治法,如果n=1,可以简单地返回a的值,如果n是偶数并且n1,可以把该问题的规模减半,即计算an/2的值,而且规模为n的解an和规模减半的解an/2之间具有明显的对应关系:an=(an/2)2,如果n是奇数并且n1,可以先用偶指数的规则计算a(n-1),再把结果乘以a。所以,应用减治技术得到如下计算方法: 利用分治法,如果n=1,可以简单地返回a的值,如果n1,可以把该问题分解为两个子问题:计算前 个a的乘积和后 个 a的乘积,再把这两个乘积相乘得到原问题的解。所以,应用分治技术得到如下计算方法: 分治法是对分解的子问题分别求解,需要对子问题的解进行合并,而减治法只对一个子问题求解,并且不需要进行解的合并。应用减治法(例如减半法)得到的算法通常具有如下递推式: 分治法和减治法区别 折半查找 二叉查找树 折半查找 在有序表{ 7, 14, 18, 21, 23, 29, 31, 35, 38, 42, 46, 49, 52 }中查找值为14的记录的过程如图所示。 0 1 2 3 4 5 6 7 8 9 10 11 12 13 图 折半查找成功情况下的查找过程 high=13 设置初始区间 mid=7 high=6 low=1 查找区间为[1, 13] 取中点mid=7 比较r[7]与k,将查找调整到左半区 mid=2 mid=3 low=1 high=2 查找区间为[1, 6] 取中点mid=3 比较 r[3]与k,将查找调整到左半区 mid=1 low=high=2 查找区间为[1, 2] 取中点mid=1 比较r[1]与k,将查找调整到右半区 查找区间为[2, 2] 取中点mid=2 比较r[2]与k,查找成功,返回mid的位置2 low=1 7 14 18 21 23 29 31 35 38 42 46 49 52 折半查找 1. low=1;high=n; //设置初始查找区间 2. 测试查找区间[low,high]是否存在,若不存在,则查找失败;否则 3. 取中间点mid=(low+high)/2; 比较k与r[mid],有以下三种情况: 3.1 若kr[mid],则high=mid-1;查找在左半区进行,转2; 3.2 若kr[mid],则low=mid+1;查找在右半区进行,转2; 3.3 若k=r[mid],则查找成功,返回记录在表中位置mid; 二叉查找树 在二叉查找树中查找关键字值为35,95的过程: 50 30 20 80 90 85 88 40 35 32 50 30 20 80 90 85 88 40 35 32 二叉排序树的查找 BiNode * SearchBST(BiNode *root, int k) { if (root= =NULL) return NULL; else if (root-data==k) return root; else if (kroot-data) return Se
您可能关注的文档
- 80868088d指令.doc
- 汇编指令精华.doc
- 大学英语IV第3次作业.doc
- 8086、指令.doc
- 802.11 bg RADIO 基础介绍.ppt
- 8088指令.doc
- HK990两线制轴振动变送器.doc
- 社会政治与经济类英语词汇6.doc
- 节纸故事.doc
- 8086指令.doc
- 半导体材料性能提升技术突破与应用案例分析报告.docx
- 半导体设备国产化政策支持下的关键技术突破与应用前景报告.docx
- 剧本杀市场2025年区域扩张策略研究报告.docx
- 剧本杀行业2025人才培训体系构建中的市场需求与供给分析.docx
- 剧本杀行业2025年人才培训行业人才培养模式创新与探索.docx
- 剧本杀行业2025年内容创作人才需求报告.docx
- 剧本杀行业2025年区域市场区域剧本市场消费者满意度与市场竞争力研究报告.docx
- 剧本杀市场2025年区域竞争态势下的区域合作策略分析报告.docx
- 剧本杀行业2025人才培训与行业人才培养模式创新.docx
- 剧本杀行业剧本创作人才心理素质培养报告.docx
文档评论(0)