Estoy buscando una estructura de datos de espacio eficiente que contenga conjuntos (sin repetición) de elementos de tamaño de palabras y admita una inserción rápida (O (1) amortizado). Por "espacio eficiente" quiero decir, idealmente, palabras para almacenar elementos.
Ser un conjunto es una parte importante de la pregunta: si cada elemento se agrega veces el espacio utilizado no puede ser .
La estructura también debe admitir la enumeración de sus elementos (razonablemente eficiente); cualquier estructura sensata no debería tener problemas aquí. (Las consultas rápidas de membresía son una ventaja).
ds.data-structures
Charles
fuente
fuente
Respuestas:
Creo que los "Diccionarios y árboles dinámicos sucintos" de Raman y Rao cumplen con los límites que especifique. Del resumen:
fuente
Si su aplicación puede tolerar algunos falsos positivos, entonces debería considerar usar un filtro Bloom .
Paráfrasis de Wikipedia: un filtro de Bloom es una estructura de datos probabilística de espacio eficiente que se utiliza para probar si un elemento es miembro de un conjunto. Los falsos positivos son posibles, pero los falsos negativos no lo son. Se pueden agregar elementos al conjunto, pero no eliminarlos. Cuantos más elementos se agreguen al conjunto, mayor será la probabilidad de falsos positivos.
fuente