因为O(n 2 )与O((n + k) 2 )相同,其中k是任何常数。因此,上述陈述可以用相同的逻辑真实吗?
例如: O((n + 1) 2 )=> O(n 2 + n + 1)=>为O(n 2 )
答案 0 :(得分:9)
没有。 O((n + 1)!)是O((n + 1)n!),因此O(n)大于O(n!)。
转到big-O表示法的定义,没有常数c
(n+1)! <= c*n!
适用于任意大n
。
答案 1 :(得分:2)
请参阅Big O notation的定义。当且仅在以下情况下,这些函数在Big O意义上被认为是相同的:
存在常量M
,因此:
|(n+1)!| < M |n!|
在对这种不等式进行简单的数学简化之后,你得到:
(n+1)! / n! < M
最后:
n+1 < M
对于某些n
,这对所有M
都是如此吗?
不 - 您可以看到,对于您选择的任何M
,会有一些n
的值(例如,您总是可以选择n = M - 1
),但这不是真的。因此,O((n+1)!)
与O(n!)
不同。
正如Nils Pipenbrinck所指出的那样,在实践中它并不重要,因为这两类问题对于n
的实际价值都不易处理。