安徽理工大学:《算法设计与分析 Algorithm Design and Analysis》课程教学资源(PPT课件讲稿)第3章 分治法——“分”而治之

第4章分治法 “分”而治之
第4章 分治法 —— “分”而治之

主要内容 1.一般方法 2.二分检索 3.找最大和最小元素 4.归并分类 5.快速分类 6.选择问题 7.斯特拉森矩阵乘法
主要内容 1. 一般方法 2. 二分检索 3. 找最大和最小元素 4. 归并分类 5. 快速分类 6. 选择问题 7. 斯特拉森矩阵乘法

3.1一般方法 ·对大规模问题的求解 。利用分治法求解大规模问题 1.基本思想 分而治之方法与软件设计的模块化方法非常相似。 为解决一个大问题,可以()把它分解成两个或多个 更小的问题;(2)分别解决每个小问题;(3)把各 小问题的解答组合起来,即可得到原问题的解。 小问题通常与原问题相似或同质,因而可以递归地 使用分而治之策略解决
❖ 对大规模问题的求解 ❖ 利用分治法求解大规模问题 1.基本思想 分而治之方法与软件设计的模块化方法非常相似。 为解决一个大问题,可以(1)把它分解成两个或多个 更小的问题;(2)分别解决每个小问题;(3)把各 小问题的解答组合起来,即可得到原问题的解。 小问题通常与原问题相似或同质 ,因而可以递归地 使用分而治之策略解决。 3.1 一般方法

逐步细化的过程 子问题 子问题求解 ql al 问题 子结果 Q q2 a2 A 分解 合并 qk ak 通常,子问题与原始问题“同质
Q q2 qk q1 子问题 ... a2 ak a1 子问题求解 ... 问题 A 子结果 分解 合并 逐步细化的过程 通常,子问题与原始问题“同质

例1[找伪币]假设16枚金币中有一枚是伪造的,真假金 币的区别仅是重量不同,利用一个没有砝码的天平作工具, 找出这枚伪造的金币。 例2[金块问题]有一个老板有一袋金块。每个月将有两 名雇员会因其优异的表现分别被奖励一个金块。按规矩 排第一的雇员将得到袋中最重的金块,排名第二的雇员 将得到袋中最轻的金块。根据这种方式,除非有新金块 快加入袋中,否则第一名雇员所得到的金块总是比第二 名雇员所得到的金块重,如果有新的金块周期性的加入 袋中,则每个月都必须找出最重和最轻的金块。假设有 台比较重量的仪器,希望用最少的比较次数找出最重 和最轻的金块。 问题的分解策略有多种
例1 [找伪币] 假设16 枚金币中有一枚是伪造的,真假金 币的区别仅是重量不同,利用一个没有砝码的天平作工具, 找出这枚伪造的金币。 例2 [金块问题]有一个老板有一袋金块。每个月将有两 名雇员会因其优异的表现分别被奖励一个金块。按规矩, 排第一的雇员将得到袋中最重的金块,排名第二的雇员 将得到袋中最轻的金块。根据这种方式,除非有新金块 快加入袋中,否则第一名雇员所得到的金块总是比第二 名雇员所得到的金块重,如果有新的金块周期性的加入 袋中,则每个月都必须找出最重和最轻的金块。假设有 一台比较重量的仪器,希望用最少的比较次数找出最重 和最轻的金块。 问题的分解策略有多种

例3[矩阵乘法]两个nXn阶的矩阵A与B的乘积是另 一个n×n阶矩阵C,C的元素可表示为: C(,j)=∑A(,k)*B(k,),1≤i≤n,1≤j≤n k=1 其时间复杂度为O)。可以采用矩阵分块 乘法降低时间复杂度。 先将A、B分别分割为4个nl2×n/2的矩阵, 然后组合。 分治法自然导致了递归算法的使用。在许多例子 里,这些递归算法在递归程序中得到了很好的运用
例3 [矩阵乘法]两个n×n阶的矩阵A与B的乘积是另 一个n×n阶矩阵C,C的元素可表示为: C i j A i k B k j i n j n n k = = ( , ) ( , ) * ( , ) ,1 ,1 1 其时间复杂度为O(n3 )。可以采用矩阵分块 乘法降低时间复杂度。 先将A、B分别分割为4个n/2×n/2的矩阵, 然后组合。 分治法自然导致了递归算法的使用。在许多例子 里,这些递归算法在递归程序中得到了很好的运用

2. 分治策略的抽象化控制 算法3.1分治策略的抽象化控制注: procedure DANDC(p,q) k=2:二分是最常用的分解策略; globaln,A(1:n); SMALL(P,q):布尔函数,判断输入 integer m,p,q;ll1≤p≤q≤nll 规模q-p+1是否足够小而无需再进 if SMALL(p,q) 步分就可求解; then return(G(p,q)) G(p,q):对输入规模为q-p+1的子问 题求解(SMALL(p,q)为真时); else m←-DIVIDE(p,q)lp≤m<gll DIVIDE(p.q):对输入规模为q-p+1 return(COMBINE(DANDC(p,m), 的子问题进一步分解,返回值为P,q] 区间进一步的分割点(SALL(P,q) DANDC(m+1,q))) 为假时; endif COMBINE(xy):子结果的合并函数, end DANDC 将区间[p,m]和[m+1,q]上的子问题 的解合并成上级区间[p,q上的“较 完整”的解。当p=1,qn时,就得到 整个问题的解
算法3.1 分治策略的抽象化控制 procedure DANDC(p,q) global n,A(1:n); integer m,p,q; //1≤p≤q≤n// if SMALL(p,q) then return(G(p,q)) else m←DIVIDE(p,q) //p≤m<q// return(COMBINE(DANDC(p,m), DANDC(m+1,q))) endif end DANDC 注: ➢ k=2: 二分是最常用的分解策略; ➢ SMALL(p,q):布尔函数,判断输入 规模q-p+1是否足够小而无需再进一 步分就可求解; ➢ G(p,q):对输入规模为q-p+1的子问 题求解(SMALL(p,q)为真时); ➢ DIVIDE(p.q):对输入规模为q-p+1 的子问题进一步分解,返回值为[p,q] 区间进一步的分割点(SMALL(p,q) 为假时; ➢ COMBINE(x,y):子结果的合并函数, 将区间[p,m]和[m+1,q]上的子问题 的解合并成上级区间[p,q]上的“较 完整”的解。当p=1,q=n时,就得到 整个问题的解。 2. 分治策略的抽象化控制

DANDC的计算时间 若所分成的两个子问题的输入规模大致相等,则DANDC 总的计算时间可用递归关系式表示,如下: g(n) n足够小 T(n)= 2T(n/2)+fn)否则 注: T(n):表示输入规模为n的DANDC计算时间 g(n): 表示对足够小的输入规模直接求解的计算时间 f(n): 表示COMBINE对两个子区间的子结果进行合并 的时间 (该公式针对具体问题有各种不同的变形)
❖ DANDC的计算时间 若所分成的两个子问题的输入规模大致相等,则DANDC 总的计算时间可用递归关系式表示,如下: g(n) n足够小 T(n) = 2T(n/2) + f(n) 否则 注: ➢ T(n):表示输入规模为n的DANDC计算时间 ➢ g(n):表示对足够小的输入规模直接求解的计算时间 ➢ f(n):表示COMBINE对两个子区间的子结果进行合并 的时间 (该公式针对具体问题有各种不同的变形)

分治法的另一种模型表示 必 proc dividandconquer(n) if nno 其中,fn)是合并各部分解的时间,k,m均为常数
分治法的另一种模型表示 ❖ proc dividandconquer(n) ❖ if nn0 其中,f(n)是合并各部分解的时间,k,m均为常数

进一步思考 n0选择多大合适? 原问题应该分解成几个子问题? 大量实践得出子问题的规模大致相当分治的 效率较好。 。一般进行2分法
进一步思考 ❖ n0选择多大合适? ❖ 原问题应该分解成几个子问题? ❖ 大量实践得出子问题的规模大致相当分治的 效率较好。 ❖ 一般进行2分法
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 安徽理工大学:《算法设计与分析 Algorithm Design and Analysis》课程教学资源(PPT课件讲稿)第2章 递归算法设计与分析.ppt
- 安徽理工大学:《算法设计与分析 Algorithm Design and Analysis》课程教学资源(PPT课件讲稿)第1章 导引与基本数据结构论(任课老师:郭娟、方欢).ppt
- 软件设计师考试同步辅导(第4版)第2章 程序设计语言基础.pdf
- 《仿真与虚拟农业》课程教学资源(教学大纲).pdf
- 《3S技术导论》课程教学资源(讲义).pdf
- 《3S技术导论》课程教学资源(实验指导).pdf
- 天津农学院:《微机原理与汇编语言程序设计》课程教学资源(实验指导书).pdf
- 《仿真与虚拟农业》课程教学资源(实验指导).pdf
- 《农业信息技术概论》课程教学资源(教学大纲).pdf
- 香港中文大学:《Topics in Theoretical Computer Science》课程教学资源(PPT课件讲稿)Lecture 7 Stable matching.Gale-Shapley algorithm.pptx
- Minimal Cover-Automata for Finite Languages.pdf
- 香港中文大学:《CMSC5719 Seminar》课程教学资源(讲义)Lecture 12 Introduction to Computational Photography.ppt
- 香港中文大学:《CMSC5719 Seminar》课程教学资源(讲义)Lecture 10 An Introduction to Bioinformatics and its application in Protein-DNA/Protein Interactions Research and Drug Discovery.pptx
- 香港中文大学:《CMSC5719 Seminar》课程教学资源(讲义)Lecture 11 Design of Microfluidics-Based Biochips.pdf
- 香港中文大学:《CMSC5719 Seminar》课程教学资源(讲义)Lecture 07-2 Research and Applications of Virtual Medicine Part II Virtual Reality Based Surgical Simulations.pdf
- 香港中文大学:《CMSC5719 Seminar》课程教学资源(讲义)Lecture 07-1 Research and Applications of Virtual Medicine Part I Introduction to Medical Visualization.pdf
- 香港中文大学:《CMSC5719 Seminar》课程教学资源(讲义)Lecture 06 3D computer vision techniques.ppt
- 香港中文大学:《CMSC5719 Seminar》课程教学资源(讲义)Lecture 05 Fault-Tolerant Computing.ppt
- 香港中文大学:《CMSC5719 Seminar》课程教学资源(讲义)Lecture 04 CRYPTOGRAPHY.pptx
- 香港中文大学:《CMSC5719 Seminar》课程教学资源(讲义)Lecture 03 Controlling Salinity in a Potable Water Supply System Using a Constraint Programming Approach.pdf
- 安徽理工大学:《算法设计与分析 Algorithm Design and Analysis》课程教学资源(PPT课件讲稿)第4章 贪心方法.ppt
- 安徽理工大学:《算法设计与分析 Algorithm Design and Analysis》课程教学资源(PPT课件讲稿)第5章 动态规划.ppt
- 安徽理工大学:《算法设计与分析 Algorithm Design and Analysis》课程教学资源(PPT课件讲稿)第6章 代码最优化.ppt
- 安徽理工大学:《算法设计与分析 Algorithm Design and Analysis》课程教学资源(PPT课件讲稿)第6章 基本检索与周游方法.ppt
- 安徽理工大学:《算法设计与分析 Algorithm Design and Analysis》课程教学资源(PPT课件讲稿)动态规划求解(背包问题).ppt
- 安徽理工大学:《算法设计与分析 Algorithm Design and Analysis》课程教学资源(PPT课件讲稿)第7章 回溯法.ppt
- 安徽理工大学:《算法设计与分析 Algorithm Design and Analysis》课程教学资源(PPT课件讲稿)第8章 计算机算法基础(分支限界法).ppt
- Wireless Communication - Project Report 3 Project 12 – Wireless Mesh Network.pdf
- 山东大学:《医用计算机基础》课程电子教案(PPT课件)第一章 计算机的基本知识.ppt
- 山东大学:《医用计算机基础》课程电子教案(PPT课件)第四章 文字处理软件(Word).ppt
- 山东大学:《医用计算机基础》课程电子教案(PPT课件)第二章 DOS操作系统.ppt
- 山东大学:《医用计算机基础》课程电子教案(PPT课件)第三章 Windows操作系统.ppt
- 山东大学:《医用计算机基础》课程电子教案(PPT课件)第五章 Excel 2000中文版.ppt
- 山东大学:《医用计算机基础》课程电子教案(PPT课件)第七章 计算机网络的基本知识.ppt
- 山东大学:《医用计算机基础》课程电子教案(PPT课件)第六章 使用PowerPoint创建演示文稿.ppt
- 山东大学:《计算机医学实用技术》课程电子教案(教材讲义)第一部分 计算机硬件原理与组装(共六章).doc
- 山东大学:《计算机医学实用技术》课程电子教案(课件讲稿)第三部分 医学网站的建立与FRONTPAGE2002的使用(共四章,主讲:张玉华).ppt
- 山东大学:《计算机医学实用技术》课程电子教案(课件讲稿)第二部分 多媒体图像处理技术(共六章).ppt
- 山东大学:《计算机医学实用技术》课程电子教案(课件讲稿)第四部分 Excel实用技术基础.ppt
- 山东大学:《计算机医学实用技术》课程电子教案(教材讲义)第五部分 Access数据库基础(共六章).doc