麻烦试图找到复发的渐近运行时间(Trouble trying to find the asympto

2019-10-17 17:27发布

我试图找出一种算法的运行时间。 它是一种其工作原理是将问题分成组三分之二的(它的CLR排序)的。 我有一些麻烦来了吧,这就是我有:

T(N)= 3T([2N / 3)+1(1是因为除了递归调用,有一个交换,其可以或可以不进行。假设它完成,它仍然是唯一的常数成本。)

T(n)=3T([2([2n]/3+1)]/3+1)+1
T(n)=3T([2([2([2n]/3+1)]/3+1)]/3+1)+1
T(n)=3T([2([2([2([2n]/3+1)]/3+1)]/3+1)]/3+1)+1

等等......直到我们可以假设,在某一时刻,我们终于打了T(n)的基本情况,并为运行时获得的1恒定值。 这给了我们:

3([2([2([2([2(...........)]/3+1)]/3+1)]/3+1)]/3+1)+1 with logn terms (that's the "......." in the middle). This gives:

3*(2n/3+1)^(logn)+1*logn

3*(2n/3+1)^(logn)+logn           

那么我认为,因为如果日志的基地为2n / 3 + 1,我们可以简化它仅仅是3 * LOGN + LOGN,我们可以这样做。 (我不断听到这样做渐近记法的时候,我们选择了不事日志的基础....)

这成为4logn。 该系数降到远变得简单LOGN。

这个对吗? 我不知道如果我扩大这个正确,或者如果我的日志操作是合法的......而且,这是什么最后的结果 - 大O,θ,等我不知道我在看。 ..

谢谢。

Answer 1:

你可以看一下这个页面,让你的鸿沟一般递推关系的解决方案而治之算法。

在这种情况下,B = 3/2,一个= 3,F(N)= O(1)。 登录碱的3 3/2为约2.709左右,所以我们使用壳体1,这意味着运行时间为O(n ^ 2.709)。

希望帮助!



文章来源: Trouble trying to find the asymptotic runtime of a recurrence