É log (n!) = Θ (n · log (n))?


217

Devo mostrar que log ( n !) = Θ ( n · log ( n )) .

Foi dada uma dica de que eu deveria mostrar o limite superior com n n e mostrar o limite inferior com ( n / 2) ( n / 2) . Isso não parece tão intuitivo para mim. Por que seria esse o caso? Definitivamente, posso ver como converter n n para n · log ( n ) (isto é, registrar os dois lados de uma equação), mas isso é meio que retrocesso.

Qual seria a abordagem correta para resolver esse problema? Devo desenhar a árvore de recursão? Não há nada recursivo nisso, então isso não parece uma abordagem provável.


1
Você realmente deve escrever, incluindo o "as n -> ∞"
MartW

2
Exercício divertido: use o truque semelhante para mostrar que a série harmônica 1/1 + 1/2 + 1/3 + 1/4 + ... diverge para o infinito.
Yoo

10
Isso não deveria estar em cs.stackexchange.com?
CodyBugstein

5
@CodyBugstein, cs.stackexchange.com não existia quando a pergunta foi feita #
MrMartin

Respostas:


303

Lembre-se disso

log(n!) = log(1) + log(2) + ... + log(n-1) + log(n)

Você pode obter o limite superior por

log(1) + log(2) + ... + log(n) <= log(n) + log(n) + ... + log(n)
                                = n*log(n)

E você pode obter o limite inferior fazendo uma coisa semelhante depois de jogar fora a primeira metade da soma:

log(1) + ... + log(n/2) + ... + log(n) >= log(n/2) + ... + log(n) 
                                       = log(n/2) + log(n/2+1) + ... + log(n-1) + log(n)
                                       >= log(n/2) + ... + log(n/2)
                                        = n/2 * log(n/2) 

5
Essa é uma prova muito boa para o limite superior: log (n!) = Log (1) + ... + log (n) <= n log (n) => log (n!) = O (n log n ) No entanto, para provar o limite inferior (e consequentemente o big-tetha), você provavelmente precisará da Aproximação de Stirling.
Mehrdad Afshari

33
Você não precisa da aproximação de Sterling para um limite inferior. log (n!) = log (1) + ... + log (n)> = log (n / 2) + ... + log (n)> = n / 2 * log (n / 2) = Omega (n log n).
perfil completo de Keith Randall

2
@ Keith: Ainda não entendi. Você (ou alguém) poderia expandir mais alguns termos para mim na parte "..." de "log (n / 2) + ... + log (n)", por favor? Obrigado!
Jrandom_hacker

6
@j_random_hacker: log(n/2) + log(n/2 + 1) + ... + log(n - 1) + log(n)(metade maior dos termos de log(n!)). Na verdade, acabei de ler a pergunta e vi que a pista está na pergunta. Basicamente, (n/2)^(n/2) <= n! <= n^n=> log((n/2)^(n/2))<=log(n!)<=log(n^n)=>Θ(n/2 * log(n/2))<=log(n!)<=Θ(n*log(n))
Mehrdad Afshari

4
esta explicação é semelhante a resposta aceita, mas tem um pouco mais detalhes: mcs.sdsmt.edu/ecorwin/cs372/handouts/theta_n_factorial.htm
gayavat

40

Sei que essa é uma pergunta muito antiga, com uma resposta aceita, mas nenhuma dessas respostas realmente usa a abordagem sugerida pela dica.

É um argumento bastante simples:

n!(= 1 * 2 * 3 * ... * n) é um produto de nnúmeros cada um menor ou igual a n. Portanto, é menor que o produto de nnúmeros todos iguais a n; ou seja, n^n.

Metade dos números - ou seja, n/2deles - no n!produto é maior ou igual a n/2. Portanto, seu produto é maior que o produto de n/2números todos iguais a n/2; ie (n/2)^(n/2).

Leve os logs para estabelecer o resultado.


9
Na verdade, é exatamente o mesmo que a versão do log na resposta aceita, mas o logaritmo é posterior e não antes. (ele usa mais claramente a dica embora)
hugomg

13

insira a descrição da imagem aqui

Desculpe, não sei como usar a sintaxe do LaTeX no stackoverflow.


1
Esta é uma ótima explicação! Eu poderia seguir isso até a etapa 7, mas não consigo decodificar a matemática que ocorre entre a etapa 7 e a etapa 8 ... :-(
Z3d4s 31/10/19

3
@ Z3d4s O argumento no passo 7 é basicamente o de que o primeiro termo do lado direito é o termo dominante e que log (n!) Pode, portanto, ser aproximado por n log (n) ou que é da ordem n log (n) que é expresso pela grande notação O (n * log (n)).
random9

1
@ Z3d4s, o que as etapas de conversão de 7-8 estão dizendo que n logn == log (n ^ n) e para mostrar o limite aqui, você pode dizer que o primeiro termo é sempre maior que o segundo, é possível verificar se há valores maiores e para expressar a complexidade do grande O, sempre levaremos o item dominante de todos. Portanto, n logn contribui para o grande momento.
Shiv Prakash


7

Para o limite inferior,

lg(n!) = lg(n)+lg(n-1)+...+lg(n/2)+...+lg2+lg1
       >= lg(n/2)+lg(n/2)+...+lg(n/2)+ ((n-1)/2) lg 2 (leave last term lg1(=0); replace first n/2 terms as lg(n/2); replace last (n-1)/2 terms as lg2 which will make cancellation easier later)
       = n/2 lg(n/2) + (n/2) lg 2 - 1/2 lg 2
       = n/2 lg n - (n/2)(lg 2) + n/2 - 1/2
       = n/2 lg n - 1/2

lg (n!)> = (1/2) (n lg n - 1)

Combinando os dois limites:

1/2 (n lg n - 1) <= lg (n!) <= N lg n

Escolhendo constante de limite inferior maior que (1/2), podemos compensar -1 dentro do suporte.

Assim lg (n!) = Teta (n lg n)


2
Essa derivação estendida é necessária porque "algo"> = n / 2 * lg (n / 2) não é igual ao ômega (n lg n) mencionado em um dos comentários anteriores.
Vivek Anand Sampath

Isso deve ler "uma constante menor que (1/2)", pois estamos tentando encontrar um limite inferior. Qualquer constante, c, menor que (1/2) acabará tornando c n logn <= (1/2) n * logn- (1/2) n, para um n suficientemente grande.
Matthew

3

Ajudando você ainda mais, onde Mick Sharpe o deixou:

Sua derivação é bastante simples: consulte http://en.wikipedia.org/wiki/Logarithm -> Theory Group

log (n!) = log (n * (n-1) * (n-2) * ... * 2 * 1) = log (n) + log (n-1) + ... + log (2 ) + log (1)

Pense em n como infinitamente grande . O que é infinito menos um? ou menos dois? etc.

log (inf) + log (inf) + log (inf) + ... = inf * log (inf)

E então pense em inf como n.



1

Isso pode ajudar:

e ln (x) = x

e

(l m ) n = l m * n

3
Na verdade, isso é errado: 1 ^ (m ^ n) = 1 ^ (m! N) deve ser (1 ^ m) ^ n = 1 ^ (m n)
Pindatjuh

Errr, quero dizer L em vez de 1 no comentário acima.
Pindatjuh 19/01/10

Ele não escreveu 1 ^ (m ^ n) ele escreveu (l ^ m) ^ n
CodyBugstein

1
@CodyBugstein: Havia uma edição feita para corrigir o problema, você comentou anos mais tarde quando o erro estava escondido na história
Ben Voigt

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.