web-dev-qa-db-ger.com

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

Ich soll zeigen, dass log ( n ! Θ ( n · log ( n )) ==.

Ein Hinweis wurde gegeben, dass ich die obere Schranke mit n zeigen sollte n und zeige die untere Schranke mit ( n /2)( n /2). Das erscheint mir nicht so intuitiv. Warum sollte das so sein? Ich kann definitiv sehen, wie man n konvertiert n bis n · log ( n ) (dh logge beide Seiten einer Gleichung), aber das funktioniert rückwärts.

Was wäre der richtige Ansatz, um dieses Problem anzugehen? Soll ich den Rekursionsbaum zeichnen? Daran ist nichts Rekursives, daher scheint das kein wahrscheinlicher Ansatz zu sein.

197
Mark

Erinnere dich daran

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

Sie können die obere Schranke von erhalten

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

Und Sie können die Untergrenze erhalten, indem Sie eine ähnliche Aktion ausführen, nachdem Sie die erste Hälfte der Summe weggeworfen haben:

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) 
269
Mick

Mir ist klar, dass dies eine sehr alte Frage mit einer akzeptierten Antwort ist, aber keine dieser Antworten verwendet tatsächlich den im Hinweis vorgeschlagenen Ansatz.

Es ist ein ziemlich einfaches Argument:

n! (= 1 * 2 * 3 * ... * n) ist ein Produkt von n Zahlen, die kleiner oder gleich n sind. Daher ist es weniger als das Produkt von n Zahlen, die alle gleich n sind; d.h. n^n.

Die Hälfte der Zahlen - d. H. n/2 Von ihnen - im Produkt n! Sind größer als oder gleich n/2. Daher ist ihr Produkt größer als das Produkt von n/2 - Zahlen, die alle gleich n/2 Sind. d.h. (n/2)^(n/2).

Führen Sie Protokolle durch, um das Ergebnis zu ermitteln.

36
Nemo

Siehe Stirlings Näherung :

ln (n!) = n · ln (n) - n + O (ln (n))

wobei die letzten beiden Begriffe weniger wichtig sind als der erste.

11
dsimcha

Für die Untergrenze

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)

Beide Grenzen kombinieren:

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

Wenn Sie eine Konstante für die untere Grenze größer als (1/2) wählen, können Sie -1 in der Klammer ausgleichen.

Also lg (n!) = Theta (n lg n)

7

enter image description here

Entschuldigung, ich weiß nicht, wie man LaTeX-Syntax für Stackoverflow verwendet.

6
Samuel

Wir helfen Ihnen weiter, wo Mick Sharpe Sie zurückgelassen hat:

Die Ableitung ist ganz einfach: siehe http://en.wikipedia.org/wiki/Logarithm -> Gruppentheorie

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

Stellen Sie sich n als unendlich groß vor . Was ist unendlich minus eins? oder minus zwei? usw.

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

Und dann stelle dir inf als n vor.

3
Pindatjuh

Vielen Dank, ich fand Ihre Antworten überzeugend, aber in meinem Fall muss ich die Θ -Eigenschaften verwenden:

log(n!) = Θ(n·log n) =>  log(n!) = O(n log n) and log(n!) = Ω(n log n)

um das Problem zu überprüfen, habe ich dieses Web gefunden, in dem Sie den gesamten Prozess erklärt haben: http://www.mcs.sdsmt.edu/ecorwin/cs372/handouts/theta_n_factorial.htm

2
WyrmxD

Dies könnte helfen:

 eln (x) = x 

und

 (lm)n = lm * n
1
Anycorn

http://en.wikipedia.org/wiki/Stirling%27s_approximation Die Stirling-Näherung könnte Ihnen helfen. Es ist sehr hilfreich bei der Behandlung von Problemen mit Fakultäten, die sich auf große Zahlen in der Größenordnung von 10 ^ 10 und höher beziehen.

enter image description here

0
user302520