您的位置:首页 > 其它

《算法导论》学习笔记——求解时间复杂度

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: