你是如何解决这个问题的?你先得到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,依此类推)但是 无论如何,上述陈述均有效。
答案 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}},或者它是常数!
这有帮助吗?