我一直试图解决复发关系。
重复是T(n) = T(n/3)+T(2n/3)+n^2
我解决了重复n
我得到了T(n)=nT(1)+ [ (9/5)(n^2)( (5/9)^(log n) ) ]
有人能告诉我这个表达式的运行时间吗?
答案 0 :(得分:3)
我认为这种复发可以达到Θ(n 2 )。为了看到这一点,我们将证明T(n)=Ω(n 2 )和T(n)= O(n 2 )。
显示T(n)=Ω(n 2 )非常简单 - 因为T(n)中有一个n 2 项,它肯定是Ω( ñ 2 )。
现在让我们看一下T(n)= O(n 2 )。我们有那个
T(n)= T(n / 3)+ T(2n / 3)+ n 2
考虑另一个重复:
S(n)= S(2n / 3)+ S(2n / 3)+ n 2 = 2S(2n / 3)+ n 2
由于T(n)增加而T(n)≤S(n),S(n)的任何上界也应该是T(n)的上界。
在S(n)上使用主定理,我们得到a = 2,b = 3/2,并且c = 2.因为log b a = log 3/2 2 = 1.709511291 ...< c,Master Theorem说这将解决O(n 2 )。由于S(n)= O(n 2 ),我们也知道T(n)= O(n 2 )。
我们已经证明T(n)=Ω(n 2 )并且T(n)= O(n 2 ),因此T(n) =Θ(n 2 ),视需要而定。
希望这有帮助!
(顺便说一下 - (5/9) log n =(2 log 5/9 ) log n = 2 log n log 5/9 =(2 log n ) log 5/9 = n log 5/9 。让它更容易推理。)
答案 1 :(得分:1)
人们无法从T(n)
或时间复杂度来讲述运行时间!它只是根据输入顺序(n)估计运行时间。
我想补充的一件事是: -
我还没有解决你的递归关系,但要记住你的派生关系是正确的,因此进一步将n = 1,在你给定的递归关系中,我们得到
T(1)=T(1/3)+T(2/3)+1
因此,要么在问题中为T(1/3)
和T(2/3)
提供值,要么您必须从给定的问题陈述中理解T(1)
应该是什么为河内塔问题!
对于重复,基本情况为T(1)
,现在根据定义,其值如下:
T(1) = T(1/3) + T(2/3) + 1
既然T(n)表示运行时函数,那么任何不会被处理的输入的运行时总是0
,这包括基本情况下的所有项,所以我们有:
T(X < 1) = 0
T(1/3) = 0
T(2/3) = 0
T(1) = T(1/3) + T(2/3) + 1^2
T(1) = 0 + 0 + 1
T(1) = 1
然后我们可以替换值:
T(n) = n T(1) + [ (9/5)(n^2)( (5/9)^(log n) ) ]
T(n) = n + ( 9/5 n^2 (5/9)^(log n) )
T(n) = n^2 (9/5)^(1-log(n)) + n
我们可以将(9/5)^(1-log(n))
近似为9/5
以获得渐近上限,因为(9/5)^(1-log(n)) <= 9/5
:
T(n) ~ 9/5 n^2 + n
O(T(n)) = O(n^2)