Quali sono i vantaggi dell'hashing del cuculo rispetto all'hashing dinamico perfetto?


12

Le tabelle hash dinamiche perfette e le tabelle hash cuculo sono due diverse strutture dati che supportano le ricerche O (1) nel caso peggiore e gli inserimenti e le eliminazioni previsti per il tempo O (1). Entrambi richiedono lo spazio ausiliario O (n) e l'accesso alle famiglie di funzioni hash per le loro operazioni.

Penso che entrambe queste strutture di dati siano belle e brillanti a pieno titolo, ma non sono sicuro di vedere come e quando una di queste sarebbe preferibile all'altra.

Esistono contesti specifici in cui una di queste strutture dati presenta un chiaro vantaggio rispetto all'altra? O sono per lo più intercambiabili?


Non sono sicuro che una di queste tecniche sia effettivamente utilizzata nella pratica. Di solito questo tipo di strutture dati che offrono i migliori limiti asintotici sono principalmente di interesse per la ricerca, dal momento che di solito hanno una grande costante nascosta nella notazione In pratica potresti preferire una tecnica O ( log n ) più semplice, più facile da implementare con una costante davvero piccola rispetto a una O ( 1 ) più complicata con una costante davvero grande. OO(logn)O(1)
Tom van der Zanden il

@TomvanderZanden È assolutamente vero. Sono anche interessato ai vantaggi teorici di un approccio rispetto all'altro - ci sono delle belle proprietà teoriche che ciascun approccio ha da offrire rispetto all'altro?
templatetypedef

@templatetypedef, ti incoraggio ad aggiungere questo alla domanda, quindi. Le persone non dovrebbero leggere i commenti per capire la tua domanda: i commenti sono transitori e possono scomparire in qualsiasi momento.
DW

Sì, queste tecniche sono effettivamente utilizzate nella pratica, di solito in aree di nicchia.
Pseudonimo del

1
Un vantaggio dell'hashing del cuculo è che è facile da capire e da implementare. Inoltre, imho, è molto più facile da analizzare rispetto all'hashing dinamico perfetto.
A.Schulz,

Risposte:


3

Hashing dinamico perfetto nel senso di Dietzfelbinger et al. necessita solo di hashing indipendente da 2 . Mentre ci sono alcuni risultati sul semplice hashing per le tabelle di hash del cuculo, come l'hashish della tabulazione contorta e "Suffice famiglie di hash esplicite ed efficienti bastano per lo hash del cuculo con uno stash", in un certo senso l'originale hash dinamico dinamico è più robusto.


Vedi il commento chiarificatore di OP: "Sono anche interessato ai vantaggi teorici di un approccio rispetto all'altro - ci sono delle belle proprietà teoriche che ciascun approccio ha da offrire rispetto all'altro?"
jbapple il

3

Nell'hashing del cuculo, le ricerche possono essere eseguite in parallelo, mentre nello schema di hash perfetto dinamico originale di Dietzfelbinger et al., Le ricerche richiedono due accessi concatenati alla memoria, in cui il secondo accesso utilizza le informazioni recuperate dal primo.


1

È relativamente facile aumentare l'efficienza spaziale dell'hash del cuculo consentendo a ogni slot di contenere più di un oggetto. Per gli slot di dimensione 4, l'efficienza dello spazio è del 95%. Vale a dire, gli elementi possono essere inseriti fino a quando il 95% dello spazio nella tabella viene utilizzato per contenere gli oggetti, non solo i luoghi in cui gli oggetti potrebbero andare.

D'altra parte, i limiti in Dietzfelbinger et al. la carta sull'hashing dinamico perfetto dimostra solo che le operazioni di inserimento possono continuare fintanto che la tabella non è piena per più del 3%.


Potresti voler combinare le tue due risposte insieme. :-)
templatetypedef

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.