Il termine “compressione” viene solitamente associato all’operazione che implica la modifica della forma di un oggetto reale affinché occupi un volume inferiore rispetto a quello occupato nella forma originale. Si osservi tuttavia che la compressione di un oggetto reale non comporta in alcun modo una diminuzione del peso, ma solo una diminuzione del volume; inoltre la natura stessa dell’oggetto compresso non cambia.
Il concetto di
compressione, si riflette nel mondo informatico con significati simili alla compressione fisica. Gli oggetti da comprimere sono in questo caso rappresentati dai file, di qualsiasi natura essi siano e il volume occupato prima e dopo la compressione è associabile allo spazio occupato dal file sul supporto di memorizzazione; in tal caso l’unita di misura dello spazio occupato non saranno i metri cubi ma i byte.
La differenza fra
compressione fisica e informatica riguarda la natura degli oggetti da comprimere: un file è una sequenza di numeri binari, che rappresentano l’ informazione; non è possibile comprimere i bit avvicinandoli come si farebbe con un qualsiasi oggetto fisico; l’unico modo per far occupare meno spazio ad un file è eliminare alcuni bit, modificando l’informazione in esso contenuta. Modificare l’informazione, è equivalente però a cambiare la natura dell’oggetto, è come se una bottiglia di plastica schiacciata non fosse più una bottiglia di plastica, ma una tazza. Il file sarebbe praticamente inutilizzabile.
Per capire meglio cosa comporta la
compressione di un file, supponiamo di avere una stringa di 30 locazioni nella quale abbiamo memorizzato la frase:
“Domani potrebbe piovere”, che occupa 23 locazioni. Supponiamo di rimuovere le vocali, l’informazione risultante sarà:
“Dmn ptrbb pvr”.
La frase compressa, occupa uno spazio di 13 locazioni, sono disponibili in totale 17 locazioni per memorizzare altre informazioni rispetto alle 7 disponibili prima della compressione. Se ora volessimo sapere che tempo farà domani e andassimo a leggere il contenuto della stringa, non riusciremmo però a capirne il senso e pertanto l’informazione compressa è inutilizzabile se usata in tale forma.
Riassumendo, l’unico modo per comprimere un file è modificare l’informazione in esso contenuta rimuovendo parte degli elementi costituenti, ma tale processo lo rende inutilizzabile. Il problema da porsi quando si progetta un algoritmo di compressione, è quindi il modo in cui sarà compresso il file, per poterne in seguito recuperare il contenuto nella sua interezza o in casi specifici, il modo in cui deve essere costruita una sua buona approssimazione, più economica in termini di spazio occupato.
I dati compressi presentano altri vantaggi oltre quello di recuperare spazio sui supporti di memorizzazione: dati di dimensioni ridotte possono essere recuperati più facilmente dai database, mentre i file video e audio, generalmente molto capienti, possono essere scaricati da un terminale remoto più velocemente. Nel prossimo articolo, mostrerò con un esempio come sfruttare la ridondanza di caratteri o simboli per ridurre lo spazio occupato dai file e descriverò le tecniche di compressione sulle quali si basano i principali algoritmi.