(già chiesto sul sito principale , ma chiedendo anche qui una migliore copertura, scusate)
Da quando ho saputo di Succinct Data Structures, ho un disperato bisogno di una buona panoramica degli sviluppi più recenti in quell'area.
Ho cercato su Google e letto molti articoli che ho potuto vedere in cima ai risultati di Google su richieste dalla parte superiore della mia testa. Sospetto ancora di aver perso qualcosa di importante qui.
Ecco alcuni argomenti di particolare interesse per me:
Codifica succinta di alberi binari con operazioni efficienti per ottenere genitore, figlio sinistra / destra, numero di elementi in una sottostruttura.
La domanda principale qui è la seguente: tutti gli approcci che conosco presuppongono che i nodi dell'albero siano elencati in ordine del respiro (come nel lavoro pionieristico in quest'area Jacobson, G. J (1988). Strutture dati statiche succinte), che non sembra appropriato per il mio compito. Mi occupo di enormi alberi binari forniti nel layout di profondità in primo luogo e gli indici di nodo in profondità in primo luogo sono le chiavi di altre proprietà del nodo, quindi la modifica del layout dell'albero ha dei costi per me che vorrei minimizzare. Da qui l'interesse per ottenere riferimenti a lavori considerando altri layout dell'albero BF.
Grandi matrici di lunghezza variabile nella memoria esterna. Le matrici sono immutabili: non ho bisogno di aggiungere / cancellare / modificare gli elementi. L'unico requisito è il tempo di accesso dell'elemento O (1) e il minor sovraccarico possibile, migliore quindi un approccio offset e dimensionale semplice. Ecco alcune statistiche che ho raccolto sui dati tipici per il mio compito:
numero tipico di articoli - centinaia di milioni, fino a decine di miliardi;
circa il 30% degli articoli ha una lunghezza non superiore a 1 bit ;
40% -60% di articoli hanno una lunghezza inferiore a 8 bit;
solo alcune percentuali di elementi hanno una lunghezza compresa tra 32 e 255 bit (255 bit è il limite)
lunghezza media dell'articolo ~ 4 bit +/- 1 bit.
qualsiasi altra distribuzione delle lunghezze degli articoli è teoricamente possibile, ma tutti i casi praticamente interessanti hanno statistiche vicine a quelle sopra descritte.
Collegamenti ad articoli di qualsiasi complessità, tutorial di qualsiasi oscurità, librerie C / C ++ più o meno documentate, - qualsiasi cosa ti sia stata utile in compiti simili o che cosa assomigli alle tue ipotesi colte - tutte queste cose sono apprezzate con gratitudine.
Aggiornamento : ho dimenticato di aggiungere alla domanda 1: gli alberi binari con cui ho a che fare sono immutabili. Non ho requisiti per modificarli, tutto ciò di cui ho bisogno è solo attraversarli in vari modi passando sempre dal nodo ai figli o ai genitori, in modo che il costo medio di tali operazioni fosse O (1).
Inoltre, l'albero tipico ha miliardi di nodi e non dovrebbe essere completamente archiviato nella RAM.