O(n!)与O((n + 1)!)相同吗?

时间:2015-11-09 15:23:04

标签: algorithm big-o time-complexity

因为O(n 2 )与O((n + k) 2 )相同,其中k是任何常数。因此,上述陈述可以用相同的逻辑真实吗?

例如: O((n + 1) 2 )=> O(n 2 + n + 1)=>为O(n 2

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的实际价值都不易处理。