Sagen wir, ich möchte ein Wörterbuch von Strings speichern und ich möchte wissen, ob eine Zeichenfolge existiert oder nicht. Ich kann eine Trie oder eine HashMap verwenden. Die HashMap hat eine Zeitkomplexität von O (1) mit einer hohen Wahrscheinlichkeit, während die Trie in diesem Fall eine Zeitkomplexität von O (k) haben würde, wobei k die Länge der Kette ist.Hat eine HashMap mit String Keys wirklich eine geringere Zeitkomplexität als ein Trie?
Jetzt ist meine Frage: Hat die Berechnung des Hash-Wertes der Zeichenkette keine Zeitkomplexität von O (k), was die Komplexität der HashMap gleich macht? Wenn nicht, warum?
Die Art, wie ich es sehe ist, dass eine Trie hier weniger Zeitkomplexität als eine HashMap zum Nachschlagen einer Zeichenkette hätte, da die HashMap neben der Berechnung des Hashwertes Kollisionen verursachen könnte. Fehle ich etwas?
Aktualisierung: Welche Datenstruktur würden Sie verwenden, um die Geschwindigkeit beim Erstellen eines Wörterbuchs zu optimieren?
Mögliches Duplikat: http://stackoverflow.com/questions/2771368/can-hash-tables-really-be-o-o1. Es ist auch nicht unvernünftig anzunehmen, dass der Hash-Code eines Elements berechnet wird, wenn das Objekt konstruiert oder einmal bei der ersten Verwendung berechnet und dann zwischengespeichert wird. In jedem Fall ist die Berechnung des Hash-Codes dann O (1) oder amortisiert * O (1). –