- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析 计算机与信息学院 隶兔莫椽假破眨休子材漱肃第省覆稳猜彰罐曾午耙匝稍成溢灼缮睛辊连迎第4章 分治法第4章 分治法 使用教材 使用教材 作者:(美)Anany Levitin 译者:潘彦 出版社:清华大学 丛书名:国外经典教材· 计算机 科学与技术 循街成懒虱萨篆污脂躁迹淋托鞍愧能羊岁阀锣把绸秀恋稼战斧许蹄阎粮辙第4章 分治法第4章 分治法 第4章 分治法 概述:算法概要、算法效率 合并排序 快速排序 折半查找 大整数乘法 Strassen 矩阵乘法 三超笼刘识雾罩眩碴异炒梨掺餐铬硅巧鬼煽峡叮绳浸噎翌妮楷迫屏舱渣髓第4章 分治法第4章 分治法 概述 概述(算法概要、算法效率) 分治法是著名的通用算法设计技术,很多非常有效的算法实际上是这个 通用算法的特殊实现。基本思想符合人们在解决复杂问题时,常常将其 从大到小逐步分解,进而将较易求解的小问题解合并得到原问题的解。 这即是“分治法”的分而治之的思想。 算法概要 1. 分解原问题规模为较小的子问题,子问题最好有相同规模; 2. 求解子问题;( 1、 2 步“分解-求解”过程通常是递归的,直到子问题可简单求解为止) 3. 合并子问题的解,得到原问题的解(必要的话)。 原问题S 子问题S1 子问题S2 …… 子问题Sk S1的解 S2的解 …… Sk的解 问题S的解 注感舰跨坝搔迫咖谤瞧抠咎翼够旱莱倔翱厦像黎绅眯爷政劈炕九社梢汐藐第4章 分治法第4章 分治法 分治算法概要描述 分治算法概要描述: 集合的模 |s|:问题 s 的规模,即 s 集合的元素个数; 分解尺度 t : 可求解最小子问题的规模。(不需继续分解) 瞪提捆晦垫踪盅置蜘胶耸楔嫩耍突尘厚抬斜汪腆衍兼镰虾漆系瘁溶蛾抗振第4章 分治法第4章 分治法 分治法应用的一个简例 分治法应用的一个简例:—— 查找最大元素 已知 S 有 n 个元素,求 S 的最大元素。不妨设 的整数。 本问题可设计多种算法,这里用分治法求解:每次将 S 一分为二,直到 分解到仅有2个元素的求解子集为止;求解算法是返回两元素之较大者。 蔬惊霄脐剿旗炔伍吩顾膛钮韦卤胞氖贮周究襟剃嚼式踩移秋巴岛稻借僚夏第4章 分治法第4章 分治法 分治法应用简例的过程图解 分治法应用简例的过程图解 已知: S = { 30, 11, 42, 22, 1, 55, 21, 43 } 有 n = 23 个元素; 求: S 的最大元素。 斋演腑矿改网背克芝假距廖秀磨子量胞吭律镐颁溶偷锅挣衅膊昂寺行闪愚第4章 分治法第4章 分治法 分治法时间效率(例) 分治法时间效率 上例的时间效率:—— 查找最大值 输入规模:元素个数 n ; 基本操作:比较操作; 效率类别:无最佳、最差、平均效率之分; 建立递归算法的递推式并求解得到增长函数的增长率类型: 本例求解子集仅2个元素,需比较一次。下面用归纳法分析: ① n=2=21:T(n) = T(2) = 1。——比较一次 ② n=4=22:T(n) = 2T(4/2)+1。2T(4/2):求解子集个数为2,求解子集 规模 4/2。+1:两个子集解需合并一次即比较一次。 ③ n=8=23: T(n) = 2T(8/2)+1 = 2T(4) + 1。 ④ n=2k: T(n) = 2T(2k/2)+1= 2T(2k-1) + 1。 本例归纳结果: 涨炸叙仔沿寝搽钨轮川韦喉脂要肉侈宣丝化川院仆锹隔榷宝疙遇东瘁尊债第4章 分治法第4章 分治法 通用分治递推式及其效率 分治法运算时间的通用分治递推式: 一个规模 n 的问题,每次被分为 a 个子问题,每个子问题规模 n/b (上例:a = 2, b = 2)。为简化分析,假定 n 是 b 的乘方即 n = bk, k=1,2,3,..., 通用分治递推式如下: c:子集 (规模为 tr )求解时间 (常量);(时间:基本操作数) f (n):子集分解和子集解合并的时间。(本例比较1次即 f (n) = 1) 解递推式,得到时间效率(主定理):若: 则: 镍血瓷伎楼废藐官渣媚胜痢酬恫鄙尝角洲莫媳凿缺赡撩右微吭猛蔑熬含唬第4章 分治法第4章 分治法 合并排序 合并排序 (非降序) 把需要排序的元素集一分为二,对每个子集递归拆分,直到分解到仅有 一个元素为止。然后,两两组合为一个有序集。过程示例如下: 瞻定兄愁房蛮凉锯眷夹狮汝孕多惩噪磷固噶凭龙学吃狈驴痔须掘颇毒狼豌第4章
原创力文档


文档评论(0)