大哦表示运行时间

时间:2014-01-10 21:04:45

标签: data-structures big-o

你是如何解决这个问题的?你先得到c这两个函数的比率然后与比率找到n的范围?你怎么知道 ?请解释我真的迷路了,谢谢。

示例1:证明运行时间T(n)= n ^ 3 + 20n + 1是O(n ^ 3) 证明:通过Big-Oh定义,

如果对于某些n≥n0,T(n)≤c·n ^ 3,则T(n)为O(n ^ 3)。

让我们检查一下这个条件:

如果n ^ 3 + 20n +1≤c·n ^ 3则1 + 20 / n ^ 2 + 1 / n ^ 3 <= c。

因此, 对于n≥n0= 1且c≥22(= 1 + 20 + 1),Big-Oh条件成立。较大的 n0的值导致较小的因子c(例如,对于n0 =10c≥1.201,依此类推)但是 无论如何,上述陈述均有效。

1 个答案:

答案 0 :(得分:2)

我认为你看到的诀窍是你没有考虑大数字。因此,让我们举一个反例:

   T(n) = n^4 + n

我们假设我们认为它是O(N^3)而不是O(N^4)。你能看到的是

   c = n + 1/n^2

这意味着c,一个常量,实际上是c(n),一个函数依赖于n。将N转换为非常大的数字表明无论c == c(n)n的函数,所以它不能是O(N^3)

你想要的是在N进入无穷大的极限,除了常数之外的所有东西都是:

   c = 1 + 1/n^3

现在你可以很容易地说,它仍然是c(n)!当N真的变大,真正的大1/n^3变为零。因此,如果在N时间内T(n)声明O(N^4),则c == 1非常大{{1}},或者它是常数!

这有帮助吗?