Unit di apprendimento 1 Rappresentazione delle informazioni Unit

  • Slides: 15
Download presentation
Unità di apprendimento 1 Rappresentazione delle informazioni

Unità di apprendimento 1 Rappresentazione delle informazioni

Unità di apprendimento 1 Lezione 1 Codifica a lunghezza variabile

Unità di apprendimento 1 Lezione 1 Codifica a lunghezza variabile

In questa lezione impareremo: l l Codifica a lunghezza variabile Codifica di Huffman

In questa lezione impareremo: l l Codifica a lunghezza variabile Codifica di Huffman

Codifica a lunghezza variabile Nei codici a lunghezza variabile la parola codice ha una

Codifica a lunghezza variabile Nei codici a lunghezza variabile la parola codice ha una lunghezza costituita da un numero di cifre variabile in funzione del valore da rappresentare. La corrispondenza viene decisa in funzione della frequenza con cui vengono usati i valori, in modo da ottenere come vantaggio il risparmio di spazio nella memorizzazione e di tempo nella trasmissione. Viene utilizzata per esempio negli algoritmi di compressione dei dati, come il codice di Huffman. In pratica tutti i codici utilizzati nelle trasmissioni tra computer sono a lunghezza fissa, mentre i codici a lunghezza variabile sono usati per esempio dagli algoritmi di compressione dati.

Codifica a lunghezza variabile

Codifica a lunghezza variabile

La compressione dei dati con Huffman La codifica di Huffman ha la scopo di

La compressione dei dati con Huffman La codifica di Huffman ha la scopo di comprimere un file, ossia ridurne la dimensione. Poiché un file è composto da una sequenza di bit e non è possibile ridurre la dimensione dei singoli bit, per comprimere il file è necessario ridurre il numero di bit utilizzati mantenendo però invariata l’informazione originale. Riducendo la dimensione dei file si possono risparmiare tempo e risorse. Nella compressione dei file musicali e multimediali è possibile perdere una parte del messaggio senza che «i sensi umani» se ne accorgano. Per i file di testo invece è necessario che il file compresso sia identico una volta che viene effettuata l’operazione opposta, ossia quella di decompressione. Ciò significa che per file di testo non è possibile perdere parte del messaggio.

La compressione dei dati con Huffman Per comprimere un file di testo si utilizza

La compressione dei dati con Huffman Per comprimere un file di testo si utilizza una codifica a lunghezza variabile cercando di utilizzare parole codice più corte per tutti i valori maggiormente frequenti. Tale metodologia prende il nome di compressione statistica: le lettere che si ripetono con maggiore frequenza sono codificate con pochi bit; la lunghezza delle parole codice aumenta al diminuire della frequenza delle lettere all’interno del messaggio. L’algoritmo di Huffman è un algoritmo che utilizza la compressione statistica per la compressione dei dati. I migliori risultati li ottiene nella compressione dei file di testo. Più sono lunghi i file di testo maggiore è il risparmio di bit.

La compressione dei dati con Huffman – Esempio Vogliamo codificare la stringa: CARAMELLA Scrivere

La compressione dei dati con Huffman – Esempio Vogliamo codificare la stringa: CARAMELLA Scrivere la tabella della frequenza delle lettere ordinandola in ordine crescente: Lettera C R M E L A Freq 1 1 2 3 Quindi unire le due lettere con frequenza minore formando un albero binario: Otteniamo quindi la nuova tabella: 2 (C-R) C 1 R 1 Lettera M E L C-R A Freq 1 1 2 2 3 Partendo dalla nuova tabella proseguiamo nella stessa modalità già vista: consideriamo i valori con frequenza minore e uniamoli, fintanto che non vengono uniti tutti i valori.

La compressione dei dati con Huffman – Esempio 2 (C-R) C 1 R 1

La compressione dei dati con Huffman – Esempio 2 (C-R) C 1 R 1 Lettera C R M E L A Freq 1 1 2 3 Lettera M E L C-R A Freq 1 1 2 2 3

La compressione dei dati con Huffman – Esempio C R M E L A

La compressione dei dati con Huffman – Esempio C R M E L A Freq 1 1 2 3 Lettera M E L C-R A Freq 1 1 2 2 3 2 2 (M-E) (C-R) C 1 Lettera R 1 M 1 E 1 Lettera L C-R M-E A Freq 2 2 2 3

La compressione dei dati con Huffman – Esempio Lettera C R M E L

La compressione dei dati con Huffman – Esempio Lettera C R M E L A Freq 1 1 2 3 Lettera M E L C-R A Freq 1 1 2 2 3 4 (L-C-R) L 2 2 2 (M-E) (C-R) C 1 R 1 M 1 E 1 Lettera L C-R M-E A Freq 2 2 2 3 Lettera M-E A L-C-R Freq 2 3 4

La compressione dei dati con Huffman – Esempio M E L A Freq 1

La compressione dei dati con Huffman – Esempio M E L A Freq 1 1 2 3 Lettera M E L C-R A Freq 1 1 2 2 3 2 A 3 2 (M-E) (C-R) C 1 R Lettera L C-R M-E A Freq 2 2 2 3 (M-E-A) (L-C-R) 2 C 5 4 L Lettera R 1 M 1 E 1 Lettera M-E A L-C-R Freq 2 3 4 Lettera L-C-R M-E-A Freq 4 5

La compressione dei dati con Huffman – Esempio 9 (M-E-A-L-C-R) M E L A

La compressione dei dati con Huffman – Esempio 9 (M-E-A-L-C-R) M E L A Freq 1 1 2 3 Lettera M E L C-R A Freq 1 1 2 2 3 2 A 3 2 (M-E) (C-R) C 1 R Lettera L C-R M-E A Freq 2 2 2 3 (M-E-A) (L-C-R) 2 C 5 4 L Lettera R 1 M 1 E 1 Lettera M-E A L-C-R Freq 2 3 4 Lettera L-C-R M-E-A Freq 4 5 Lettera M-E-A-L-C-R Freq 9

La compressione dei dati con Huffman – Esempio 9 0 (M-E-A-L-C-R) L (L-C-R) 5

La compressione dei dati con Huffman – Esempio 9 0 (M-E-A-L-C-R) L (L-C-R) 5 0 1 0 C 1 (C-R) (M-E-A) 1 R 1 1 2 A 3 2 2 Codifica Freq A 10 3 L 00 2 C 010 1 R 011 1 M 110 1 E 111 1 1 4 0 Lettera 0 M 1 (M-E) 1 E 1 Si noti che le lettere con maggior frequenza (A, L) sono codificati con una parola codice di lunghezza minore (lunghezza = 2) rispetto alle altre lettere (C, R, M, E) che invece sono codificate con parole codice di lunghezza maggiore (lunghezza = 3).

La compressione dei dati con Huffman – Esempio Lettera Codifica A 10 L 00

La compressione dei dati con Huffman – Esempio Lettera Codifica A 10 L 00 C 010 R 011 M 110 E 111 Nella codifica ASCII ogni carattere è lungo 1 byte, ossia 8 bit. La parola CARAMELLA, essendo composta da 9 caratteri, sarà lunga 9 byte, ossia 72 bit. Codifica ASCII: 9 byte = 9 x 8 bit = 72 bit Con la codifica a lunghezza variabile di Huffman la parola CARAMELLA viene codificata con una stringa di 22 bit. Codifica di Huffman: 22 bit = 3 byte 010 -10 -011 - 10 -110 -111 -00 -00 -10 Sono sufficienti 3 byte per codificare la C – A – R – A – M – E – L - A parola CARAMELLA, un terzo dei 9 byte iniziali della codifica ASCII.