¿Cuáles son las ventajas del hash cuckoo sobre el hashing perfecto dinámico?

12

Las tablas hash dinámicas perfectas y las tablas hash cuco son dos estructuras de datos diferentes que admiten las búsquedas de O (1) en el peor de los casos y las inserciones y eliminaciones esperadas de O (1). Ambos requieren espacio auxiliar O (n) y acceso a familias de funciones hash para sus operaciones.

Creo que ambas estructuras de datos son hermosas y brillantes por derecho propio, pero no estoy seguro de ver cómo y cuándo una de estas sería preferible a la otra.

¿Existen contextos específicos en los que una de estas estructuras de datos tiene una clara ventaja sobre la otra? ¿O son mayormente intercambiables?

templatetypedef
fuente
No estoy seguro de si alguna de estas técnicas se usa realmente en la práctica. Por lo general, este tipo de estructuras de datos que ofrecen los mejores límites asintóticos son principalmente de interés para la investigación, ya que generalmente tienen una gran constante oculta en la notación En la práctica, es posible que prefiera una técnica O ( log n ) más simple y fácil de implementar con una constante realmente pequeña sobre una O ( 1 ) más complicada con una constante realmente grande. OO(logn)O(1)
Tom van der Zanden
@TomvanderZanden Eso es definitivamente cierto. También estoy interesado en las ventajas teóricas de un enfoque sobre el otro: ¿hay alguna buena propiedad teórica que cada enfoque tenga para ofrecer sobre el otro?
templatetypedef
@templatetypedef, te animo a agregar eso a la pregunta, entonces. Las personas no deberían tener que leer los comentarios para comprender su pregunta: los comentarios son transitorios y pueden desaparecer en cualquier momento.
DW
Sí, estas técnicas se utilizan realmente en la práctica, generalmente en áreas específicas.
Seudónimo
1
Una ventaja del hash cuckoo es que es fácil de entender e implementar. Además, en mi opinión, es mucho más fácil de analizar que el hashing dinámico perfecto.
A.Schulz

Respuestas:

3

El hashing dinámico perfecto en el sentido de Dietzfelbinger et al. solo necesita 2 hash independientes . Si bien hay algunos resultados sobre el hashing simple para tablas de hash de cuco, como el hashing de tabulación retorcido y "Bastante explícito y eficiente de familias de hash para hash de cuco con un alijo", el hashing perfecto dinámico original es más robusto en cierto sentido.

jbapple
fuente
Vea el comentario aclaratorio de OP: "También estoy interesado en las ventajas teóricas de un enfoque sobre el otro: ¿hay alguna buena propiedad teórica que cada enfoque tenga para ofrecer sobre el otro?"
jbapple
3

En el hash de cuco, las búsquedas se pueden realizar en paralelo, mientras que en el esquema de hash perfecto dinámico original de Dietzfelbinger et al., Las búsquedas requieren dos accesos de memoria encadenados, en los que el segundo acceso usa información recuperada del primero.

jbapple
fuente
1

Es relativamente fácil aumentar la eficiencia de espacio del hash cuckoo al permitir que cada ranura contenga más de un elemento. Para ranuras de tamaño 4, la eficiencia del espacio es algo así como 95%. Es decir, los elementos se pueden insertar hasta que el 95% del espacio en la tabla se utiliza para contener elementos, no solo los lugares donde los elementos pueden ir.

Por otro lado, los límites en Dietzfelbinger et al. el documento sobre hashing dinámico perfecto solo prueba que las operaciones de inserción pueden continuar siempre que la tabla no esté llena más del 3%.

jbapple
fuente
Es posible que desee combinar sus dos respuestas juntas. :-)
templatetypedef
0

O(1)O(n)

jbapple
fuente