算法导论 — 思考题4-1 递归式例子

递归式例子)对下列每个递归式,给出T(n)T(n)T(n)的渐近上界和下界。假定n≤2n ≤ 2n2T(n)T(n)T(n)是常数。给出尽量紧确的界,并验证其正确性。
  a. T(n)=2T(n/2)+n4T(n)=2T(n/2)+n^4T(n)=2T(n/2)+n4
  b. T(n)=T(7n/10)+nT(n)=T(7n/10)+nT(n)=T(7n/10)+n
  c. T(n)=16T(n/4)+n2T(n)=16T(n/4)+n^2T(n)=16T(n/4)+n2
  d. T(n)=7T(n/3)+n2T(n)=7T(n/3)+n^2T(n)=7T(n/3)+n2
  e. T(n)=7T(n/2)+n2T(n)=7T(n/2)+n^2T(n)=7T(n/2)+n2
  f. T(n)=2T(n/4)+nT(n)=2T(n/4)+\sqrt{n}T(n)=2T(n/4)+n
  g. T(n)=T(n−2)+n2T(n)=T(n-2)+n^2T(n)=T(n2)+n2
  
  
  a.
  应用主定理,根据递归式有a=2,b=2,f(n)=n4a = 2, b = 2,f(n) = n^4a=2,b=2f(n)=n4,所以有nlogba=nlog22=nn^{{\rm log}_b a}=n^{{\rm log}_22}=nnlogba=nlog22=n。于是有f(n)=n4=Ω(n1+ε)=Ω(nlogba+ε)f(n)=n^4=Ω(n^{1+ε})=Ω(n^{{\rm log}_ba+ε})f(n)=n4=Ω(n1+ε)=Ω(nlogba+ε),其中ε=3ε = 3ε=3。并且当1/8≤c<11/8 ≤ c < 11/8c<1时,有af(n/b)=2f(n/2)=2•(n/2)4=n4/8≤cf(n)=cn4af(n/b) = 2f(n/2) = 2•(n/2)^4 = n^4/8 ≤ cf(n) = cn^4af(n/b)=2f(n/2)=2(n/2)4=n4/8cf(n)=cn4。因此,可以应用主定理情况3,于是T(n)=Θ(f(n))=Θ(n4)T(n) = Θ(f(n)) = Θ(n^4)T(n)=Θ(f(n))=Θ(n4)
  
  b.
  应用主定理,根据递归式有a=1,b=10/7,f(n)=na = 1, b = 10/7,f(n) = na=1,b=10/7f(n)=n,所以有nlogba=nlog10/71=n0=1n^{{\rm log}_ba}=n^{{\rm log}_{10/7}1}=n^0=1nlogba=nlog10/71=n0=1。于是有f(n)=n=Ω(n0+ε)=Ω(nlogba+ε)f(n)=n=Ω(n^{0+ε})=Ω(n^{{\rm log}_ba+ε})f(n)=n=Ω(n0+ε)=Ω(nlogba+ε),其中ε=1ε = 1ε=1。并且当7/10≤c<17/10 ≤ c < 17/10c<1时,有af(n/b)=f(7n/10)=7n/10≤cf(n)=cnaf(n/b) = f(7n/10) = 7n/10 ≤ cf(n) = cnaf(n/b)=f(7n/10)=7n/10cf(n)=cn。因此,可以应用主定理情况3,于是T(n)=Θ(f(n))=Θ(n)T(n) = Θ(f(n)) = Θ(n)T(n)=Θ(f(n))=Θ(n)
  
  c.
  应用主定理,根据递归式有a=16,b=4,f(n)=n2a = 16, b = 4,f(n) = n^2a=16,b=4f(n)=n2,所以有nlogba=nlog416=n2n^{{\rm log}_ba}=n^{{\rm log}_416}=n^2nlogba=nlog416=n2。于是有f(n)=n2=Θ(n2)=Θ(nlogba)f(n)=n^2=Θ(n^2 )=Θ(n^{{\rm log}_ba} )f(n)=n2=Θ(n2)=Θ(nlogba)。因此,可以应用主定理情况2,于是T(n)=Θ(nlogba•lgn)=Θ(n2lgn)T(n)=Θ(n^{{\rm log}_ba}•{\rm lg}n)=Θ(n^2{\rm lg}n)T(n)=Θ(nlogbalgn)=Θ(n2lgn)
  
  d.
  应用主定理,根据递归式有a=7,b=3,f(n)=n2a = 7, b = 3,f(n) = n^2a=7,b=3f(n)=n2,所以有nlogba=nlog37n^{{\rm log}_ba}=n^{{\rm log}_37}nlogba=nlog37。于是有f(n)=n2=Ω(nlog37+ε)f(n)=n^2=Ω(n^{{\rm log}_37+ε})f(n)=n2=Ω(nlog37+ε),其中ε=0.228ε = 0.228ε=0.228。并且当7/9≤c<17/9 ≤ c < 17/9c<1时,有af(n/b)=7f(n/3)=7•(n/3)2=7n2/9≤cf(n)=cn2af(n/b) = 7f(n/3) = 7•(n/3)^2 = 7n^2/9 ≤ cf(n) = cn^2af(n/b)=7f(n/3)=7(n/3)2=7n2/9cf(n)=cn2。因此,可以应用主定理情况3,于是T(n)=Θ(f(n))=Θ(n2)T(n) = Θ(f(n)) = Θ(n^2)T(n)=Θ(f(n))=Θ(n2)
  
  e.
  应用主定理,根据递归式有a=7,b=2,f(n)=n2a = 7, b = 2,f(n) = n^2a=7,b=2f(n)=n2,所以有nlogba=nlg7n^{{\rm log}_ba}=n^{{\rm lg}7}nlogba=nlg7。于是有f(n)=n2=Θ(n2)=O(nlg7−ε)f(n)=n^2=Θ(n^2)=O(n^{{\rm lg}7-ε})f(n)=n2=Θ(n2)=O(nlg7ε),其中ε=0.807ε = 0.807ε=0.807。因此,可以应用主定理情况1,于是T(n)=Θ(nlogba)=Θ(nlg7)T(n)=Θ(n^{{\rm log}_ba})=Θ(n^{{\rm lg}7})T(n)=Θ(nlogba)=Θ(nlg7)
  
  f.
  应用主定理,根据递归式有a=2,b=4,f(n)=n=n1/2a = 2, b = 4,f(n)=\sqrt{n}=n^{1/2}a=2,b=4f(n)=n=n1/2,所以有nlogba=nlog42=n1/2n^{{\rm log}_ba}=n^{{\rm log}_42}=n^{1/2}nlogba=nlog42=n1/2。于是有f(n)=n1/2=Θ(n1/2)=Θ(nlogba)f(n)=n^{1/2}=Θ(n^{1/2})=Θ(n^{{\rm log}_ba})f(n)=n1/2=Θ(n1/2)=Θ(nlogba)。因此,可以应用主定理情况2,于是T(n)=Θ(nlogba•lgn)=Θ(n1/2lgn)=Θ(nlgn)T(n)=Θ(n^{{\rm log}_ba}•{\rm lg}n)=Θ(n^{1/2}{\rm lg}n)=Θ(\sqrt{n}{\rm lg}n)T(n)=Θ(nlogbalgn)=Θ(n1/2lgn)=Θ(nlgn)
  
  g.
  本题不能应用主定理,而需要采用递归树方法。考虑nnn为偶数的情况,画出递归树如下。
  在这里插入图片描述
  递归树一共有n/2n/2n/2层,每层均只有一个结点。假设叶结点深度为iii,那么有n−2i=2n − 2i = 2n2i=2,于是得到i=(n−2)/2i = (n−2)/2i=(n2)/2,即叶结点深度为(n−2)/2(n−2)/2(n2)/2。除叶结点外,深度为iii的结点产生的代价为(n−2i)2(n−2i)^2(n2i)2。将各层代价加起来,得到
    T(n)=∑i=0(n−4)/2(n−2i)2+Θ(1)=Θ(n3)T(n)=\sum\limits_{i=0}^{(n-4)/2}{(n-2i)^2} +Θ(1)=Θ(n^3)T(n)=i=0(n4)/2(n2i)2+Θ(1)=Θ(n3)
  nnn为奇数的情况是类似的,这里不再做分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值