En informática , una estructura de datos sucinta es aquella que utiliza una cantidad de espacio cercana al límite inferior teórico de la información , pero que (a diferencia de otras representaciones comprimidas) permite realizar consultas eficientes. El concepto fue introducido originalmente por Jacobson [ 1 ] para codificar vectores de bits , árboles (sin etiquetar) y grafos planares . A diferencia de los algoritmos generales de compresión de datos sin pérdida , las estructuras de datos sucintas conservan la capacidad de utilizarlas directamente, sin necesidad de descomprimirlas previamente. Un concepto relacionado es el de estructura de datos comprimida , en el que el tamaño de los datos almacenados o codificados depende igualmente del contenido específico de los mismos.
Supongamos quees el número óptimo de bits necesarios desde el punto de vista de la teoría de la información para almacenar ciertos datos. Una representación de estos datos se denomina:
- implícito si se tomatrozos de espacio,
- sucinto si hace faltatrozos de espacio, y
- compacto si se necesitatrozos de espacio.
Por ejemplo, una estructura de datos que utilizaEl almacenamiento de bits es compacto,bits es conciso,bits también es sucinto, ybits es implícito.
Las estructuras implícitas se reducen, por lo general, a almacenar información utilizando alguna permutación de los datos de entrada; el ejemplo más conocido de esto es el montón .
Diccionarios indexables concisos
Los diccionarios indexables sucintos, también llamados diccionarios de rango/selección , forman la base de varias técnicas de representación sucinta, incluidos los árboles binarios ,árboles y multiconjuntos -arios , [ 2 ] así como árboles y arreglos de sufijos . [ 3 ] El problema básico es almacenar un subconjuntode un universo, generalmente representado como una matriz de bitsdóndesi y solo siUn diccionario indexable admite los métodos habituales de los diccionarios (consultas e inserciones/eliminaciones en el caso dinámico), así como las siguientes operaciones:
para.
En otras palabras,devuelve el número de elementos igual ahasta la posiciónmientras devuelve la posición del-ésima ocurrencia de.
Existe una representación simple [ 4 ] que utilizabits de espacio de almacenamiento (la matriz de bits original y unaestructura auxiliar) y admite clasificación y selección en tiempo constante. Utiliza una idea similar a la de las consultas de mínimo de rango ; hay un número constante de recursiones antes de detenerse en un subproblema de tamaño limitado. La matriz de bitsestá dividido en grandes bloques de tamañotrozos y pequeños bloques de tamañobits. Para cada bloque grande, el rango de su primer bit se almacena en una tabla separada.; cada entrada de este tipo tomabits para un total debits de almacenamiento. Dentro de un bloque grande, otro directorioalmacena el rango de cada uno de lospequeños bloques que contiene. La diferencia aquí es que solo necesitabits para cada entrada, ya que solo es necesario almacenar las diferencias con respecto al rango del primer bit en el bloque grande contenedor. Por lo tanto, esta tabla toma un total debits. Una tabla de búsquedaLuego se puede utilizar que almacena la respuesta a cada posible consulta de clasificación en una cadena de bits de longitudpara; esto requierebits de espacio de almacenamiento. Por lo tanto, dado que cada una de estas tablas auxiliares ocupaespacio, esta estructura de datos admite consultas de clasificación entiempo ytrozos de espacio.
Para responder a una consulta sobreEn tiempo constante, un algoritmo de tiempo constante calcula:
En la práctica, la tabla de búsquedapuede reemplazarse por operaciones bit a bit y tablas más pequeñas que se pueden usar para encontrar el número de bits establecidos en los bloques pequeños. Esto suele ser beneficioso, ya que las estructuras de datos concisas se utilizan en grandes conjuntos de datos, en cuyo caso los fallos de caché se vuelven mucho más frecuentes y las posibilidades de que la tabla de búsqueda sea desalojada de las cachés de CPU más cercanas aumentan. [ 5 ] Las consultas de selección se pueden admitir fácilmente realizando una búsqueda binaria en la misma estructura auxiliar utilizada para el rango ; sin embargo, esto llevatiempo en el peor de los casos. Una estructura más complicada que utilizaSe pueden utilizar bits de almacenamiento adicional para admitir la selección en tiempo constante. [ 6 ] En la práctica, muchas de estas soluciones tienen constantes ocultas en elnotación que domina antes de que se haga evidente cualquier ventaja asintótica; las implementaciones que utilizan operaciones de palabras amplias y bloques alineados a palabras suelen tener un mejor rendimiento en la práctica. [ 7 ]
Soluciones con entropía comprimida
ElEl enfoque espacial se puede mejorar teniendo en cuenta que haydistinto-subconjuntos de(o cadenas binarias de longitudcon exactamente1), y por lo tantoes una cota inferior teórica de la información sobre el número de bits necesarios para almacenar. Existe un diccionario sucinto (estático) que alcanza este límite, a saber, utilizandoespacio. [ 8 ] Esta estructura se puede extender para admitir consultas de clasificación y selección y tomaespacio. [ 2 ] Sin embargo, las consultas de rango correctas en esta estructura están limitadas a los elementos contenidos en el conjunto, de forma análoga a cómo funcionan las funciones hash perfectas mínimas. Este límite se puede reducir a una compensación espacio/tiempo reduciendo el espacio de almacenamiento del diccionario acon consultas tomandotiempo. [ 9 ]
Si se desea admitir inserciones y eliminaciones, es posible lograr un límite de espacio deal tiempo que se admite cada operación (inserción, eliminación, clasificación o selección) en el tiempo previsto.. [ 10 ]
También es posible construir un diccionario indexable que admita rango (pero no selección) que utilice menos debits, siempre que las consultas de rango se limiten a los elementos contenidos en el conjunto. Dicho diccionario se denomina función hash perfecta mínima monótona y puede implementarse utilizando tan solo comobits. [ 11 ] [ 12 ]
Tablas hash concisas
Una tabla hash sucinta , también conocida como diccionario desordenado sucinto, es una estructura de datos que almacenallaves de un universoutilizando el espaciobits, y admite consultas de membresía en un tiempo esperado constante. Si una tabla hash concisa también admite inserciones y eliminaciones en un tiempo esperado constante, entonces se la denomina dinámica , y de lo contrario se la denomina estática.
La primera tabla hash dinámica sucinta se debe a Raman y Rao en 2003. [ 13 ] En el caso donde, su solución utiliza espaciobits. Posteriormente, se demostró que este límite de espacio podía mejorarse abits para cualquier número constante de logaritmos [ 14 ] y poco después este límite también fue óptimo. [ 15 ] [ 16 ] Esta última solución admite todas las operaciones en el peor caso de tiempo constante con alta probabilidad .
La primera tabla hash estática sucinta se debe a Pagh en 1999. [ 17 ] [ 18 ] En el caso donde, su solución utiliza espaciobits, y admite consultas de tiempo constante en el peor de los casos . Este límite se mejoró posteriormente abits, [ 9 ] y luego abits. [ 19 ] Mientras que las dos primeras soluciones [ 18 ] [ 9 ] admiten consultas de tiempo constante en el peor de los casos, la última admite consultas de tiempo esperado constante. [ 19 ] La solución final también requiere acceso a una tabla de búsqueda de tamaño, pero esta tabla de búsqueda es independiente del conjunto de elementos que se almacenan. [ 19 ] Más recientemente, Hu et al. [ 20 ] idearon una solución que utiliza espacioal tiempo que admite consultas de tiempo constante en el peor de los casos.
Otros ejemplos
Una cadena con una longitud arbitraria ( cadena Pascal ) ocupa Z + log( Z ) espacio y, por lo tanto, es concisa. Si existe una longitud máxima, lo cual ocurre en la práctica, ya que 2³² = 4 GiB de datos es una cadena muy larga, y 2⁶⁴ = 16 EiB de datos es mayor que cualquier cadena en la práctica, entonces una cadena con una longitud también es implícita, ocupando Z + k espacio, donde k es el número de datos para representar la longitud máxima (por ejemplo, 64 bits).
Cuando se necesita codificar una secuencia de elementos de longitud variable (como cadenas), existen varias posibilidades. Un enfoque directo consiste en almacenar una longitud y un elemento en cada registro; estos se pueden colocar uno tras otro. Esto permite una búsqueda eficiente del siguiente elemento, pero no la búsqueda del k -ésimo elemento. Una alternativa es colocar los elementos en orden con un delimitador (por ejemplo, una cadena terminada en nulo ). Esto utiliza un delimitador en lugar de una longitud y es sustancialmente más lento, ya que se debe escanear toda la secuencia en busca de delimitadores. Ambos son eficientes en cuanto a espacio. Un enfoque alternativo es la separación fuera de banda: los elementos se pueden colocar simplemente uno tras otro, sin delimitadores. Los límites de los elementos se pueden almacenar como una secuencia de longitud, o mejor, desplazamientos dentro de esta secuencia. Alternativamente, se codifica junto con él una cadena binaria separada que consta de 1s en las posiciones donde comienza un elemento y 0s en todas partes. Dada esta cadena,La función puede determinar rápidamente dónde comienza cada elemento, dado su índice. [ 21 ] Esto es compacto pero no conciso, ya que ocupa 2 Z espacio, que es O( Z ).
Otro ejemplo es la representación de un árbol binario : un árbol binario arbitrario enLos nodos pueden representarse enbits mientras admite una variedad de operaciones en cualquier nodo, que incluyen encontrar su padre, su hijo izquierdo y derecho, y devolver el tamaño de su subárbol, cada una en tiempo constante. El número de árboles binarios diferentes ennodos esPara grandes, esto es sobre; por lo tanto necesitamos al menos aproximadamentebits para codificarlo. Por lo tanto, un árbol binario sucinto ocuparía solobits por nodo.
Véase también
Referencias
- ↑ Jacobson, G. J (1988). Estructuras de datos estáticas sucintas (tesis doctoral). Pittsburgh, PA: Universidad Carnegie Mellon.
- 1 2 Raman, R.; V. Raman; S. S Rao (2002). "Diccionarios indexables sucintos con aplicaciones a la codificación de árboles k-arios y multiconjuntos" . Actas del decimotercer simposio anual ACM-SIAM sobre algoritmos discretos . págs. 233–242 . arXiv : 0705.0552 . CiteSeerX 10.1.1.246.3123 . doi : 10.1145/1290672.1290680 . ISBN 0-89871-513-X.
- ↑ Sadakane, K.; R. Grossi (2006). "Comprimiendo estructuras de datos sucintas dentro de límites de entropía" (PDF) . Actas del decimoséptimo simposio anual ACM-SIAM sobre algoritmos discretos . págs. 1230–1239 . ISBN 0-89871-605-5Archivado del original (PDF) el 29 de septiembre de 2011.
- ↑ Jacobson, G. (1 de noviembre de 1989). Árboles y grafos estáticos eficientes en espacio (PDF) . 30.º Simposio IEEE sobre Fundamentos de la Informática. doi : 10.1109/SFCS.1989.63533 . Archivado del original (PDF) el 12 de marzo de 2016.
- ↑ González, R.; S. Grabowski; V. Mäkinen; G. Navarro (2005). "Implementación práctica de consultas de clasificación y selección" (PDF) . Actas de pósteres del 4.º Taller sobre algoritmos eficientes y experimentales (WEA) . págs. 27–38 .
- ↑ Clark, David (1996). Árboles de pat compactos (PDF) (tesis doctoral). Universidad de Waterloo.
- ↑ Vigna, S. (2008). "Implementación de Broadword de consultas de clasificación/selección" (PDF) . Algoritmos experimentales . Notas de clase en ciencias de la computación. Vol. 5038. págs. 154–168 . CiteSeerX 10.1.1.649.8950 . doi : 10.1007/978-3-540-68552-4_12 . ISBN 978-3-540-68548-7. S2CID 13963489 .
- ↑ Brodnik, A.; J. I Munro (1999). "Membresía en tiempo constante y espacio casi mínimo" (PDF) . SIAM J. Comput . 28 (5): 1627– 1640. CiteSeerX 10.1.1.530.9223 . doi : 10.1137/S0097539795294165 .
- 1 2 3 Patrascu, Mihai (octubre de 2008). "Succincter" . 49.º Simposio Anual IEEE sobre Fundamentos de la Informática , 2008. IEEE. págs. 305–313 . doi : 10.1109/focs.2008.83 . ISBN 978-0-7695-3436-7. S2CID 257721481 .
- ↑ Kuszmaul, William; Liang, Jingxun; Zhou, Renfei (2026), "Selección/Clasificación dinámica sucinta: superando el cuello de botella de la estructura de árbol" , Actas del Simposio anual ACM-SIAM de 2026 sobre algoritmos discretos (SODA) , Filadelfia, PA: Society for Industrial and Applied Mathematics, pp. 3760–3804 , doi : 10.1137/1.9781611978971.138 , ISBN 978-1-61197-897-1, recuperado el 3 de abril de 2026
{{citation}}: CS1 mantenimiento: parámetro de trabajo con ISBN ( enlace ) - ↑ Belazzougui, Djamal; Boldi, Paolo; Pagh, Rasmus; Vigna, Sebastiano (2009-01-04). "Monotone Minimal Perfect Hashing: Searching a Sorted Table with O (1) Accesses". Proceedings of the Twentieth Annual ACM-SIAM Symposium on Discrete Algorithms . Philadelphia, PA: Society for Industrial and Applied Mathematics. pp. 785–794 . doi : 10.1137/1.9781611973068.86 . ISBN 978-0-89871-680-1.
- ↑ Assadi, Sepehr; Farach-Colton, Martín; Kuszmaul, William (enero de 2023), "Límites ajustados para el hash perfecto mínimo monótono" , Actas del Simposio Anual ACM-SIAM de 2023 sobre Algoritmos Discretos (SODA) , Filadelfia, PA: Society for Industrial and Applied Mathematics, págs. 456–476 , arXiv : 2207.10556 , doi : 10.1137/1.9781611977554.ch20 , ISBN 978-1-61197-755-4, consultado el 28 de abril de 2023
{{citation}}: CS1 mantenimiento: parámetro de trabajo con ISBN ( enlace ) - ↑ Raman, Rajeev; Rao, Satti Srinivasa (2003), "Diccionarios y árboles dinámicos sucintos" , Autómatas, lenguajes y programación , Berlín, Heidelberg: Springer Berlin Heidelberg, pp. 357–368 , doi : 10.1007/3-540-45061-0_30 , ISBN 978-3-540-40493-4, consultado el 28 de abril de 2023
{{citation}}: CS1 mantenimiento: parámetro de trabajo con ISBN ( enlace ) - ↑ Bender, Michael A.; Farach-Colton, Martín; Kuszmaul, John; Kuszmaul, William; Liu, Mingmou (2022-06-09). "Sobre el equilibrio óptimo tiempo/espacio para tablas hash" . Actas del 54.º Simposio Anual ACM SIGACT sobre Teoría de la Computación . Nueva York, NY, EE. UU.: ACM. págs. 1284–1297 . arXiv : 2111.00602 . doi : 10.1145/3519935.3519969 . hdl : 1721.1/146419 . ISBN 9781450392648. S2CID 240354692 .
- ↑ Li, Tianxiao; Liang, Jingxun; Yu, Huacheng; Zhou, Renfei (2023). "Límites inferiores ajustados de la sonda celular para diccionarios dinámicos y sucintos". arXiv : 2306.02253 [ cs.DS ].
- ↑ Nadis, Steve (8 de febrero de 2024). "Los científicos encuentran el equilibrio óptimo entre el almacenamiento de datos y el tiempo" . Quanta Magazine .
- ↑ Pagh, Rasmus (1998-01-28). "Baja redundancia en diccionarios con tiempo de búsqueda en el peor de los casos O(1)" . Serie de informes BRICS . 5 (28). doi : 10.7146/brics.v5i28.19434 . ISSN 1601-5355 .
- 1 2 Pagh, Rasmus (enero de 2001). "Baja redundancia en diccionarios estáticos con tiempo de consulta constante" . SIAM Journal on Computing . 31 (2): 353– 363. doi : 10.1137/s0097539700369909 . ISSN 0097-5397 .
- 1 2 3 Yu, Huacheng ( 22 de junio de 2020). «Diccionario sucinto estático de Las Vegas casi óptimo» . Actas del 52.º Simposio Anual ACM SIGACT sobre Teoría de la Computación . Nueva York, NY, EE. UU.: ACM. págs. 1389–1401 . arXiv : 1911.01348 . doi : 10.1145/3357713.3384274 . ISBN 9781450369794. S2CID 207780523 .
- ↑ Hu, Yang; Liang, Jingxun; Yu, Huacheng; Zhang, Junkai; Zhou, Renfei (15 de junio de 2025). «Diccionario estático óptimo con tiempo de consulta constante en el peor de los casos» . Actas del 57.º Simposio Anual de la ACM sobre Teoría de la Computación . Nueva York, NY, EE. UU.: ACM. págs. 278–289 . doi : 10.1145/3717823.3718278 . ISBN 979-8-4007-1510-5.
- ↑ Belazzougui, Djamal. "Hash, displace, and compress" (PDF) .
- Estructura de datos concisa