- 1、本文档共82页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 分治策略 第2章 分治策略 解决问题: 方法1、两两比较(最坏情况比8次) 方法2、硬币分成两组,一次比较两组。一次比较后,可以舍弃完全是真币的那一组,只对另一组进行下一步的比较。(3次)) 关键:将大问题分割成若干小问题,小问题与原有问题是完全类似的。 2.1 分治法的基本思想 分治法的基本思想 大问题分解为子问题,这些子问题互相独立且与原问题相同。 分别求解子问题。如果子问题的规模仍然不够小,则再划分为k个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止。 合并解,自底向上逐步求出原来问题的解。 分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。 2.1 分治法的基本思想 分治法的适用条件 分治法所能解决的问题一般具有以下几个特征: 该问题的规模缩小到一定的程度就可以容易地解决; 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质(当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质。 ) 利用该问题分解出的子问题的解可以合并为该问题的解; 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。 如果各子问题是不独立的,则分治法要做许多不必要的工作,重复地解公共的子问题,此时虽然也可用分治法,但一般用动态规划较好。 2.1 分治法的基本思想 分治法的基本步骤 divide-and-conquer(P) { if ( | P | = n0) adhoc(P); //解决小规模的问题 divide P into smaller subinstances P1,P2,...,Pk;//分解问题 for (i=1,i=k,i++) yi=divide-and-conquer(Pi); //递归的解各子问题 return merge(y1,...,yk); //将各子问题的解合并为原问题的解 } 2.1 分治法的基本思想 2.1 分治法的基本思想 分治法的复杂性分析 分治法将规模为n的问题分成k个规模为n/m的子问题去解。设分解阀值n0=1,且adhoc解规模为1的问题耗费1个单位时间。再设将原问题分解为k个子问题以及用merge将k个子问题的解合并为原问题的解需用f(n)个单位时间。用T(n)表示该分治法解规模为|P|=n的问题所需的计算时间,则有(右上)。 通过迭代法求得方程解(右下) 。 补充:递归方程求解 常用方法: 代入法 迭代法 套用公式法 差分方程法 母函数法 补充:递归方程求解 1、代入法 先推测递归方程的显式解,然后用数学归纳法证明这一推测的正确性。那么,显式解的渐近阶即为所求。 例如: 补充:递归方程求解 2、迭代法 通过反复迭代,将递归方程的右端变换成一个级数,然后求级数的和,再估计和的渐近阶 。另外可画递归树。 补充:递归方程求解 递归树 T(n)= T(n/3)+ T(2n/3)+n 当我们累计递归树各层的值时,得到每一层的和都等于n,从根到叶的最长路径是 补充:递归方程求解 3、套用公式法 对于形如 T(n)=aT(n/b)+f(n) 的递归方程,给出三种情况下方程解的渐近阶的三个相应估计公式供套用。 补充:递归方程求解 3、套用公式法 2.2 二分搜索技术 给定已按升序排好序的n个元素a[1:n],现要在这n个元素中找出一特定元素x。 适用分治法求解问题的基本特征: 该问题的规模缩小到一定的程度就可以容易地解决; 该问题可以分解为若干个规模较小的相同问题; 分解出的子问题的解可以合并为原问题的解; 分解出的各个子问题是相互独立的。 很显然此问题分解出的子问题相互独立,即在a[i]的前面或后面查找x是独立的子问题,因此满足分治法的第四个适用条件。 2.2 二分搜索技术 2.2 二分搜索技术 二分搜索算法: public static int binarySearch(int [] a, int x, int n) {// 在 a[0] = a[1] = ... = a[n-1] 中搜索 x // 找到x时返回其在数组中的位置,否则返回-1 int left = 0; int right = n - 1; while (left = right) { int mid = (left + right)/2; // mid = low + ((high - low) / 2); if (x == a[mid]) return mid; if (x a[mid]) left = mid + 1; else right = mid - 1; } return -1; // 未找到x } 2.2 二分搜索技术 //初始 left
您可能关注的文档
- 第四章 算法策略1.ppt
- 第四章数据结构串.ppt
- 第五章 、电气设备安装工程工程量清单项目设置及计价.ppt
- 第五章 工程量清单编制.ppt
- 第五章 信息安全原理与技术ch05-Hash函数和数字签名.ppt
- 第五章第一节 工程量清单概述.ppt
- 第五章数组广义表.ppt
- 第五章网络支付.ppt
- 第一讲 地理信息系统概论.ppt
- 第一章 oracle的体系结构.ppt
- 2026版创新设计高考总复习地理中图版教师用-第58课时 交通运输与区域社会经济发展.docx
- 2026版创新设计高考总复习地理中图版教师用-第71课时 南水北调对区域发展的影响.docx
- 2026版创新设计高考总复习地理中图版教师用-第81课时 环境保护与国家安全.docx
- 2026版创新设计高考总复习地理中图版教师用-第77课时 海洋空间资源与国家安全.docx
- 2026版创新设计高考总复习地理中图版教师用-第72课时 黄河流域内部协作.docx
- 教育硕士考前冲刺练习含答案详解【达标题】.docx
- 教育硕士经典例题附答案详解【考试直接用】.docx
- 教育硕士综合提升测试卷附参考答案详解(完整版).docx
- 教育硕士题库附参考答案详解【黄金题型】.docx
- 教育硕士预测复习最新附答案详解.docx
最近下载
- 《质量评估流程》课件.ppt VIP
- 17J008 挡土墙(重力式、衡重式、悬臂式)(最新).pdf VIP
- 2024年数智工程师职业鉴定考试复习题库(含答案).docx VIP
- (完整版)建筑施工技术交底范本(大全) .pdf VIP
- 水运工程大体积混凝土温度裂缝控制技术规范_JTS-T 202-1-2022.pdf
- 设备供货、安装、调试、验收方案.docx VIP
- 《水利水电工程施工图审查技术导则》.pdf VIP
- 《木材学》——李坚 木材学笔记(完整).doc VIP
- 《公路水泥混凝土路面施工技术规范》_(JTGF30-2015).pdf VIP
- 小学生数学学习自查习惯现状调查报告.pdf VIP
文档评论(0)