Codifica di sorgente - codici a prefisso e teorema di Shannon
In questa pagina 7
Lo schema
Al quantizzatore o alla sorgente esce un flusso di simboli. Si possono trasmettere così, con bit ciascuno (codifica a lunghezza fissa), oppure ridurre i bit con una codifica di sorgente (source coding). Esistono due tipi:
- lossycon perdita di informazione, come mp3 e jpeg (con perdita): mp3, jpeg, png compressi;
- losslesssenza perdita: dai bit codificati si ricostruisce esattamente la sequenza originale (senza perdita): zip. Il corso studia solo questa.
Lo schema è: sorgente S/P (si raggruppano simboli in una parola ) mappa P/S (le parole codificate si mettono in fila). La mappa deve essere invertibile: così e non si perde informazione. è il dizionario di ingresso, quello delle parole di codice.
Grandezze
Il codice ha un alfabeto di simboli (2 per un codice binario); è la lunghezza della parola e la lunghezza media è Senza codifica ( se è una potenza di 2). L'idea: parole frequenti corte, parole rare lunghe, per abbassare . L'efficienza del codice è (come di Informazione ed entropiaL'informazione di un evento di probabilità $p$ è $\log_2\frac1p$ bit; l'entropia $H(x)=\sum p\log_2\frac1p$ è l'informazione media e misura l'incertezza della sorgente: $0\le H\le\log_2M$, con il massimo quando i simboli sono equiprobabili. Per più simboli: $H(x,y)\le H(x)+H(y)$ (uguaglianza se indipendenti), $H(x|y)=H(x,y)-H(y)$. Per una sorgente con $F_s$ simboli al secondo il rate di informazione è $F_sH_s$, il rate nominale $F_s\log_2M$ e l'efficienza $\eta=\frac{H_s}{\log_2M}$.Informazione ed entropia →; per una parola senza codifica ). Il rate nominale dopo la codifica è (bit/s) mentre il rate di informazione è .
Codici decodificabili e a prefisso
Esempio. Alfabeto con il codice : la sequenza non è univocamente decodificabile (per esempio può essere , o ). Il ricevitore deve poter ricostruire in modo univoco la sequenza trasmessa: il codice deve essere decodificabile (uniquely decodable).
Una parola è prefisso di se e coincide con i primi simboli di . Un codice è a prefisso se nessuna delle sue parole è prefisso di un'altra.
Proposizione. Un codice a prefissonessuna parola di codice è l'inizio di un'altra parola è decodificabileda una sequenza di parole di codice si risale in modo unico ai simboli trasmessi: letti i simboli uno a uno, appena si riconosce una parola di codice la si può emettere (nessuna parola più lunga la contiene all'inizio), e si riparte. Quindi la decodifica è istantanea.
Non vale il contrario: non tutti i codici decodificabili sono a prefisso. Per esempio è decodificabile (dopo uno 0 si attende il bit successivo) ma 0 è prefisso di 01.
Esempio di codice a prefisso: . La sequenza si legge senza ambiguità.
Si possono costruire i codici a prefisso con un albero binario: ogni parola è una foglia, il percorso dalla radice la scrive (0 a sinistra, 1 a destra) e nessuna parola è su un nodo interno.
Teorema di Kraft-McMillan
Sia un codice con alfabeto di simboli e la lunghezza della parola .
- Se è decodificabile, allora
- Viceversa, se esistono interi con , allora esiste un codice a prefisso con alfabeto e parole di lunghezze .
(Equivalente, per un codice con probabilità: .)
Il punto 1 serve per escludere codici: se la somma supera 1 il codice non è decodificabile. Il punto 2 per costruirli. Attenzione: il punto 1 è una condizione necessaria, non sufficiente. Controesempio: ha somma ma è ambiguo ( oppure ).
Esempio. Si applica ai due codici di prima (binari, ):
- : : non decodificabile;
- : : compatibile (ed è a prefisso).
La disuguaglianza dice "non possiamo avere troppe parole corte": ognuna occupa una frazione dell'albero.
Esempio (esame, gennaio 2025). Lunghezze richieste per 8 parole: : non esiste nessun codice decodificabile con queste lunghezze (Esercizio 2 · codice di Huffman a 8 livelli e verifica di Kraft-McMillan (tema d'esame gennaio 2025)).
Teorema di Shannon sulla codifica di sorgente
Sia un codice con alfabeto di cardinalità per la parola di entropia .
- Se è decodificabile: .
- Esiste un codice decodificabile e a prefisso con .
Il teorema dà solo limiti: non dice se un codice ottimo esiste né come trovarlo.
Dimostrazione del punto 1 (per codici binari: , ma vale in generale). Dalla disuguaglianza di Kraft . Applicando il logaritmo in base (decrescente: inverte la disuguaglianza) e la disuguaglianza di Jensen: Quindi .
Dimostrazione del punto 2. Si scelgono le lunghezze . Allora e : vale Kraft, quindi esiste un codice a prefisso con queste lunghezze (parole più brevi per le più probabili). Inoltre e, mediando, .
Il codice è ottimo (raggiunge il limite inferiore) se e solo se con interi (probabilità potenze di ): allora è intero e , cioè .
Esempio. Sorgente con probabilità : lunghezze , bit: . Sorgente con ( bit): limiti ; le lunghezze del punto 2 () danno , con Kraft : un codice a prefisso c'è, ma non è il migliore (l'algoritmo di Huffman ottiene , Codici di Shannon-Fano e di HuffmanIn un codice ottimo le parole più probabili non sono più lunghe di quelle meno probabili e le due parole più lunghe differiscono solo per l'ultimo simbolo. Shannon-Fano costruisce l'albero dall'alto dividendo ripetutamente i simboli in due gruppi di probabilità quasi uguali; Huffman lo costruisce dal basso unendo ogni volta i due simboli meno probabili ed è sempre ottimo tra i codici a prefisso. La lunghezza media $L_y$ è la somma delle probabilità dei nodi uniti, l'efficienza è $\eta=\frac{H}{L_y}$.Codici di Shannon-Fano e di Huffman →).
Raggruppare simboli per avvicinarsi al limite
Se le probabilità non sono potenze di , la lunghezza mediasomma delle lunghezze delle parole pesate con le loro probabilità per simbolo di un codice a parole intere può restare lontana da . Si codifica una parola di simboli insieme: è per parola, per simbolo si divide per ( e il margine "+1" pesa ).
Esempio. Sorgente binaria senza memoria con , : bit/simbolo. Un bit a simbolo dà . Codificando coppie (, , , ) con Huffman si hanno lunghezze : bit/coppia bit/simbolo, . Con terne bit/simbolo, . Il costo è la complessità (dizionario di parole).
Errori comuni
- Credere che Kraft dimostri la decodificabilità: serve solo per escludere codici o per costruirli.
- Dimenticare che Shannon vale per parola: se si codificano simboli insieme, e è la lunghezza media della parola.
- Dire che un codice a prefisso deve avere tutte le parole della stessa lunghezza.
- Usare per un codice binario () senza accorgersene nell'efficienza: va scritto, anche se vale 1.
Versione ripasso
- Schema: sorgente S/P mappa invertibile P/S; solo codifica lossless. ; efficienza (binario ); parole frequenti corte.
- Decodificabile: a prefisso (nessuna parola è prefisso di un'altra) decodificabile, istantaneo; non vale il contrario. non decodificabile.
- Kraft-McMillan: decodificabile (necessaria, non sufficiente: ); se esiste un codice a prefisso con quelle lunghezze. : impossibile.
- Shannon: (Kraft + Jensen); esiste un prefisso con (lunghezze ). Ottimo se (): bit.
- Raggruppare simboli: (: con coppie con terne).
- Errori tipici: Kraft non basta; è per parola; sempre nell'efficienza (Codici di Shannon-Fano e di HuffmanIn un codice ottimo le parole più probabili non sono più lunghe di quelle meno probabili e le due parole più lunghe differiscono solo per l'ultimo simbolo. Shannon-Fano costruisce l'albero dall'alto dividendo ripetutamente i simboli in due gruppi di probabilità quasi uguali; Huffman lo costruisce dal basso unendo ogni volta i due simboli meno probabili ed è sempre ottimo tra i codici a prefisso. La lunghezza media $L_y$ è la somma delle probabilità dei nodi uniti, l'efficienza è $\eta=\frac{H}{L_y}$.Codici di Shannon-Fano e di Huffman →).
Esercizi su questo argomento
- Esercizio 2 · codice di Huffman a 8 livelli e verifica di Kraft-McMillan (tema d'esame gennaio 2025)
- Esercizio 4 · quantizzatore a 6 livelli, bit aggiuntivi e codice non decodificabile (tema d'esame agosto 2025)
- Esercizio 26 · entropia ed efficienza di una sorgente quaternaria e trasformazioni dei simboli (tema d'esame gennaio 2021)
Teoria collegata
- Codici di Shannon-Fano e di Huffman
- Codifica di canale - codici a blocco, distanza minima, rivelazione e correzione
- Conversione A-D e D-A - campionamento, anti-aliasing e interpolazione
- Domande di teoria ricorrenti
- Formulario - fondamenti di comunicazioni
- Informazione ed entropia
- Sistemi di telecomunicazioni e modello ISO-OSI