《算法导论》学习笔记——求解时间复杂度
2017-02-15 20:32
330 查看
求解时间复杂度
主要有三种方法:代入法、递归树法、主方法
代入法:
根据解的形式进行猜测,然后证明。
例子:
T(n)=2T(n/2)+Θ(n)
猜测T(n)=Ο(nlgn)
T(n)=2T(n/2)+Θ(n)<2c(n/2)lg(n/2)+dn=cnlgn-cnlg2+dn
证明完毕,只要我们选择合适的c与合适的d使得dn-cnlg2<0即可。
递归树求解法:
画出递归树,并计算递归树的高度以及每一层递归树中的代价,再相加。
例子:
T(n)=2T(n/2)+Θ(n)
n变成1一共经历了log2n层。每一层的代价总和是cn,所以是nlgn。
主方法求解:
形如T(n)=aT(n/b)+f(n)的递归式一般可以使用主方法进行求解。
首先计算logba=k,计算nk
将nk与f(n)进行比较。较大的决定了递归式的解。
若f(n)较大,则T(n)=Θ(f(n))
若nk较大,则T(n)=Θ(nk)
若相同,则T(n)=Θ(f(n)lgn)
这里的较大较小指的是多项式意义上的大小。
f(x)多项式大于g(x):
存在实数e>0,使得f(x)>g(x)*n^e
f(x)多项式小于g(x):
存在实数e>0,使得f(x)
主要有三种方法:代入法、递归树法、主方法
代入法:
根据解的形式进行猜测,然后证明。
例子:
T(n)=2T(n/2)+Θ(n)
猜测T(n)=Ο(nlgn)
T(n)=2T(n/2)+Θ(n)<2c(n/2)lg(n/2)+dn=cnlgn-cnlg2+dn
证明完毕,只要我们选择合适的c与合适的d使得dn-cnlg2<0即可。
递归树求解法:
画出递归树,并计算递归树的高度以及每一层递归树中的代价,再相加。
例子:
T(n)=2T(n/2)+Θ(n)
n变成1一共经历了log2n层。每一层的代价总和是cn,所以是nlgn。
主方法求解:
形如T(n)=aT(n/b)+f(n)的递归式一般可以使用主方法进行求解。
首先计算logba=k,计算nk
将nk与f(n)进行比较。较大的决定了递归式的解。
若f(n)较大,则T(n)=Θ(f(n))
若nk较大,则T(n)=Θ(nk)
若相同,则T(n)=Θ(f(n)lgn)
这里的较大较小指的是多项式意义上的大小。
f(x)多项式大于g(x):
存在实数e>0,使得f(x)>g(x)*n^e
f(x)多项式小于g(x):
存在实数e>0,使得f(x)
相关文章推荐
- 算法导论中求解时间复杂度的三种方法
- 具有特殊局部性质的一个3SAT问题实例的线性时间复杂度的分治求解
- 算法导论-16.2-6 在O(n)时间内求解分数背包问题
- 求解递归式,计算时间复杂度
- 算法导论标准版快速排序和线性时间求解数组第K小数
- 最长公共子序列求解和优化等问题(未完善时间复杂度的优化)
- 算法导论-计算时间复杂度主定理
- 求解算法的时间复杂度
- 算法导论12.2-7 证明使用后继函数进行中序遍历的时间复杂度为Θ(n)
- 时间复杂度推导证明--《算法导论》15.1-1题
- 算法导论-计算时间复杂度主定理
- 【求解算法的时间复杂度的具体步骤】
- 算法导论------递归算法的时间复杂度求解
- 递归树求解递归算法的时间复杂度
- 递归树求解递归算法的时间复杂度
- 算法的时间复杂度和空间复杂度的求解方法
- 递归树求解递归算法的时间复杂度
- 递归树求解时间复杂度
- 《算法导论》学习笔记之Chapter8线性时间排序
- 递归树求解递归算法的时间复杂度