- 0
- 0
- 约6.79千字
- 约 38页
- 2019-02-15 发布于天津
- 举报
递归与分治策略课件
第2章 递归与分治策略 学习要点: 理解递归的概念。 掌握设计有效算法的分治策略。 通过下面的范例学习分治策略设计技巧。 (1)二分搜索技术; (2)大整数乘法; (3)棋盘覆盖; (4)线性时间选择; 算法总体思想 将要求解的较大规模的问题分割成k个更小规模的子问题。 2.1 递归的概念 直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数。 由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。在这种情况下,反复应用分治手段,可以使子问题与原问题类型一致而其规模却不断缩小,最终使子问题缩小到很容易直接求出其解。这自然导致递归过程的产生。 分治与递归像一对孪生兄弟,经常同时应用在算法设计之中,并由此产生许多高效算法。 2.1 递归的概念 算法如下: int factorial(int n) { if(n==0) return 1; return n*factorial(n-1); } 例3 Ackerman函数 A(n,m)的自变量m的每一个值都定义了一个单变量函数: M=0时,A(n,0)=n+2 M=1时,A(n,1)=A(A(n-1,1),0)=A(n-1,1)+2,和A(1,1)=2故A(n,1)=2*n M=2时,A(n,2)=A(A(n-1,2),1)=2A(n-1,2),和A(1,2)=A(A(0,2),1)=A(1,1)=2,故A(n,2)= 2^n 。 M=3时,类似的可以推出 M=4时,A(n,4)的增长速度非常快,以至于没有适当的数学式子来表示这一函数。 void Perm (Type list[], int k, int m) { if (k==m) { for ( int i=0; i=m; i++) coutlist[i]; cout endl; } else for ( int i=k; i=m; i++) { Swap ( list[k], list[i]); Perm(list,k+1,m); Swap ( list[k], list[i]); } } Int q(int n,int m) { if((n1)||(m1)) return 0; if((n==1)||(m==1)) return 1; if((nm) return q(n, n); if((n==m) return q(n, m-1)+1; return q(n, m-1)+ q(n-m, m); } 分治法的适用条件 分治法所能解决的问题一般具有以下几个特征: 该问题的规模缩小到一定的程度就可以容易地解决; 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质 利用该问题分解出的子问题的解可以合并为该问题的解; 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。 * * n T(n/2) T(n/2) T(n/2) T(n/2) T(n) = 对这k个子问题分别求解。如果子问题的规模仍然不够小,则再划分为k个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止。 算法总体思想 对这k个子问题分别求解。如果子问题的规模仍然不够小,则再划分为k个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止。 n T(n) = n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4) 将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解。 算法总体思想 将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解。 n T(n) = n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4) n/2 T(n/4) T(n/4) T(n/4) T(n/4
您可能关注的文档
最近下载
- PEP人教版小学英语六年级下册教案 全册.pdf VIP
- 卸扣、卡线器出厂检测报告+合格证(1).pdf VIP
- 既有办公建筑超低能耗改造设计的策略与实践.docx VIP
- 2025(川教版)《生命生态安全》四年级下册全册教学设计 .pdf VIP
- 《人工智能通识》课件全套 模块1--4 从初识到大模型工具应用---从风险防范到未来发展.pptx
- 2026年人教版八年级生物下册 期末学情评估卷(含答案).pdf VIP
- 新解读《GB_T 38214 - 2019中空玻璃惰性气体含量测试方法》最新解读.docx VIP
- 捣固车自动作业控制系统设计与实现.pptx VIP
- 北师大版小学六年级数学毕业试卷(附答案).pptx VIP
- (2024-2025)中考语文名著《海底两万里》真题练习(学生版+解析版).docx
原创力文档

文档评论(0)