Presentazione di PowerPoint - Università degli Studi di Udine

Computazione Compressa: Quando lo
Spazio non Basta
Introduzione
La compressione lossless di dati è il procedimento
attraverso il quale riduciamo di dimensione un file in
modo reversibile.
Supponiamo ora di voler cercare una parola in un file di
testo. Per risolvere rapidamente il problema abbiamo
bisogno di un indice, ossia di un metodo di
organizzazione dei dati in memoria che faciliti le ricerche.
Tutti noi conosciamo almeno un esempio (cartaceo) di
indice: richiede meno tempo ricercare la parola “abisso”
nella Divina Commedia o in un dizionario? (… e perché?)
Recentemente è stato provato che compressione e
indicizzazione sono due facce della stessa medaglia.
Possiamo costruire indici compressi, ossia organizzare
i nostri dati in memoria in una forma compressa che
permette la ricerca rapida di parole!
impiegate includono: fattorizzazione Lempel-Ziv,
trasformata di Burrows-Wheeler e codifiche ad entropia.
Risultati
I nostri algoritmi e strutture dati sono stati implementati in
C++ e sono scaricabili qui: https://github.com/nicolaprezza.
Su collezioni ripetitive di dati, alcune delle nostre tecniche di
compressione utilizzano fino a 600 volte meno spazio in
RAM rispetto ad algoritmi classici (vedi grafico). Questa
efficienza è però pagata in termini di tempo di esecuzione.
Analogamente, il nostro indice compresso [1] può essere
costruito usando una quantità compressa di RAM, e su
alcuni insiemi di dati è decine di volte più veloce di moderni
indici descritti in letteratura in grado di raggiungere gli stessi
tassi di compressione.
Motivazioni
Allo stato dell'arte, algoritmi classici per comprimere dati
e per costruire indici compressi (esempi: [5,6])
richiedono, durante l'esecuzione, una quantità di
memoria RAM maggiore della dimensione del file in
input. Nessuno ci dice però che copiare interamente il file
originale in RAM sia necessario per risolvere il problema.
Sorge quindi una domanda: possiamo comprimere ed
indicizzare file usando una quantità di RAM paragonabile
alla dimensione del testo compresso? Un tale risultato
troverebbe importanti applicazioni in bioinformatica, dove
sempre più frequentemente viene richiesto di manipolare
file contenenti centinaia di genomi provenienti dalla
stessa specie (e quindi simili tra di loro a più del 99.5%).
Lavoro di Ricerca
Il mio lavoro di ricerca mira a raggiungere questo
obiettivo tramite l'utilizzo di strutture dati compresse.
Una struttura dati è un metodo di organizzazione dei dati
in memoria che accelera l'esecuzione di certe operazioni
su di essi (es: contare il numero di lettere 'a' in un file).
In collaborazione con gruppi di ricerca all'università di
Udine e di Helsinki, ho sviluppato un indice [1] e diversi
algoritmi di compressione [2-4] che usano spazio
compresso in RAM durante l'esecuzione. Le tecniche
dott. Nicola Prezza
Prof. Alberto Policriti
Info:
Tel. +39 0432 558411
[email protected]
Risultati in termini di risorse impiegate (spazio in RAM e tempo) da
5 algoritmi di compressione su 3 file: tutte le versioni della pagina
Wikipedia su Albert Einstein, 37 varianti del genoma di
Saccharomyces cerevisiae (lievito della birra) e un file XML
contenente informazioni bibliografiche di riviste scientifiche. Linee
orizzontali: spazio dei file su disco. Nota: le scale sono logaritmiche,
quindi una differenza di 1 unità corrisponde ad un fattore
moltiplicativo pari a 10. Esempio: l'algoritmo [2] occupa circa 600
volte meno spazio di [5] sul dataset “Wiki Albert Einstein”.
Riferimenti bibliografici
[1] Belazzougui D, Cunial F, Gagie T, Prezza N, Raffinot M. Composite Repetition-Aware Data Structures.
Combinatorial Pattern Matching 2015 Jun 29 (pp. 26-39). Springer International Publishing.
[2] Policriti A, Prezza N. Computing LZ77 in Run-Compressed Space. Data Compression Conference 2016 Mar 29.
IEEE Conference Publishing Services.
[3] Policriti A, Prezza N. Fast Online Lempel-Ziv Factorization in Compressed Space. String Processing and
Information Retrieval 2015 Sep 1 (pp. 13-20). Springer International Publishing.
[4] Policriti A, Gigante N, Prezza N. Average Linear Time and Compressed Space Construction of the BurrowsWheeler Transform. Language and Automata Theory and Applications 2015 Mar 2 (pp. 587-598).
[5] Beller T, Zwerger M, Gog S, Ohlebusch E. Space-efficient construction of the Burrows-Wheeler transform.
String Processing and Information Retrieval 2013 Oct 7. Springer International Publishing.
[6] Juha Kärkkäinen, Dominik Kempa, Simon J. Puglisi. Lightweight Lempel-Ziv Parsing.
In Proc. 12th Symposium on Experimental Algorithms (SEA 2013), Springer, 2013, pp. 139-150.
AREA TECNICO SCIENTIFICA
29° ciclo
Corso di dottorato in Informatica e Scienze
Matematiche e Fisiche