如何证明或证明此函数为Ω(n ^ 1.5)?

时间:2017-08-06 18:27:22

标签: data-structures time-complexity big-o

所以我有这个递归函数: T(n)= T(log(n))+ T(n-log(n))+ n

我已多次尝试解决它,但我没有成功。 (找到Theta) 基本上,如果它的欧米茄为n ^ 1,5(Ω(n ^ 1.5)),我就足以证明或反驳

提前感谢帮助,我们将不胜感激!

  

TL; DR:

     给定T(n)= T(log(n))+ T(n-log(n))+ n

     

证明或反驳:T(n)=Ω(n ^ 1.5)

1 个答案:

答案 0 :(得分:2)

假设T(n)n的某个值处突然变为负值,如果我们忽略第一项,我们可以给出左侧的下限:

enter image description here

我们定义了一个新函数S(n),以便:

enter image description here

我们可以立即看到它有enter image description here个术语(忽略一个等等)。因此,如果我们继续扩大:

enter image description here

在此阶段,由于我们知道任何大log(n) << n n,我们可以在递归调用S(n)时将泰勒展开应用于第三项:

enter image description here

我们也可以现实地忽略第二个词。将此近似值应用于每个S(n)调用:

enter image description here

现在,我们知道:

enter image description here

b显然可以是1.5;因此:

enter image description here

编辑:一些数值测试来确认这个结果 -

代码:

uint64_t T(int n) {
  return n <= 1 ? 0 : T(n - log(n)) + T(log(n)) + (uint64_t)n;
}

结果:

N           T(N)
--------------------------
2           2
4           6
8           18
16          60
32          181
64          578
128         1911
256         6331
512         22011
1024        79304
2048        279719
4096        1016217
8192        3814210
16384       13902832
32768       51540129
65536       195366441
131072      732435510
262144      2744988819
524288      10457580914
1048576     39910628826

N^2/log(N)针对T(N)

的情节

enter image description here

这种关系是线性的,意思是

enter image description here

...确认给定的结果。