trie oder ausgeglichene binäre Suchbaum zu speichern Wörterbuch?

Habe ich eine einfache Anforderung (vielleicht hypothetisch):

Ich soll zum speichern von Englisch-Wörterbuch (n Worte) und einem gegebenen Wort (Zeichen m), das Wörterbuch ist in der Lage zu sagen, wenn das Wort existiert im Wörterbuch oder nicht.
Was wäre eine geeignete Datenstruktur dafür?

einen ausgeglichenen binären Suchbaum? wie in C++ STL assoziative Datenstrukturen wie set,map

oder

ein trie auf den Saiten

Einige Komplexität der Analyse:
in einer ausgeglichenen bst wäre die Zeit (log n)*m (Vergleich von 2 Strings dauert O(m) Zeit, Zeichen für Zeichen)

in der Marina, wenn an jedem Knoten, konnten wir verzweigen in O(1) Zeit, finden wir mit O(m), aber die Annahme, dass an jedem Knoten können wir die Niederlassung in O(1) Zeit ist nicht gültig. an jedem Knoten, max Filialen möglich wäre 26. wenn wir wollen, O(1) auf einen Knoten, halten wir eine kurze array indexible auf Zeichen, die auf den einzelnen Knoten. Dies wird blow-up-Raum. Nach ein paar Stufen in die Marina, Verzweigungen reduzieren, so ist es besser, halten Sie eine verknüpfte Liste von nächsten Knoten aus, der Zeichen und Verweise.

was sieht eher praktische? andere trade-offs?

Dank,

InformationsquelleAutor xyz | 2011-06-08
Schreibe einen Kommentar