如何证明对数函数的复杂性?

时间:2017-10-01 00:02:59

标签: algorithm complexity-theory

假设您有两个对数函数,例如 enter image description here

你被问到f(n)是否是O(g(n))Ω(g(n))或Θ(g(n)),你会怎么做?当你比较两个指数方程时,我发现像这样的问题更容易,因为例如x(n)= n ^ 2和p(n)= n ^ 2你可以找到一个c> 0(ex 3)其中x(n)< = cp(n)对于所有n大于某些n> 0并且将证明x(n)= O(p(n))。但是,由于某些原因,比较两个对数函数似乎要困难得多。感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

f(n) O(g(n)) a c常数n_0f(n) <= c * g(n)n >= n_0 Ω(g(n))。 f(n)为c iff常量n_0f(n) >= c * g(n)n >= n_0f(n)

现在,Θ(g(n))f(n) iff O(g(n))f(n)Ω(g(n))f(n) = log (n^2) = 2logn

所以,在你的情况下,我们有:

g(n)

这意味着lognc = 2f(n) <= 2 * logn,这意味着f(n) >= 2 * lognΩ(logn),这使得它成为f(n) <= n

顺便说一下。它也是f(n) >= 1f(n),因此O(n)可以是O(g(n)),但我们不会使用它,因为我们可以找到更好的。在这种情况下,我们在两种符号中都没有相同的功能,对于那些我们没有g(n)的值。但是,只需要一个选项来声明。如果我们无法找到它,我们会说它不是logn。注意单词&#34;我们说&#34;。

在第二种情况下,我们只关注最高增长值&#34;,c = 1部分。现在,g = log(n)Ω(logn),所以在这种情况下,它也是calc