Hashing mit Suchbäumen anstelle von Listen

11

Ich habe Probleme mit Hashing und binärem Suchbaummaterial. Und ich habe gelesen, dass anstelle von Listen zum Speichern von Einträgen mit denselben Hashwerten auch binäre Suchbäume verwendet werden können. Und ich versuche zu verstehen, was die schlechteste und durchschnittliche Laufzeit für die Operationen ist

  1. insert,
  2. find und
  3. delete

ist wert. Durchschnittsfall. Verbessern sie sich in Bezug auf Listen?

Forrest Gump
quelle
Wenn Sie Zugriff auf eine strenge Analyse der Laufzeiten von Hash-Tabellen mit linearer Verkettung (dh linearen Listen) haben, ersetzen Sie den Teil, in dem die durchschnittlichen Kosten für lineare Listen enthalten sind, durch die durchschnittlichen Fallergebnisse einer ausgeglichenen Suchbaumimplementierung. Der Rest ist Mechanik. (Und natürlich hilft es.)
Raphael

Antworten:

4

Bei Listen erfolgt das Einfügen, Suchen und Löschen in , O ( n ) , O ( n ) . Sortierte Liste sind schlechter. Die binäre Suche selbst erfolgt nach sortierten Arrays, in denen sich die Operationen in O ( n ) , O ( log n ) , O ( n ) befinden . Wenn Sie "Einfügen" und "Löschen" möchten, benötigen Sie mehr als nur eine binäre Suche.O(1)O(n)O(n)O(n)O(logn)O(n)

Sie möchten wahrscheinlich so etwas wie binäre Suchbäume . Es ist viel einfacher, Referenzen darüber zu finden, wenn Sie die richtige Terminologie haben. Diese Operationen sind in Worst-Case-Zeit, beispielsweise für Implementierungen mitAVL-Bäumenundrot-schwarzen Bäumen.O(logn)

jmad
quelle
1
Das ist alles richtig, aber ich sehe nicht, wie es die gestellte Frage beantwortet.
Rgrig
Es war nicht die gleiche Frage überhaupt zu der Zeit. (Sogar der Bearbeitungsverlauf enthält nicht die ursprüngliche Frage. Seltsam.) Ich könnte meine Antwort aktualisieren, aber sie würde mit Gilles überflüssig werden.
jmad
4

O(n)nnn1=Θ(n)n1O(n)O(1)

O(logn)

O(1)

nn/2Θ(n)Θ(logn)

Gilles 'SO - hör auf böse zu sein'
quelle
2
"mit durchschnittlicher Datenverteilung" sollte "mit einer ausreichend zufälligen Hash-Funktion"
lauten