- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DivideandConquer技术
3.1 Divide-and-Conquer原理 Divide-and-Conquer算法的设计 Divide-and-Conquer算法的分析 设计过程分为三个阶段 Divide: 整个问题划分为多个子问题 Conquer:求解各子问题(递归调用正设计的算法) Combine:合并子问题的解, 形成原始问题的解 Homework 云计算、Map-Reduce、Hadoop、Mahout 分析过程 建立递归方程 求解 递归方程的建立方法 设输入大小为n,T(n)为时间复杂性 当nc, T(n)=?(1) 总之 T(n)=?(1) if nc T(n)=aT(n/b)+D(n)+C(n) otherwise 求解递归方程T(n) 使用第二章的方法 建立递归方程 T(n)=?(1) if n=1 T(n)=3T(n/2)+O(n) if n1 使用Master定理 T(n)=O(nlog3)=O(n1.59) 利用排序的算法 算法 把Q中的点排序 通过排序集合的线性扫描找出最近点对 时间复杂性 T(n)=O(nlogn) Divide-and-conquer算法 Conquer: 1. 递归地在Q1和Q2中找出最接近点对 (p1, p2)和(q1, q2) 时间复杂性 Divide阶段需要O(n)时间 Conquer阶段需要2T(n/2)时间 Merge阶段需要O(n)时间 递归方程 T(n)= O(1) n = 2 T(n) = 2T(n/2) + O(n) n ? 3 用Master定理求解T(n) T(n) = O(nlogn) (pl, qr)的搜索方法: 如果(p, q)是最接近点对而且p?QL, q?QR, 则 dis(p, q)d,(p, q)只能在下图的区域D. 若p在分割线L上,包含(p, q)的区域D最大,嵌于d?2d的矩形(p-右邻域)中,如下图所示. 对于任意p, 我们只需在p-右邻域中点q, 最多6个. 算法 1. 把临界区中所有点集合投影到分割线L上; 2. 对于左临界区的每个点p, 考察p-右临界区的每个点 (这样的点共有6个) q,如果Dis(p, q)d, 则令 d=Dis(p, q); 3. 如果d发生过变化,与最后的d对应的点对即为 (pl, qr), 否则不存在(pl, qr). Merge: 1. 在临界区查找距离小于d的点对(pl, qr), pl?QL, qr?QR; 2. 如果找到,则(pl, qr)是Q中最接近点对,否则 (p1, p2)和(q1, q2) 中距离最小者为Q中最接近 点对. 关键是(pl , qr)的搜索方法及其搜索时间 L p d d d D L p d d d 2d D p-右邻域 只包含6个点 第三章 Divide-and-Conquer 技术 邹权(博士) 计算机科学系 3.1 Divide-and-Conquer原理 3.2 整数乘法 3.3 矩阵乘法 3.4 Finding the closest pair of points 提要 Divide-and-Conquer算法的设计 原始问题 求解子问题 子问题 子问题 子问题 … 求解子问题 求解子问题 子问题解 子问题解 子问题解 … 合并子解 问题分解 Divide Conquer Merge 原始问题的解 Divide-and-Conquer算法的分析 Divide阶段的时间复杂性 划分问题为a个子问题。 每个子问题大小为n/b。 划分时间可直接得到=D(n) Conquer阶段的时间复杂性 递归调用 Conquer时间= aT(n/b) Combine阶段的时间复杂性 时间可以直接得到=C(n) 例1. Merge-sort算法 T(n)=2T(n/2)+O(n) T(n)=O(nlogn) 例2. 求一个集合中的最大数算法 29,14,15,1,6,10,32,12 29,14,15,1 6,10,32,12 29,14 15,1 32,12 6,10 29 15 10 32 29 32 32 T(n)=2T(n/2)+1 T(n)=n-1 3.2 整数乘法 问题定义 输入:n位二进制整数X和Y 输出:X和Y的乘积 通常,计算X*Y时间复杂性位O(n2), 我们
您可能关注的文档
- 19世纪3060年代.ppt
- 19世纪初英法的经济学说.ppt
- 19世纪与历史语言学.ppt
- 19世纪的分析.ppt
- 19世纪初期文学ppt课件.ppt
- 19世纪初期.ppt
- 20世纪前期各节.ppt
- 20世纪英法德美和日本教育的发展.ppt
- 20世纪初的世界格局与一次世界大战共27张ppt.ppt
- 21基因控制生物的性状课件共58张PPT.ppt
- 三角函数在高中职业技能培训中的应用与实际案例分析教学研究课题报告[001].docx
- 初中地理课堂教学对学生地理知识的掌握研究教学研究课题报告.docx
- 高中地理学科中地图技能培养的策略与实践研究教学研究课题报告.docx
- 普通高中生涯规划指导的多元评价体系构建教学研究课题报告.docx
- 《基于区块链的供应链金融模式创新与金融风险防控》教学研究课题报告.docx
- 初中地理教学中实地考察对学生地理实践能力的培养探究教学研究课题报告.docx
- 小学信息技术教育中核心素养培养的课堂观察与教学效果分析教学研究课题报告.docx
- 家庭教育对学生数学学习的支持作用探讨教学研究课题报告.docx
- 基于音乐审美的初中合唱教学对学生个性发展的推动教学研究课题报告.docx
- 高中语文现代文阅读中批判性思维的培养策略教学研究课题报告.docx
文档评论(0)