Che cos’è un algoritmo di compressione?

I file del computer possono occupare una grande quantità di spazio su un disco rigido e molta larghezza di banda per la trasmissione. Per risparmiare spazio, specialmente con file a cui non si accede spesso, e larghezza di banda per i file trasmessi, sono stati sviluppati metodi di archiviazione per salvare i dati in un pacchetto più piccolo comprimendoli in qualche modo. In ogni caso, viene utilizzato un algoritmo di compressione, un metodo per ridurre la dimensione dei dati. Esistono diverse categorie e tipi popolari di algoritmi di compressione, ognuno dei quali funziona in modo diverso e alcuni dei quali hanno risultati che differiscono in modi importanti. Utilizzando vari algoritmi di compressione, è generalmente possibile ridurre un file di testo a meno della metà della sua dimensione originale; per i file grafici, i risultati variano notevolmente. Il file che risulta dalla compressione può essere un formato diverso o un file di archivio, che viene spesso utilizzato per l’archiviazione, la trasmissione e la distribuzione.

Un modo per classificare gli algoritmi di compressione è se utilizzano dizionari o metodi statistici per comprimere i dati. Il metodo del dizionario si concentra su frasi ripetibili ed è utilizzato nelle immagini GIF e negli archivi JAR e ZIP. Il metodo statistico si basa sulla frequenza di utilizzo per effettuare una conversione, che viene eseguita in due passaggi. Un esempio è Modified Huffman (mh), utilizzato in alcuni fax.

Un secondo modo per classificare gli algoritmi di compressione e quello che i programmatori non professionisti incontrano più spesso è se sono lossless o lossy. Un algoritmo di compressione dei dati senza perdita di dati è uno che comprime i dati in modo tale che quando viene decompresso, è esattamente identico al file originale. Un esempio di un algoritmo di compressione dei dati senza perdita di dati è lzw (algoritmo di Lempel-Ziv-Welch). Sviluppato nel 1977 da Lempel e Ziv e migliorato nel 1984 da Welch, viene utilizzato in file come GIF, TIF e PDF, nonché in alcuni modem.

Un algoritmo di compressione dei dati con perdita di dati ha la capacità di ridurre i dati a una dimensione inferiore rispetto alla compressione senza perdita di dati, ma al costo di alcuni dei dati originali. In altre parole, il ripristino dopo la compressione dei dati con perdita di dati non fornisce una copia identica del file originale. L’algoritmo di compressione è, tuttavia, progettato per limitare le perdite in modo che non siano evidenti all’orecchio o all’occhio. La compressione con perdita viene utilizzata in formati di file come AAC, JPEG, MPEG e MP3.