复习链接
计算机算法设计与分析第一章思维导图
计算机算法设计与分析第二章思维导图&&知识点总结
计算机算法设计与分析第三章思维导图&&知识点总结
计算机算法设计与分析第四章思维导图&&知识点总结
计算机算法设计与分析第五章思维导图&&知识点总结 ( 初稿 )
计算机算法设计与分析第六章思维导图&&知识点总结 ( 初稿 )
计算机算法设计与分析第七章思维导图&&知识点总结 ( 初稿 )
思维导图

注:导图中的主定理模糊不清,可移步本文最下方观看清楚版。
递归的概念
直接或间接地调用自身的算法成为递归算法。
用函数自身给出定义的函数成为递归函数
递归实例
阶乘函数
Fibonacci数列
Ackerman函数
排列问题
整数划分问题
汉诺塔问题
分治法的基本思想
将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解决这些子问题,然后将各子问题合并得到原问题的解。
分治法特征:
- 该问题的规模缩小到一定的程度就可以容易地解决
- 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。
- 利用该问题分解出的子问题的解可以合并为该问题的解;
- 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
分治范例
二分搜索技术
基本思想:
将n个元素分成个数大致相同的两半,取a[n/2]与x作比较。如果x=a[n/2],则找到x,算法终止;如果x<a[n/2],则只在数组a的左半部继续搜索x;如果x>a[n/2],则只在数组a的右半部继续搜索x。
二分搜索技术充分利用了元素间的次序关系,采用分治策略,可最坏用 O ( l o g n ) O(logn) O(logn)时间完成搜索任务。
大整数的乘法
基本思想:
将n位的X,Y各自都分成2段,每段长n/2位(假设n为2的幂次),即 X = A ∗ 1 0 n / 2 + B X=A*10^{n/2}+B X=A∗10n/2+B, Y = C ∗ 1 0 n / 2 + D Y=C*10^{n/2}+D Y=C∗10n/2+D,则 X Y = A C ∗ 1 0 n + 1 0 n / 2 ∗ ( ( A − B ) ∗ ( D − C ) + A C + B D ) + B D XY=AC*10^n+10^{n/2}*((A-B)*(D-C)+AC+BD)+BD XY=A

本文详细解读计算机算法设计与分析中的递归概念,涵盖阶乘、Fibonacci数列、分治法(如二分搜索、矩阵乘法、棋盘覆盖、排序算法等)及其实例。深入探讨分治法的特征和应用范例,如快速排序、选择问题、最接近点对问题等,并剖析基于分治的算法复杂度分析。
最低0.47元/天 解锁文章
2397





