Esercizio - sorgente a sette simboli e codici di Shannon, Shannon-Fano e Huffman
In questa pagina 5
Testo. Una sorgente senza memoria emette simboli presi da . È noto che, in media, ogni simboli sono , sono , sono , sono , sono , sono e sono . Si calcoli l'entropia della sorgente. Che cosa dice il teorema di Shannon? Quale lunghezza media si ottiene con la codifica di Shannon? E con Shannon-Fano? E con Huffman? Si può migliorare l'efficienza dell'ultimo risultato?
Teoria usata: 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 →, Informazione, entropia e informazione mutuaL'informazione di un evento di probabilità $P$ è $i=\log_2\frac1P$ bit; l'entropia $H(x)=\sum p\log_2\frac1p$ è l'informazione media e misura l'incertezza: $0\le H\le\log_2M$, massimo se i simboli sono equiprobabili. Per due variabili: $\max{H(x),H(y)}\le H(x,y)\le H(x)+H(y)$, $H(x|y)=H(x,y)-H(y)$ e l'informazione mutua $I(x;y)=H(x)-H(x|y)=H(x)+H(y)-H(x,y)\ge0$ (zero se e solo se indipendenti). Per una sorgente di $F_s$ simboli/s: rate di informazione $F_sH_s$, rate nominale $F_s\log_2M$, efficienza $\eta=\frac{H_s}{\log_2M}$.Informazione, entropia e informazione mutua →.
Entropia e limiti di Shannon
Le probabilità sono (somma ). L'informazione di ciascun simbolo è: bit. Quindi Il massimo possibile con è bit; la sorgente non è equiprobabile e si può comprimere. Con una codifica a lunghezza fissa servono bit per simbolo (). Per il teorema di Shannon, per un codice binario ():
Codifica di Shannon
Lunghezze : ; ; ; ; ; ; (infatti , , , , , , ). Kraft: : un codice a prefisso esiste. Si costruisce scendendo sull'albero un livello alla volta, assegnando a ogni simbolo il primo nodo libero che non sia discendente di una parola già scelta; una possibile scelta è , , , , , , (un'altra: , , , , , , ). La lunghezza media non dipende dalla scelta: Rispetta i limiti, ma non migliora la codifica a lunghezza fissa (3 bit): la codifica di Shannon è subottima.
Codifica di Shannon-Fano
Ordine già decrescente. Primo taglio: () contro (): differenza (l'alternativa contro il resto darebbe contro , differenza ). Secondo: ; e () contro (), differenza (meglio di contro il resto: e ). Terzo: ; () contro (). Quarto: . Con a sinistra e a destra:
Codifica di Huffman
| passo | nodi | unione |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 | ||
| 4 | ||
| 5 | ||
| 6 | radice |
Una possibile assegnazione è , , , , , , (lunghezze ). Lunghezza media come somma dei nodi interni: bit; e pesando: ✓. Efficienza . È il codice ottimo tra quelli con parole di lunghezza intera per singolo simbolo.
| codice | (bit) | |
|---|---|---|
| lunghezza fissa | ||
| Shannon | ||
| Shannon-Fano | ||
| Huffman |
(Nota: il libro di testo a volte chiama "Shannon" quello che è Shannon-Fano, e viceversa: conviene fare riferimento alle procedure.)
Si può migliorare l'efficienza?
Sì, raggruppando i simboli: si applica Huffman a parole di simboli, di probabilità (sorgente senza memoria). La lunghezza per simbolo soddisfa :
- ( parole): bit/simbolo, ;
- ( parole): bit/simbolo, .
Il prezzo è un dizionario che cresce come e un ritardo di codifica (si aspetta di avere simboli). In alternativa si può usare la codifica aritmetica, che si avvicina a senza costruire il dizionario.
Versione ripasso
Codici (lunghezza media, efficienza)
| codice | (bit) | |
|---|---|---|
| lunghezza fissa | ||
| Shannon () | ||
| Shannon-Fano | ||
| Huffman |
- Shannon-Fano: primo taglio contro il resto, poi suddivisioni successive; , , , , , , .
- Huffman: unioni , , , , ; bit, codice ottimo a parole intere per singolo simbolo.
Raggruppando. Huffman su coppie: bit/simbolo (); su terne: (). Costo: dizionario di parole (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 →).
Errori tipici
- Chiamare Shannon-Fano la codifica di Shannon, o viceversa: si descrivono le procedure.
- Usare come entropia della sorgente, che non è equiprobabile.
- Dimenticare che la lunghezza media è pesata con le probabilità.