递归式的渐进界求解——《算法导论》
2017-04-10 19:22
211 查看
递归式就是一个等式或者不等式,它通过更小的输入上的函数值来描述一个函数。
那么如何求得递归算法的“O”和”Θ”渐进界呢?如果我们能够求解出递归式的”O”和”Θ”渐进界,我们就可以分析哪些问题使用递归算法是否合理。
2.递归树法 :将递归式转换为一棵树,其结点表示不同层次的递归调用产生的代价。然后采用边界和技术来求解递归式。
3.主方法 :可求解形如下面公式的递归式的界:
T( n ) = aT( a/b ) + f(n)
其中a>=1,b>1,f(n)是一个给定的函数。这种形式的递归式很常见,它刻画了这样的一个问题:生成a个子问题,每个子问题的规模是元问题规模的1/b,分解和合并步骤总共花费时间为f(n)。
1.猜测解的形式。
2.用数学归纳法求出解中的常数,并证明解释正确的。
当将归纳假设应用于较小的值时,我们将猜测的解带入函数,因此为”代入法“。这种方法使我们必须猜出解的形式。一般靠经验来猜。
一种方法是通过熟悉的递归式猜需要求解的递归式。
另外一种方法是先证明递归式较松的上界和下界,然后缩小不确定的范围。
描述的是这样的一种算法的运行时间:它将规模为n的问题分解为a个子问题,每个子问题规模为n/b,其中a和b都是正常数。a个子问题递归地进行求解,每个花费时间T(n/b)。函数f(n)包含了问题分解和子问题解合并的代价。
那么如何求得递归算法的“O”和”Θ”渐进界呢?如果我们能够求解出递归式的”O”和”Θ”渐进界,我们就可以分析哪些问题使用递归算法是否合理。
求解递归式的三种方法:
1.代入法 : 自己猜测一个界,然后用数学归纳法进行验证是否正确2.递归树法 :将递归式转换为一棵树,其结点表示不同层次的递归调用产生的代价。然后采用边界和技术来求解递归式。
3.主方法 :可求解形如下面公式的递归式的界:
T( n ) = aT( a/b ) + f(n)
其中a>=1,b>1,f(n)是一个给定的函数。这种形式的递归式很常见,它刻画了这样的一个问题:生成a个子问题,每个子问题的规模是元问题规模的1/b,分解和合并步骤总共花费时间为f(n)。
用代入法求解递归式
代入法求递归式分为两步:1.猜测解的形式。
2.用数学归纳法求出解中的常数,并证明解释正确的。
当将归纳假设应用于较小的值时,我们将猜测的解带入函数,因此为”代入法“。这种方法使我们必须猜出解的形式。一般靠经验来猜。
一种方法是通过熟悉的递归式猜需要求解的递归式。
另外一种方法是先证明递归式较松的上界和下界,然后缩小不确定的范围。
用递归树方法求解递归式
递归树中,每个结点表示一个单一子问题的代价,子问题对应某次递归函数调用。我们将树中每层中的代价求和,得到每层代价,然后将所有层的代价求和,得到所有层次的递归调用的总代价。用主方法求解递归式
主方法为如下形式的递归式提供一种“菜谱”式的求解方法:T( n ) = aT( a/b ) + f(n) , 其中a>=1,b>1,f(n)为渐进正函数。描述的是这样的一种算法的运行时间:它将规模为n的问题分解为a个子问题,每个子问题规模为n/b,其中a和b都是正常数。a个子问题递归地进行求解,每个花费时间T(n/b)。函数f(n)包含了问题分解和子问题解合并的代价。
相关文章推荐
- 算法导论笔记:04最大子数组矩阵乘法以及递归式求解
- 算法导论 第三章:渐进符与递归式的求解
- 算法导论笔记 - 主方法求解递归式
- CLRS 4.4用递归树方法求解递归式
- 第12周上机实践项目3——用递归方法求解(求1*3*...*n的递归式)
- 第十二周 项目三:用递归方法求解1*3*...*n的递归式
- [算法导论] 递归式求解的三种方法
- 算法导论-16.2-6 在O(n)时间内求解分数背包问题
- CLRS 4.5用主方法求解递归式
- 第四周项目五-用递归方法求解(求1*3*5*...*n的递归式)
- 算法导论-----数论-----求解模线性方程
- 单纯形算法求解线性规划问题(依据《算法导论》实现)
- 《算法导论》[第3章] 函数的增长-[3.1] 渐进记号
- 写出1*3*...*n的递归式,并编写出递归函数求解。
- 第十二周项目三 用递归方法求解(2)求1*3*...*n的递归式
- CLRS 4.3用代入法求解递归式
- 用主方法求解递归式
- 递归式求解的三种方法
- 算法导论标准版快速排序和线性时间求解数组第K小数
- 算法导论第16章 贪心算法-0-1背包问题—动态规划求解