Codici a prefisso - Kraft-McMillan e limiti di Shannon sulla lunghezza media
In questa pagina 9
Una sorgente digitale spesso emette più bit del necessario: se i simboli non sono equiprobabili l'entropia è minore di (Entropia - informazione di un evento, disuguaglianza di Jensen e valore massimoL'informazione di un evento di probabilità $P$ è $i=\log_2\frac1P$ bit (zero per l'evento certo, additiva per eventi indipendenti). L'entropia di una variabile aleatoria discreta è l'informazione media, $H(x)=E[i_x(x)]=\sum_aP_x(a)\log_2\frac1{P_x(a)}$; vale $0\le H(x)\le\log_2M$ con $M$ cardinalità dell'alfabeto, e il massimo $\log_2M$ si raggiunge se e solo se i simboli sono equiprobabili (dimostrazione con la disuguaglianza di Jensen, perché il logaritmo è strettamente concavo).Entropia - informazione di un evento, disuguaglianza di Jensen e valore massimo →) e si può rappresentare lo stesso messaggio con meno bit. La codifica di sorgente lo fa. Questa nota dice quali codici sono ammissibili (Kraft-McMillan) e quanto corto può essere un codice (teorema di Shannon); la costruzione dei codici ottimi è nella nota successiva (Codici di Shannon, Huffman ed Elias e codifica aritmeticaIl codice di Shannon(-Fano) assegna alla parola $i$ lunghezza $l_i=\lceil-\log_{M_y}p_i\rceil$, soddisfa Kraft-McMillan e ha $H\le L_y<H+1$; è ottimo solo se le probabilità sono potenze di $\frac1{M_y}$. Il codice ottimo (lunghezza media minima) dà parole più lunghe ai simboli meno probabili e ha almeno due parole di lunghezza massima che differiscono solo nell'ultimo simbolo: lo costruisce la procedura di Huffman, che unisce a ogni passo i due nodi meno probabili. Il codice di Elias prende le prime $l_i=\lceil-\log_2p_i\rceil+1$ cifre del punto medio dell'intervallo di ampiezza $p_i$ in $[0,1)$: è a prefisso ma subottimo ($H+1\le L_y<H+2$), e si adatta alla codifica aritmetica adattativa.Codici di Shannon, Huffman ed Elias e codifica aritmetica →).
Versione per Ing. Elettronica: Codifica di sorgente - codici a prefisso e teorema di ShannonLa codifica di sorgente riduce il numero di bit mappando le parole della sorgente in parole di lunghezza variabile (più corte per le più probabili), senza perdere informazione. Il codice deve essere decodificabile; i codici a prefisso (nessuna parola è prefisso di un'altra) lo sono. Kraft-McMillan: se il codice è decodificabile $\sum M_y^{-L(b)}\le1$. Teorema di Shannon: $L_y\ge\frac{H(x)}{\log_2M_y}$ e esiste un codice a prefisso con $L_y\le\frac{H(x)}{\log_2M_y}+1$; l'efficienza è $\eta=\frac{H(x)}{L_y\log_2M_y}$.Codifica di sorgente - codici a prefisso e teorema di Shannon →. Versione per Ing. delle Telecomunicazioni: Codifica di sorgenteLa codifica di sorgente senza perdita assegna ai simboli (o a parole di $N$ simboli) parole di codice di lunghezza variabile, corte per i simboli probabili, con una mappa invertibile. Un codice a prefisso è sempre decodificabile; Kraft-McMillan: se il codice è decodificabile $\sum M^{-l_i}\le1$ e viceversa esiste un codice a prefisso con quelle lunghezze. Shannon: $L\ge\frac{H}{\log_2M}$ e esiste un codice con $L<\frac{H}{\log_2M}+1$ (lunghezze $\lceil\log_M\frac1p\rceil$). Shannon-Fano divide dall'alto, Huffman unisce dal basso i due meno probabili ed è ottimo; raggruppare simboli e la codifica aritmetica si avvicinano al limite.Codifica di sorgente →.
Dove sta la codifica di sorgente
Nella catena di trasmissione digitale il codificatore di sorgente sta subito dopo la sorgente; seguono il codificatore di canale e il modulatore.
Fino al codificatore di canale la comunicazione è digitale e (dopo la codifica di sorgente) affidabile; dal modulatore in poi il segnale è analogico e la comunicazione è inaffidabile (rumore). Il codificatore di sorgente riduce il numero di bit al secondo: se i bit entrano ogni e escono ogni , allora e bit/s. Esistono due tipi di codifica di sorgente:
- con perdite (la quantizzazione, Quantizzazione uniforme - saturazione, errore granulare e SNR di quantizzazioneUn quantizzatore uniforme a L = 2^b livelli e range [−v_sat, v_sat] ha passo Δ = 2v_sat/L. L'errore e = x − x^(q) è di saturazione fuori range (illimitato, da rendere raro con P_sat piccola) e granulare dentro (|e| ≤ Δ/2, uniforme con potenza Δ²/12). L'SNR di quantizzazione Λ_q = E[x²]/E[e²] vale in decibel 20log₁₀(σ_x/v_sat) + 4,77 + 6,02·b: ogni bit in più dà 6 dB. Per b minimo che garantisce una specifica: ⌈(specifica − c)/6,02⌉ con c = 20log₁₀(σ_x/v_sat) + 4,77.Quantizzazione uniforme - saturazione, errore granulare e SNR di quantizzazione →): il segnale ricostruito è diverso dall'originale;
- senza perdite (questa nota): il decodificatore recupera esattamente la sequenza emessa.
Il modello
Il codificatore riceve dalla sorgente una parola (un vettore di uno o più simboli; è l'indice del tempo) del dizionario della sorgente e produce una parola di codice nel dizionario del codice , formato da sequenze di simboli di un alfabeto di cardinalità (per il caso binario ). Si richiede che:
- la codifica sia parola per parola (senza memoria): ogni è codificata da sola;
- la codifica sia invertibile: per ogni esiste una sola con .
Le parole di codice hanno lunghezza variabile . Se è la probabilità che la sorgente emetta la parola , la metrica per valutare un codice è la lunghezza media.
Definizione (lunghezza media delle parole di codice).
Un buon codice dà parole corte ai simboli frequenti e lunghe ai rari. Invertibile da sola non basta: il ricevitore riceve un flusso continuo e deve separare le parole.
Esempio (codice non decodificabile). Sorgente con di probabilità e codice , , , . La lunghezza media è Ma il flusso può essere letto come oppure come : il codice non è decodificabile. La causa è che è l'inizio (prefisso) di .
Codici a prefisso
Definizione. In un codice a prefisso nessuna parola di codice è il prefisso (la parte iniziale) di un'altra parola.
Esempio. è a prefisso. Il flusso si separa in modo unico: appena i bit letti formano una parola del codice, quella parola è finita (nessuna parola più lunga può iniziare con essa). Per questo la decodifica è istantanea, senza bisogno di guardare i bit seguenti. Un codice a prefisso è sempre decodificabile. Il contrario non vale in generale (esistono codici decodificabili non a prefisso, ma non servono: sono sempre eguagliati da un codice a prefisso con le stesse lunghezze, per il teorema che segue).
Un codice a prefisso si rappresenta con un albero -ario: ogni parola è una foglia, nessuna foglia è antenata di un'altra.
Grafico interattivo: Albero del codice a prefisso {1, 010, 0110, 0111}: da ogni nodo partono due rami etichettati 0 e 1; le parole di codice sono le foglie (cerchi grandi) e nessuna è antenata di un'altra. Il nodo 00 è inutilizzato (un ramo non assegnato)
Teorema di Kraft-McMillan
Teorema (Kraft-McMillan). Sia la cardinalità dell'alfabeto di codice.
- (Condizione necessaria.) Per ogni codificatore decodificabile senza perdite, con parole di lunghezza ,
- (Esistenza.) Se sono interi che soddisfano la disuguaglianza (con intero), esiste un codice a prefisso con alfabeto di cardinalità e parole di lunghezza .
Il teorema dice due cose: nessun codice decodificabile può avere lunghezze che violano la somma ; e se la somma è le lunghezze vanno bene, anche a prefisso. Attenzione: la condizione riguarda le lunghezze, non un codice dato. Un codice con somma può non essere decodificabile: quello dell'esempio (, , , ) ha , eppure non è decodificabile; esiste però un altro codice a prefisso con le stesse lunghezze (per esempio ).
Perché (codici a prefisso, binari). Sia la lunghezza massima. Ogni parola di lunghezza ha discendenti alla profondità , e per la proprietà del prefisso questi insiemi di discendenti sono disgiunti. In tutto ci sono nodi alla profondità , quindi , cioè . Per l'esistenza si ordinano le lunghezze e si assegna alla parola le prime cifre dello sviluppo in base del numero : la somma garantisce , e le parole successive non possono iniziare con una precedente, perché . Per il caso generale dei codici decodificabili (McMillan) si usa la potenza -esima: con numero di sequenze di parole lunghe (altrimenti due sequenze darebbero la stessa stringa), da cui la somma è al più ; un numero la cui potenza -esima cresce al più linearmente in non supera .
Esempio. Lunghezze con alfabeto binario: . Non esiste un codice decodificabile con quelle lunghezze. Si vede sull'albero: le due parole da bit occupano metà dei nodi, le quattro da bit l'altra metà, e per le due da bit non resta spazio.
Esempio (alfabeto ternario). Lunghezze con : : non esiste un codice decodificabile ternario con quelle lunghezze.
Teorema di Shannon sulla codifica di sorgente
Sia la parola emessa, con entropia (in bit).
Teorema (Shannon, codifica di sorgente). Per un codificatore senza perdite con alfabeto di cardinalità :
- (Limite inferiore.) Ogni codice decodificabile ha .
- (Esistenza.) Esiste un codice a prefisso con .
In sintesi, esiste sempre un codice a prefisso con Per il codice binario (): , in bit per parola.
L'entropia è dunque il limite fondamentale: nessun codice può scendere sotto di essa, e con un codice a prefisso ci si avvicina a meno di bit.
Dimostrazione del limite inferiore. Dalla disuguaglianza di Kraft-McMillan, riscrivendo ogni termine con la probabilità (il codice è invertibile): Passando ai logaritmi, il logaritmo di un numero è , e si applica Jensen (Entropia - informazione di un evento, disuguaglianza di Jensen e valore massimoL'informazione di un evento di probabilità $P$ è $i=\log_2\frac1P$ bit (zero per l'evento certo, additiva per eventi indipendenti). L'entropia di una variabile aleatoria discreta è l'informazione media, $H(x)=E[i_x(x)]=\sum_aP_x(a)\log_2\frac1{P_x(a)}$; vale $0\le H(x)\le\log_2M$ con $M$ cardinalità dell'alfabeto, e il massimo $\log_2M$ si raggiunge se e solo se i simboli sono equiprobabili (dimostrazione con la disuguaglianza di Jensen, perché il logaritmo è strettamente concavo).Entropia - informazione di un evento, disuguaglianza di Jensen e valore massimo →) al logaritmo, concavo: Da segue .
Dimostrazione dell'esistenza. Si scelgono le lunghezze (il logaritmo in base di una probabilità è positivo).
- Soddisfano Kraft-McMillan: poiché e la base è minore di , . Sommando: . Quindi esiste un codice a prefisso con queste lunghezze.
- Lunghezza media: da , dove si è fatto un cambio di base del logaritmo ().
Quando si raggiunge il limite. solo se le probabilità sono potenze intere di , : allora esatti, senza arrotondamento. Per esempio con ha lunghezze , .
Esempio (alfabeto ternario). Stessa sorgente con : lunghezze , , . Kraft: . Lunghezza media simboli ternari. Limiti: e : ✓.
Raggruppare più simboli per avvicinarsi al limite
Il "+1" del limite superiore è un costo per parola. Se si codificano blocchi di simboli indipendenti, l'entropia della parola è e la lunghezza media per simbolo soddisfa : tende al limite.
Esempio. Sorgente binaria con , , bit per simbolo. Codificando un simbolo alla volta serve sempre bit (due parole, lunghezze ): bit per simbolo, il di . A coppie ( con probabilità ) il codice ottimo ha lunghezze e bit per coppia, cioè bit per simbolo; a triple si scende a bit per simbolo (valori calcolati con Python). L'efficienza sale, a prezzo di un ritardo e una complessità maggiori.
Errori comuni
- Usare Kraft-McMillan per dimostrare che un codice dato è decodificabile: la somma vale per le lunghezze, un codice può violare il prefisso pur rispettandola.
- Concludere da che "si può aggiustare qualche parola": la risposta è netta, non esiste nessun codice decodificabile con quelle lunghezze.
- Confrontare con senza dividere per per alfabeti non binari.
- Dire che il codice di Shannon ha : vale solo con probabilità potenze di ; in generale è .
- Calcolare senza pesare le lunghezze con le probabilità.
- Dimenticare che il codice a prefisso con può non essere ottimo: il limite superiore dice solo che il migliore ci sta sotto.
Domande d'esame
- Si enunci la disuguaglianza di Kraft-McMillan e la si usi per stabilire se esiste un codice binario con lunghezze . è necessaria per la decodificabilità e sufficiente per l'esistenza di un prefisso. Qui : il codice esiste.
- Si enunci il teorema di Shannon per la codifica di sorgente e se ne dimostri il limite inferiore. ; limite inferiore: da Kraft, , logaritmo e Jensen danno .
- Un codice di Shannon binario per una sorgente con bit può avere lunghezza media bit? No: il codice di Shannon ha bit.
Esercizi svolti
- Esercizio - Kraft-McMillan, Huffman, due canali binari alternati e codice di Hamming (15,11) (compito del 13 febbraio 2026, es. 201): Kraft con lunghezze , assegnazione ottima e bit rate minimo.
- Esercizio - Kraft-McMillan, Huffman, Hamming (7,4) e attenuazione massima con 16-QAM (secondo compitino del 12 gennaio 2024, es. 170): Kraft con lunghezze (somma ) e bit rate minimo.
- Esercizio - entropia, Kraft-McMillan ternario, Huffman e capacità di due canali binari in cascata (secondo compitino del 14 gennaio 2025, es. 186): Kraft ternario con lunghezze (somma ).
- Esercizio - due sorgenti indipendenti, codice di Shannon, Huffman e informazione mutua con un prodotto (compito del 24 gennaio 2025, es. 189): limite del codice di Shannon, , e cardinalità dal tasso nominale.
- Esercizio - sensori di temperatura, codice di Huffman, porta seriale e informazione mutua (esercizi del corso, cap. 5, es. 56): codice per quattro temperature e limite inferiore per le coppie.
Versione ripasso
Contesto e modello (Codifica di sorgente - codici a prefisso e teorema di ShannonLa codifica di sorgente riduce il numero di bit mappando le parole della sorgente in parole di lunghezza variabile (più corte per le più probabili), senza perdere informazione. Il codice deve essere decodificabile; i codici a prefisso (nessuna parola è prefisso di un'altra) lo sono. Kraft-McMillan: se il codice è decodificabile $\sum M_y^{-L(b)}\le1$. Teorema di Shannon: $L_y\ge\frac{H(x)}{\log_2M_y}$ e esiste un codice a prefisso con $L_y\le\frac{H(x)}{\log_2M_y}+1$; l'efficienza è $\eta=\frac{H(x)}{L_y\log_2M_y}$.Codifica di sorgente - codici a prefisso e teorema di Shannon →, Codifica di sorgenteLa codifica di sorgente senza perdita assegna ai simboli (o a parole di $N$ simboli) parole di codice di lunghezza variabile, corte per i simboli probabili, con una mappa invertibile. Un codice a prefisso è sempre decodificabile; Kraft-McMillan: se il codice è decodificabile $\sum M^{-l_i}\le1$ e viceversa esiste un codice a prefisso con quelle lunghezze. Shannon: $L\ge\frac{H}{\log_2M}$ e esiste un codice con $L<\frac{H}{\log_2M}+1$ (lunghezze $\lceil\log_M\frac1p\rceil$). Shannon-Fano divide dall'alto, Huffman unisce dal basso i due meno probabili ed è ottimo; raggruppare simboli e la codifica aritmetica si avvicinano al limite.Codifica di sorgente →)
- Catena: sorgente cod. sorgente cod. canale mod. Il cod. di sorgente riduce i bit/s: . Senza perdite (questa nota) o con perdite (quantizzazione).
- : parola per parola, invertibile; di lunghezza variabile, alfabeto di cardinalità .
- : parole corte ai simboli frequenti.
- Esempio non decodificabile (): , , , , ; il flusso è oppure .
Codici a prefisso
- Nessuna parola è l'inizio di un'altra: decodifica istantanea, sempre decodificabile. Esempio (albero: le parole sono foglie).
Kraft-McMillan
- Decodificabile . Interi con somma ( intero) esiste un codice a prefisso con quelle lunghezze.
- Riguarda le lunghezze, non un codice dato: dà , ma , non è decodificabile (esiste ).
- Prova per i prefissi: i discendenti a profondità sono disgiunti, . Esistenza: parola = prime cifre di con ordinate. McMillan: perché .
- (binario): , non esiste. Ternario : , non esiste.
- ; binario .
- Inferiore. Kraft: . Logaritmo e Jensen: , quindi .
- Esistenza. : dà Kraft (); dà (cambio di base).
- Uguaglianza solo se : , , .
- Ternario, stesse probabilità: , , ; limiti .
Blocchi di simboli
- : il "+1" si ripartisce sui simboli.
- , : singoli bit ( di ); coppie con : , cioè per simbolo; triple .
Errori tipici
- Kraft non prova la decodificabilità di un codice dato.
- Con somma la risposta è netta: non esiste, non si può "aggiustare".
- Per dividere per .
- Non pesare le lunghezze con le probabilità.
- per il codice di Shannon: solo con probabilità diadiche.
- Il limite dice che il codice ottimo ci sta sotto, non che ogni prefisso lo faccia.
Domande tipiche
- Enunciare Kraft-McMillan e verificare : , esiste.
- Enunciare Shannon e dimostrare il limite inferiore.
- Shannon con può avere ? No, .
Esercizi svolti. Esercizio - Kraft-McMillan, Huffman, due canali binari alternati e codice di Hamming (15,11) (compito del 13 febbraio 2026, es. 201); Esercizio - Kraft-McMillan, Huffman, Hamming (7,4) e attenuazione massima con 16-QAM (secondo compitino del 12 gennaio 2024, es. 170); Esercizio - entropia, Kraft-McMillan ternario, Huffman e capacità di due canali binari in cascata (secondo compitino del 14 gennaio 2025, es. 186).
Esercizi su questo argomento
- Esercizio - canale binario con rumore aleatorio, capacità e Huffman sulle triplette (secondo compitino dell'11 gennaio 2019, es. 90)
- Esercizio - codice di Elias, Huffman sulla coppia di sorgenti e informazione mutua (compito del 22 gennaio 2019, es. 92)
- Esercizio - due sorgenti indipendenti, codice di Shannon, Huffman e informazione mutua con un prodotto (compito del 24 gennaio 2025, es. 189)
- Esercizio - entropia condizionata, Huffman per due sorgenti e informazione mutua (compito del 25 giugno 2024, es. 178)
- Esercizio - entropia, Kraft-McMillan ternario, Huffman e capacità di due canali binari in cascata (secondo compitino del 14 gennaio 2025, es. 186)
- Esercizio - Huffman, codice di Shannon, funzione deterministica di una sorgente e informazione mutua di un canale (secondo compitino del 9 gennaio 2026, es. 196)
- Esercizio - Huffman, Elias ed entropia con probabilità dipendenti dalla matricola (secondo compitino dell'8 gennaio 2021, es. 118)
- Esercizio - Kraft-McMillan, Huffman, due canali binari alternati e codice di Hamming (15,11) (compito del 13 febbraio 2026, es. 201)
- Esercizio - Kraft-McMillan, Huffman, Hamming (7,4) e attenuazione massima con 16-QAM (secondo compitino del 12 gennaio 2024, es. 170)
- Esercizio - sensori di temperatura, codice di Huffman, porta seriale e informazione mutua (esercizi del corso, cap. 5, es. 56)