En las tablas hash que resuelven colisiones mediante sondeo lineal, para garantizar el rendimiento esperado de , es necesario y suficiente que la función hash sea de una familia independiente de 5. (Suficiencia: "Sondeo lineal con independencia constante", Pagh et al. , Necesidad: "Sobre la independencia k requerida por el sondeo lineal y la independencia mínima", Pătraşcu y Thorup )
Entiendo que las familias independientes más rápidas que se conocen usan la tabulación. Elegir una función de una familia así puede ser costoso, por lo que me gustaría minimizar la cantidad de veces que lo hago mientras evito los ataques de complejidad algorítmica como se describe en "Denegación de servicio de Crosby y Wallach a través de ataques de complejidad algorítmica" . Estoy menos preocupado por los ataques de tiempo (es decir, adversarios con cronómetros). ¿Cuáles son las consecuencias de reutilizar la misma función?
- ¿Al cultivar una tabla hash que está demasiado llena?
- ¿Al reducir una tabla hash que no está lo suficientemente llena?
- Al reconstruir una tabla hash que tiene demasiados bits "eliminados" establecidos?
- ¿En diferentes tablas hash que pueden contener algunas claves en común?
- ¿En diferentes tablas hash que no contienen claves en común?