如何找到给出关系的时间复杂度?

时间:2018-04-08 19:09:42

标签: algorithm time-complexity big-o

您将获得函数f和g,以便f(n)=O(g(n))

f(n)* log 2 (f(n)c)= O(g(n)* log 2 (g(n) ))

(这里c是一些正常数。)

你应该假设f和g是非减少的并且总是大于1。

有人可以帮我解决这个问题吗?

提前感谢您的解释。

1 个答案:

答案 0 :(得分:3)

f(n) = O(g(n))足够大时,知道f(n) <= Dg(n)知道D某个正常数n。换句话说,存在一些N,使得先前的不等式适用于所有n > N

现在,对于n > N,我们有

f(n)lg(f(n)c) <= Dg(n)lg(Dg(n)c)               ; lg is an increasing function
              <= Dg(n)lg(g(n)) + Dg(n)lg(cD)   ; lg(xy)=lg(x)+lg(y)

现在取E的正常数lg(cD)D <= Elg(g(1))。我们得到

              <= Dg(n)lg(g(n)) + Eg(n)lg(g(1))
              <= Dg(n)lg(g(n)) + Eg(n)lg(g(n)) ; g is non-decreasing
              <= (D + E)g(n)lg(g(n))
               = O(g(n)lg(g(n)))               ; by definition