第8章-缩小规模策略.pptx
《第8章-缩小规模策略.pptx》由会员分享,可在线阅读,更多相关《第8章-缩小规模策略.pptx(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 1第第八八章章 缩小规模策略缩小规模策略小规模问题的解经过某种组合可以较容易地得到原问题的解。解决这类问题的求解方法有:分治与递归、动态规划和贪心算法,这章将介绍分治与递归。p分治与递归策略p递归的典型应用p分治策略的应用2 2缩小规模策略将一个难以直接解决的大问题,分解成多个规模较小的子问题,以便各个击破、分而治之。分治法:如果原问题可以分割为k个子问题,1kn,且这k个子问题都可解,并可利用子问题的解计算出原问题的解,则可以采用分治法。递归:分治法产生的子问题往往是原问题的较小模式,常使用递归技术。3 3一个直接或间接调用自身的算法称为递归算法。递归策略u 定义u 特点n需少量的程序就
2、可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。n用有限的语句来定义对象的无限集合。u 使用条件n 原问题可以通过转化为较小的子问题来解决,而子问题的求解方法与原问题相同,被处理的数据有规律地减少。n 当子问题减小至一定程度时,调用自身算法的过程终止。递归需要有边界条件、递归推进部分和递归返回4 4递归策略u 整数划分问题将一个正整数n表示为一系列正整数之和: n=n1+n2+nk,其中,n1n2nk1,k1。该表示称为n的一个划分;不同划分的个数称为划分数,记为p(n)。【例1】整数6的11种划分。6;5+1;4+2,4+1+1;3+3,3+2+1,3+1+1+1;2+2+2
3、, 2+2+1+1, 2+1+1+1+1;1+1+1+1+1+1;5 5递归策略n分析在正整数n的所有不同划分中,将最大加数n1不大于m的划分个数记为q(n,m),则可以建立如下的递归关系:(1) q(n,1) = 1,n1当最大加数n1不大于1时,只有一种划分形式:n=1+1+1(2) q(n,m) = q(n,n),mn最大加数n1不能大于n,因此q(1,m) = 1(3) q( n, n ) = 1 + q ( n, n-1)正整数n的划分,由n1=n的划分和n1n-1的划分组成(4) q(n, m ) = q(n, m-1) + q (n-m, m), nm1正整数n的最大加数n1不大
4、于m的划分,由n1=m的划分和n1m-1的划分组成6 6递归策略1mn m)m,q(n) 1mq(n,mn ) 1nq(n,1mn n)q(n,1m1,n 1m)q(n, n计算q(n, m)的递归计算式7 7分治策略u基本思想将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同。递归求解这些子问题,并将子问题的解合并,则得到原问题解。u分治法求解问题的特征n(1) 问题的规模缩小到一定的程度就可容易解决n(2) 问题可分解为若干个规模较小的相同问题n(3) 利用原问题分解出的子问题的解可合并为原问题的解n(4) 问题所分解出的各个子问题是相互独立的,即子问题之间不
5、包含公共的子问题8 8分治策略u分治法的一般步骤n分解 将要解决的问题划分成若干规模较小的同类问题n求解 当子问题划分得足够小时,用较简单的方法解决n合并 按原问题要求,将子问题的解逐层合并构成原问题解DataType Divide-and-Conquer (P) if ( |P| = n0 ) Adhoc( P ); divide P into smaller subinstances; P1, P2, , Pk; for ( i=1; i0) hanoi(n - 1, from, to, tmp); /将将from杆上的杆上的n-1块金片移至块金片移至tmp杆杆 printf(take %
6、d块金片 from %c to %cn,n ,from,to); /将将from上的一块金片移至上的一块金片移至yo杆杆 hanoi(n - 1, tmp, from, to); /将将tmp杆上的杆上的n-1块金片移至块金片移至to杆上杆上 /Hanoi1313递归算法的典型应用u全排列问题n问题描述R=r1,r2,rn是要进行排列的n个元素,Ri=Rri。集合X中元素的全排列记为Perm(X);(ri)Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列。R的全排列可递归定义为:(1) 当n=1时,Perm(R)=(r1),r1是集合R中的唯一元素。(2) 当n1时
7、,Perm(R)由(r1)Perm(R1),(r2)Perm(R2),(rn)Perm(Rn)构成。1414递归算法的典型应用【例2】集合1,2,3的全排列。1515递归算法的典型应用n递归算法void Swap(int &a, int &b) int t = a; a = b; b = t; /Swapvoid Perm(int R, int k, int m ) /产生集合产生集合Rk:m的全的全排列排列 if (k=m) /Rk:m具有一个排列,将其输出具有一个排列,将其输出 for (int i=0; i=k; i+) printf(%d ,Ri); printf(n); else /
8、R k:m具有多个排列并递归生成具有多个排列并递归生成 for (int i = k; ihigh时,查找失败 将k与mid指向的记录比较若k=rmid.key,则若krmid.key,则1818分治策略的应用n查找过程找211 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92highlowmid1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92lowhighmid查找成功1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 缩小 规模 策略
限制150内