运行时复杂度功率(x.N)

时间:2017-04-02 16:29:38

标签: time-complexity computer-science

我试图找出下一个等式的上下边界(运行时抱怨):

0< c< 1,()=()+((1 - ))+ 1

我所知道的是,如果c <0.5 - >重要的等式的部分是正确的,并且如果c> 0.5 - >重要的部分是剩下的。 我该怎么办?

1 个答案:

答案 0 :(得分:0)

假设 -

0 < c <0.5 , () = ((1 − )) + 1
0.5 <= c <1 , () = () + 1

您可以按如下方式找到上限和下限 -

下限 -

我们必须选择c的值,以便获得T(cn)T((1-c)n)的最小值。

当c接近0.5时,c=0.5T(cn)的值可以简单地检查为T((1-c)n)

因此,

T(n) = T(n/2) + 1
//which implies
T(n) = T(n/(2^k)) + k

现在,让n = 2^x

或者,x = log(n)给我们

T(n) = T(1) +log(n)     //lower bound

上限 -

根据允许的值,可以有两个答案 -

1) cn(1-c)n在其功能中可以包含小数值 -

现在c的价值可以通过使用cn接近(1-c)n nc aproach 1来选择cn略低(例如-c = 0.9999999999),0的值接近(1-c)n

在这种情况下,上限将是无穷大,因为函数将继续计算T(x) x接近n的位置。

2) cn(1-c)n取得底价 -

如果您不知道底价是多少,则删除十进制部分的十进制数的截断值或编码术语 typecast float integer

现在,cn(1-c)n的最大值n-1c不能等于zeroone。< / p>

因此,

T(n) = T(n-1) + 1
T(n-1) = T(n-2) + 1

等等。

给出,

T(n) = T(0) + n

因此具有O(n)的时间复杂度。

3) cn(1-c)n取ceil值 -

如果您不知道什么是ceil值,那么在编码术语类型转换 floatinteger并添加1它。

现在,c 10分别接近cn(1-c)n,其结果值为n

因此,

T(n) = T(n) + 1

其无限性具有无限性。