算法导论:2 渐进符号、递归及解法

1 渐进符号

算法导论:2 渐进符号、递归及解法

1.1 算法导论:2 渐进符号、递归及解法符号

算法导论:2 渐进符号、递归及解法

存在常数算法导论:2 渐进符号、递归及解法算法导论:2 渐进符号、递归及解法,对所有的算法导论:2 渐进符号、递归及解法,满足算法导论:2 渐进符号、递归及解法 。算法导论:2 渐进符号、递归及解法的复杂度最多与算法导论:2 渐进符号、递归及解法一个数量级,即小于等于。

例:算法导论:2 渐进符号、递归及解法

算法导论:2 渐进符号、递归及解法


出现在公式中的集合符号(如算法导论:2 渐进符号、递归及解法)表示集合中的某一个函数,而不是集合整体。

例1:算法导论:2 渐进符号、递归及解法
直观理解:表示了一个误差界限,即算法导论:2 渐进符号、递归及解法主要是由算法导论:2 渐进符号、递归及解法构成的,但也有一些算法导论:2 渐进符号、递归及解法的低阶项
实际含义:存在一个函数算法导论:2 渐进符号、递归及解法,使得算法导论:2 渐进符号、递归及解法

例2:算法导论:2 渐进符号、递归及解法
直观理解:“=”应该理解成“是”,而不是“等于”。等号左边隐含任意量词,等号右边隐含存在量词,
实际含义:对于任意函数算法导论:2 渐进符号、递归及解法,总存在函数算法导论:2 渐进符号、递归及解法,使得算法导论:2 渐进符号、递归及解法
用途: 如果有很长的“等式链”,第一个就等于最后一个(只能从左到右,因为算法导论:2 渐进符号、递归及解法是非对称的)

 

1.2 算法导论:2 渐进符号、递归及解法 符号

  算法导论:2 渐进符号、递归及解法 

 存在常数算法导论:2 渐进符号、递归及解法算法导论:2 渐进符号、递归及解法,对所有的算法导论:2 渐进符号、递归及解法,满足算法导论:2 渐进符号、递归及解法成立。算法导论:2 渐进符号、递归及解法的复杂度最少与算法导论:2 渐进符号、递归及解法一个数量级,即大于等于。

算法导论:2 渐进符号、递归及解法

例:算法导论:2 渐进符号、递归及解法

 

1.3 算法导论:2 渐进符号、递归及解法符号

算法导论:2 渐进符号、递归及解法

算法导论:2 渐进符号、递归及解法,表示算法导论:2 渐进符号、递归及解法的复杂度既大于等于算法导论:2 渐进符号、递归及解法的复杂度,又小于等于算法导论:2 渐进符号、递归及解法的复杂度,即于算法导论:2 渐进符号、递归及解法的复杂度相当。

例:算法导论:2 渐进符号、递归及解法,     算法导论:2 渐进符号、递归及解法

 

1.4 算法导论:2 渐进符号、递归及解法算法导论:2 渐进符号、递归及解法符号

更“严格的”算法导论:2 渐进符号、递归及解法算法导论:2 渐进符号、递归及解法,不等式需要对所有的c成立,而不仅仅是一个特定的c

算法导论:2 渐进符号、递归及解法

类比

算法导论:2 渐进符号、递归及解法

 

2 求解递归的三种方法

2.1 代换法


第一步:猜答案Guess the form of the solution。代换法在大多数情况下是有效的,但是不幸的是第一步需是猜答案。你不需要完全猜出来,你可以不需要知道常数系数确切是多少,仅需要猜它的形式。

第二步:通过数学归纳法验证第一步才出来的form是否满足条件。

第三步:也是第二步的必然结果,如果猜对了那么很容易解出常数系数。

下图所示是如何利用代换法解一个递归式:

证明  算法导论:2 渐进符号、递归及解法

算法导论:2 渐进符号、递归及解法

那么,上图中证明了算法导论:2 渐进符号、递归及解法小于等于一个常数乘以算法导论:2 渐进符号、递归及解法。图中所解出的答案就是上界,不过不是严格的上界,事实上我们认为算法导论:2 渐进符号、递归及解法也成立。所以这并不能证明递归式的答案就是算法导论:2 渐进符号、递归及解法,这只是表示至多是算法导论:2 渐进符号、递归及解法

证明  算法导论:2 渐进符号、递归及解法

算法导论:2 渐进符号、递归及解法

改进归纳假设

考虑低阶项!!

算法导论:2 渐进符号、递归及解法

 

2.2 递归树法

将抽象递归表达式具体化的最佳图形表示就是递归树。该模型以输入规模为n开始,一层层地分解,直到输入规模变为1为止。而这个时候的解决方案已经是琐细的了。图3-5为表达式T(n) = T(n /4) + T(n / 2)+ n2 的递归树。

算法导论:2 渐进符号、递归及解法
 各棵树的叶子节点数不一样,因为递归速度不一样。如果按n的子节点为两个n/2,叶子节点数为n,该例子中n的节点为n/4和n/2, 叶子节点数肯定小于n。

算法导论:2 渐进符号、递归及解法
 

2.3 主定理法(Master Method) 

每个子问题的规模相同,a个相同的子问题。

算法导论:2 渐进符号、递归及解法     where   算法导论:2 渐进符号、递归及解法算法导论:2 渐进符号、递归及解法 是不参与递归的复杂度函数

判断算法导论:2 渐进符号、递归及解法算法导论:2 渐进符号、递归及解法的大小关系(算法导论:2 渐进符号、递归及解法是递归树叶子节点的数量):

  1. 若对某个常数算法导论:2 渐进符号、递归及解法, 有算法导论:2 渐进符号、递归及解法,  则算法导论:2 渐进符号、递归及解法
  2. 算法导论:2 渐进符号、递归及解法, 则算法导论:2 渐进符号、递归及解法
  3. 若对某个常数算法导论:2 渐进符号、递归及解法, 有算法导论:2 渐进符号、递归及解法,且对某个常数算法导论:2 渐进符号、递归及解法和所有足够大的算法导论:2 渐进符号、递归及解法算法导论:2 渐进符号、递归及解法,算法导论:2 渐进符号、递归及解法

分别举出了主定理方法的三个应用场景的例子以及一个主定理方法不适用的例子。

 

算法导论:2 渐进符号、递归及解法

 

证明主定理:

算法导论:2 渐进符号、递归及解法

树高度为算法导论:2 渐进符号、递归及解法

 叶子节点数算法导论:2 渐进符号、递归及解法

case 3 : 如果算法导论:2 渐进符号、递归及解法, 代价由上到下呈几何级数降低,最顶层的代价占主导地位,所以,算法导论:2 渐进符号、递归及解法

case1:   代价由上到下升高,最底层的代价占主导地位,所以,算法导论:2 渐进符号、递归及解法