两个复杂度O((2n + 1)!)和O(n!)是否相等?

Bar*_*rpa 3 algorithm complexity-theory big-o

这可能是一个天真的问题,但我对Big-O符号和复杂性的概念不熟悉,也找不到任何答案.我正在处理一个算法(2n + 1)的问题!时间检查一个条件.我能说问题的复杂性是O(n!)还是复杂度是O((2n + 1)!)?

jas*_*son 6

使用斯特林的近似值:

n! ~ (n / e)^n * sqrt(2 * pi * n)
Run Code Online (Sandbox Code Playgroud)

然后

(2n + 1)! ~ ((2n + 1) / e)^(2n + 1) * sqrt(2 * pi * (2n + 1))
          >= (2n / e)^(2n) * sqrt(2 * pi * 2n)
          = 2^2n * (n / e)^(2n) * sqrt(2) * sqrt(2 * pi * n)
          = sqrt(2) * (2^n)^2 * ((n / e)^n)^2 * sqrt(2 * pi * n)              
Run Code Online (Sandbox Code Playgroud)

现在很明显为什么没有希望O((2n + 1)!)成为O(n!):指数因素更糟糕.它更像O((2n + 1)!)O((n!)^2).

  • 哦,[Stack Overflow上的LaTeX](http://meta.stackexchange.com/questions/30559/latex-in-stack-overflow/60020#60020),我如何渴望你. (8认同)