121 Stimmen

Ist Big O(logn) log base e?

Für Datenstrukturen vom Typ binärer Suchbaum wird die Big-O-Notation üblicherweise als O(logn) angegeben. Bedeutet ein klein geschriebenes "l" in log, dass es sich um die logarithmische Basis e (n) handelt, wie sie der natürliche Logarithmus beschreibt? Entschuldigen Sie die einfache Frage, aber ich hatte schon immer Schwierigkeiten, zwischen den verschiedenen impliziten Logarithmen zu unterscheiden.

70 Stimmen

Wie andere bereits treffend dargelegt haben, spielt das keine Rolle. Alle Logarithmen unterscheiden sich voneinander durch eine Konstante, die nur von den beteiligten Basen abhängt. Da diese Faktoren Konstanten sind, sind sie für die Zwecke der asymptotischen Analyse irrelevant. Zweitens: Die Bestimmung der impliziten Basis hängt vom Kontext ab. Als grobe Faustregel kann man folgendes verwenden: 1. Wenn ein Mathematiker schreibt log n er meint den natürlichen Logarithmus. 2. Wenn ein Informatiker schreibt log n er meint Basis zwei. 3. Wenn ein Ingenieur schreibt log n er meint base-ten. Diese sind in der Regel richtig.

5 Stimmen

@Jason, eine andere Konvention (innerhalb der Mathematik) ist, dass ln n den natürlichen Logarithmus bedeutet und log n die Basis zehn ist. Ich denke, ln steht für den französischen "logarithm naturelle".

2 Stimmen

Die Basis des Logarithmus ist die Anzahl der Kinder, die jeder Knoten hat. Wenn es sich um einen binären Baum handelt, ist es ein Logarithmus zur Basis 2.

100voto

Heath Hunnicutt Punkte 17871

In der big-O()-Notation ausgedrückt, sind beide korrekt. Allerdings muss während der Ableitung des O()-Polynoms, im Fall von バイナリ Suche, nur Protokoll 2 korrekt ist. Ich nehme an, dass diese Unterscheidung die intuitive Inspiration für Ihre Frage war.

Außerdem bin ich der Meinung, dass das Schreiben von O(log 2 N) ist für Ihr Beispiel besser geeignet, weil es die Ableitung der Laufzeit des Algorithmus besser vermittelt.

In der big-O()-Notation werden die konstanten Faktoren entfernt. Die Umrechnung von einer Logarithmusbasis in eine andere erfolgt durch Multiplikation mit einem konstanten Faktor.

O(log N) ist also äquivalent zu O(log 2 N) aufgrund eines konstanten Faktors.

Wenn Sie jedoch das Logbuch leicht abtippen können 2 N in Ihrer Antwort, das ist eher pädagogisch. Im Falle der binären Baumsuche ist es richtig, dass log 2 N wird bei der Ableitung der big-O()-Laufzeit eingeführt.

Bevor das Ergebnis in big-O()-Notation ausgedrückt wird, ist der Unterschied sehr wichtig. Bei der Ableitung des Polynoms, das über die big-O-Notation mitgeteilt werden soll, wäre es für dieses Beispiel falsch, einen anderen Logarithmus als log 2 N, vor der Anwendung der O()-Notation. Sobald das Polynom verwendet wird, um eine Worst-Case-Laufzeit über die big-O()-Notation zu kommunizieren, spielt es keine Rolle mehr, welcher Logarithmus verwendet wird.

94voto

Cade Roux Punkte 85601

Die Big-O-Notation ist unabhängig von der logarithmischen Basis, da alle Logarithmen in verschiedenen Basen verbunden durch einen konstanten Faktor , O(ln n) ist gleichbedeutend mit O(log n) .

enter image description here

13voto

cartonn Punkte 6424

Beide sind korrekt. Denken Sie darüber nach

log2(n)=log(n)/log(2)=O(log(n))
log10(n)=log(n)/log(10)=O(log(n))
logE(n)=log(n)/log(E)=O(log(n))

9voto

Daniel Pryden Punkte 56882

Es ist eigentlich egal, welche Basis es ist, da die Big-O-Notation normalerweise nur die asymptotisch höchste Ordnung von n , so dass konstante Koeffizienten wegfallen. Da eine andere Logarithmusbasis mit einem konstanten Koeffizienten gleichzusetzen ist, ist sie überflüssig.

Allerdings würde ich wahrscheinlich von der Log Base 2 ausgehen.

3voto

Paul Punkte 5328

Ja, wenn es um die Big-O-Notation geht, spielt die Basis keine Rolle. Bei einem echten Suchproblem spielt sie jedoch eine Rolle.

Um ein Gefühl für Baumstrukturen zu entwickeln, ist es hilfreich zu verstehen, dass ein binärer Suchbaum in O(n log n) Zeit durchsucht werden kann, da dies die Höhe des Baums ist - d. h. in einem binären Baum mit n Knoten ist die Baumtiefe O(n log n) (Basis 2). Wenn jeder Knoten drei Kinder hat, kann der Baum immer noch in O(n log n) Zeit durchsucht werden, aber mit einem Logarithmus zur Basis 3. Aus rechnerischer Sicht kann die Anzahl der Kinder jedes Knotens einen großen Einfluss auf die Leistung haben (siehe zum Beispiel: Linktext )

Viel Spaß!

Paul

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X