算法导论 4.1-2

来源:互联网 发布:视频效果软件 编辑:程序博客网 时间:2024/05/22 02:15

问题

证明的解为O(nlgn)。证明这个递归的解也是Ω(nlgn)。得到的解为Θ(nlgn)

分析

证明:假设递归式的解为O(nlgn),则
所以
所以当c>=1时,T(n)<=cnlgn,即T(n)=O(nlgn)

假设递归式的解也是Ω(nlgn),则
所以存在n0和c,当n>=n0时,T(n)>=2c(n/2-1)lg(n/2-1)+n=c(n-2)lg(n-2)+(1-c)n+2c>=c(n-2)lg(n-2)+(1-c)n
上式不能证明递归式的解是Ω(nlgn),我们改变猜测,使递归式的解是 Ω(nlg(n+2))
这样可得T(n)>=cnlg(n+2)-2clg(n+2)-cn+2c+n>=cnlg(n+2)+(1-c)n-2clg(n+2)
因为lg(n+2)<=lg(n*n)=2lgn,所以T(n)>=cnlg(n+2)+(1-c)n-4clgn
因为多项式函数比指数函数增长的快,所以只要1-c>=0,那么必然存在n1,当n>=n1时, (1-c)n-4clgn>=0,即此种情况下T(n)=Ω(nlg(n+2))
又因为nlg(n+2) > nlgn,所以nlg(n+2)=Ω(nlgn)。由传递性的T(n)=Ω(nlgn)
T(n)=O(nlgn)和T(n)=Ω(nlgn),可得T(n)=Θ(nlgn)
原创粉丝点击