Ido*_*dos 4 big-o time-complexity asymptotic-complexity
我最近已经进入争论/辩论,我试图得到正确解决方案的明确判决.
众所周知,n!增长非常快,但究竟有多快,足以"隐藏"可能添加到其中的所有其他常量?
让我们假设我有这个愚蠢而简单的程序(没有特定的语言):
for i from 0 to n! do:
; // nothing
Run Code Online (Sandbox Code Playgroud)
鉴于输入是n,那么这的复杂性显然O(n!)(或者甚至?(n!)是这里不相关).
现在让我们假设这个程序:
for i from 0 to n do:
for j from 0 to n do:
for k from 0 to n! do:
; // nothing
Run Code Online (Sandbox Code Playgroud)
鲍勃声称:"这个程序的复杂性显而易见O(n)O(n)O(n!) = O(n!n^2) = O((n+2)!)."
爱丽丝回应说:"我同意你的鲍勃,但实际上这将是足够的,如果你说的复杂性O(n!),因为O(n!n^k) = O(n!)对于任何k >= 1常量".
爱丽丝是否正确地记录了鲍勃的分析?
爱丽丝错了,鲍勃是对的.
使用限制时,回想一下大O符号的等效定义:
f(n) is in O(g(n)) iff
lim_n->infinity: f(n)/g(n) < infinity
Run Code Online (Sandbox Code Playgroud)
任何k>0:
lim_n->infinity: (n!*n^k) / n! = lim_n->infinity n^k = infinity
Run Code Online (Sandbox Code Playgroud)
因此,n!*n^k不在O(n!)
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |