我有递归T(n)= 9T(n / 10)+ log ^ 3(n),并且我试图找到它的复杂性。
i替换后,我可以看到T(i)= 9T(n / 10 ^(i + 1))+ log ^ 3(n / 10 ^ i)。但是我不知道如何继续。我感谢您的帮助 和时间。
答案 0 :(得分:3)
有时对解决此类复发有用的技术是使用两个更简单的复发上限和下限进行复发,并查看您的发现。
例如,请注意您的复发
T(n)= 9T(n / 10)+ log 3 n
受复发的限制较低
L(n)= 9L(n / 10)+ 1。
此重复可使用主定理直接解决。掌握定理的表达形式很多,但我最喜欢的是解决形式重复的形式。
T(n)= aT(n / b)+ n d
用于常数a,b和d。在这种情况下,我们有a = 9,b = 10和d = 0,并且由于log b a> d,这意味着递归求解为L(n)=Θ(n < sup> log 10 9 )。这意味着我们知道您的复发率至少为Ω(n log 10 9 )。
类似地,请注意您的复发率上限为
对于任何固定ε> 0的U(n)= 9U(n / 10)+ n ε
,因为任何多项式项都占对数项的任何常数次方。假设ε非常非常小。在这种情况下,主定理怎么说?在这里,我们有a = 9,b = 10,和d =ε。假设ε确实非常非常小,我们将得到log b a>ε,因此递归求解为Θ(n log 10 9 )。
这表明您的重复性很好地夹在两个其他重复性中,分别是Ω(n log 10 9 )和O(n log 10 9 ),这样您的复发就解决了Θ(n log 10 9 )。
总结:
如果您添加了带有不正常函数项的重复项,则有时可以通过使用简单的加法项将重复项上下限来解决该重复项。
对数以常数为下限,以任意(正,幂次幂)多项式为上限。
希望这会有所帮助!
答案 1 :(得分:0)
使用主方法解决问题
它解决形式T(n)= aT(n / b)+ f(n)的重复。
主方法是获取解决方案的直接方法。 master方法仅适用于以下重复类型或可转换为以下类型的重复。
T(n)= aT(n / b)+ f(n)其中a> = 1并且b> 1
有以下三种情况:
1.如果f(n)=Θ(nc),其中c 3。如果f(n)=Θ(nc),其中c> Logba,则T(n)=Θ(f(n)) .it用于解决函数T(n)= aT(n / b)+ f(n)中的递归,其中a> = 1且b> 1
和你一样