Was sind die Vorteile von Kuckuckshashing gegenüber dynamischem, perfektem Hashing?

12

Dynamische perfekte Hash-Tabellen und Kuckuck-Hash-Tabellen sind zwei unterschiedliche Datenstrukturen, die O (1) -Suchvorgänge im ungünstigsten Fall und erwartete O (1) -Zeit-Einfügungen und -Löschungen unterstützen. Beide benötigen O (n) Hilfsraum und Zugang zu Familien von Hash-Funktionen für ihre Operationen.

Ich denke, dass diese beiden Datenstrukturen für sich genommen schön und brillant sind, aber ich bin mir nicht sicher, wie und wann eine dieser Strukturen der anderen vorzuziehen wäre.

Gibt es bestimmte Zusammenhänge, in denen eine dieser Datenstrukturen einen klaren Vorteil gegenüber der anderen hat? Oder sind sie meistens austauschbar?

templatetypedef
quelle
ÖÖ(Logn)Ö(1)
@TomvanderZanden Das stimmt definitiv. Ich interessiere mich auch für die theoretischen Vorteile eines Ansatzes gegenüber dem anderen - gibt es nette theoretische Eigenschaften, die jeder Ansatz gegenüber dem anderen zu bieten hat?
templatetypedef
@templatetypedef, ich ermutige Sie, das dann zur Frage hinzuzufügen. Die Leute sollten die Kommentare nicht lesen müssen, um Ihre Frage zu verstehen - Kommentare sind vergänglich und können jederzeit verschwinden.
DW
Ja, diese Techniken werden tatsächlich in der Praxis eingesetzt, normalerweise in Nischenbereichen.
Pseudonym
1
Ein Vorteil des Kuckucks ist, dass es leicht zu verstehen und zu implementieren ist. Außerdem ist es viel einfacher zu analysieren als dynamisches, perfektes Hashing.
A.Schulz,

Antworten:

3

Dynamic Perfect Hashing im Sinne von Dietzfelbinger et al. braucht nur 2-unabhängige hashing . Während es einige Ergebnisse für einfaches Hashing für Kuckuck-Hash-Tabellen gibt, wie z. B. Hashing mit verdrehter Tabellierung und "Explizite und effiziente Hash-Familien, die für Kuckuck-Hashing mit einem Stash ausreichen", ist das ursprüngliche dynamische perfekte Hashing in gewisser Hinsicht robuster.

Apfel
quelle
Siehe den klarstellenden Kommentar von OP: "Ich bin auch an den theoretischen Vorteilen eines Ansatzes gegenüber dem anderen interessiert - gibt es nette theoretische Eigenschaften, die jeder Ansatz gegenüber dem anderen zu bieten hat?"
Jbapple
3

Beim Cuckoo-Hashing können Suchvorgänge parallel ausgeführt werden, während beim ursprünglichen dynamischen Perfect-Hashing-Schema von Dietzfelbinger et al. Zwei verkettete Speicherzugriffe erforderlich sind, bei denen der zweite Zugriff Informationen verwendet, die aus dem ersten abgerufen wurden.

Apfel
quelle
1

Es ist relativ einfach, die Raumeffizienz des Kuckucks zu erhöhen, indem jeder Schlitz mehr als einen Gegenstand aufnehmen kann. Für Steckplätze der Größe 4 beträgt die Raumeffizienz etwa 95%. Das heißt, Elemente können eingefügt werden, bis 95% des Speicherplatzes in der Tabelle für Elemente verwendet werden, nicht nur für Orte, an denen Elemente abgelegt werden können.

Andererseits sind die Schranken bei Dietzfelbinger et al. Papier über Dynamic Perfect Hashing beweist nur, dass Einfügevorgänge ausgeführt werden können, solange die Tabelle nicht mehr als 3% voll ist.

Apfel
quelle
Vielleicht möchten Sie Ihre beiden Antworten miteinander kombinieren. :-)
templatetypedef
0

Ö(1)Ö(n)

Apfel
quelle