(ya preguntado en el sitio principal , pero preguntando también aquí por una mejor cobertura, lo siento)
Como conocía las estructuras de datos sucintas, necesito desesperadamente una buena visión general de los desarrollos más recientes en esa área.
Busqué en Google y leí muchos artículos que pude ver en la parte superior de los resultados de Google sobre las solicitudes desde la parte superior de mi cabeza. Todavía sospecho que me he perdido algo importante aquí.
Aquí hay temas de particular interés para mí:
Codificación sucinta de árboles binarios con operaciones eficientes para obtener el número de elementos primarios, secundarios izquierdo / derecho en un subárbol.
La pregunta principal aquí es la siguiente: todos los enfoques que conozco suponen que los nodos del árbol se enumeran en orden de aliento (como en el trabajo pionero en esta área Jacobson, G. J (1988). Sucinta estructuras de datos estáticos), que no Parece apropiado para mi tarea. Trato con enormes árboles binarios dados en un diseño de profundidad primero y los índices de nodo de profundidad primero son claves para otras propiedades de nodo, por lo que cambiar el diseño del árbol tiene un costo que me gustaría minimizar. De ahí el interés en obtener referencias a trabajos considerando otros diseños de árbol BF.
Grandes conjuntos de elementos de longitud variable en la memoria externa. Las matrices son inmutables: no necesito agregar / eliminar / editar los elementos. El único requisito es el tiempo de acceso al elemento O (1) y la menor sobrecarga posible, mejor que el enfoque directo de desplazamiento y tamaño. Aquí hay algunas estadísticas que reuní sobre datos típicos para mi tarea:
número típico de artículos: cientos de millones, hasta decenas de mil millones;
aproximadamente el 30% de los artículos tienen una longitud no mayor a 1 bit ;
Los artículos del 40% al 60% tienen una longitud inferior a 8 bits;
solo unos pocos porcentajes de elementos tienen una longitud entre 32 y 255 bits (255 bits es el límite)
longitud promedio del artículo ~ 4 bit +/- 1 bit.
cualquier otra distribución de longitudes de elementos es teóricamente posible pero todos los casos prácticamente interesantes tienen estadísticas cercanas a las descritas anteriormente.
Enlaces a artículos de cualquier complejidad, tutoriales de cualquier oscuridad, bibliotecas C / C ++ más o menos documentadas, cualquier cosa que haya sido útil para usted en tareas similares o que parezca así por su conjetura educada, todas esas cosas son apreciadas con gratitud.
Actualización : Olvidé agregar a la pregunta 1: los árboles binarios con los que estoy tratando son inmutables. No tengo requisitos para alterarlos, todo lo que necesito es atravesarlos de varias maneras, siempre moviéndome del nodo a los hijos o al padre, de modo que el costo promedio de tales operaciones sea O (1).
Además, el árbol típico tiene miles de nodos y no debe almacenarse completamente en la RAM.