[Hash-Tabellen haben] O (1) Einführen und Such
Ich denke, das ist falsch.
Vor allem, wenn Sie den Schlüsselraum begrenzen endlich zu sein, können Sie die Elemente in einem Array speichern und eine O (1) lineare Abtastung tun. Oder Sie könnten das Array shufflesort und dann eine lineare Abtastung in O (1) erwartete Zeit. Wenn Sachen endlich ist, Material ist leicht O (1).
Also lassen Sie uns sagen, dass Ihre Hash-Tabelle eine beliebige Bitfolge gespeichert werden; Es braucht nicht viel Materie, solange es eine unendliche Reihe von Tasten ist, von denen jede endlich sind. Dann haben Sie alle Bits jeder Abfrage und Einfügen Eingabe lesen, ich sonst y0 in einem leeren Hash und Abfrage auf y1 einfügen, wo y0 und y1 an einer einzelnen Bit-Position abweichen, die Sie nicht suchen.
Aber sagen wir mal , die Schlüssellängen sind kein Parameter. Wenn Ihr Einsetzen und O Suche nehmen (1), insbesondere Hashing nimmt O (1) Zeit, was bedeutet , dass Sie nur in einer endlichen Menge von Ausgabe aus der Hash - Funktion suchen (von denen ihm wahrscheinlich zu sein , nur einen endlichen Ausgang gewährt ).
Dies bedeutet, dass mit endlich vielen Eimern, muss es eine unendliche Menge von Zeichenketten sein, die alle den gleichen Hash-Wert haben. Angenommen, ich eine Menge einzufügen, dh ω (1), von denen, und starten abfragt. Dies bedeutet, dass Ihre Hash-Tabelle auf einem anderen O (1) Einfügen / Suchmechanismus fallen muss zurück auf meine Fragen zu beantworten. Welches, und warum nicht nur das direkt verwenden?