Esercizio 2codice di Huffman a 8 livelli e verifica di Kraft-McMillan (tema d'esame gennaio 2025)
In questa pagina 3
Testo (tema d'esame gennaio 2025, esercizio 1, punti 4-5). Il quantizzatore viene riprogettato per contenere livelli, ma ora le probabilità risultano essere , , e .
- (3p) Si progetti la codifica di sorgente ottima.
- (2p) È possibile progettare una codifica decodificabile tale per cui le lunghezze delle parole dopo la codifica di sorgente risultino bit, bit e bit?
Teoria usata: 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 →, 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 →, 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 →.
(4) Codice ottimo: Huffman
Le probabilità date sommano : l'ottava (non scritta nel testo) è .
| Passo | Nodi disponibili | Unione |
|---|---|---|
| 1 | (nodo ) | |
| 2 | (nodo ) | |
| 3 | (nodo ) | |
| 4 | (nodo ) | |
| 5 | ||
| 6 | ||
| 7 | radice |
Etichettando con il ramo superiore e l'inferiore ad ogni unione, una possibile assegnazione è
| Simbolo | Parola | Lunghezza | |
|---|---|---|---|
Lunghezza media (somma pesata, e controllo con la somma dei nodi interni): Entropia: bit. Efficienza , contro della lunghezza fissa a bit; la lunghezza media rispetta (Shannon). Altre scelte a parità di probabilità danno lunghezze diverse (per esempio bit anziché per qualche simbolo), ma sempre lo stesso .
(5) Le lunghezze
Si applica la disuguaglianza di Kraft-McMillan per un codice binario (): un codice decodificabile con queste lunghezze richiede La condizione non è soddisfatta, quindi non esiste nessun codice decodificabile (a maggior ragione a prefisso) con quelle lunghezze. Si vede anche sull'albero: le due parole da bit occupano delle foglie possibili, le quattro da bit occupano l'altro , e non resta posto per le due da bit (che ne chiederebbero ). Con queste lunghezze la lunghezza media sarebbe bit (assegnandole in ordine di probabilità), che non contraddice Shannon (): è solo Kraft a escluderlo.
(Verificato con Python: Huffman , , ; Kraft .)
Errori comuni
- Dimenticare di ricavare ().
- Unire i nodi più probabili, o non riordinare dopo una fusione.
- Concludere che un codice con Kraft sia automaticamente decodificabile, o dire che con Kraft si può "aggiustare": se la somma supera la risposta è netta, no.
- Calcolare con le parole del codice senza pesarle per .
Versione ripasso
Testo. , : codifica ottima; esistono lunghezze ? (gennaio 2025).
- (4) (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 →) . Unioni: , , , , , , . Lunghezze (); (= somma dei nodi interni); , ( con 3 bit fissi).
- (5) (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 →) Kraft: non esiste alcun codice decodificabile.
- Errori: manca ; unire i più probabili; Kraft non prova la decodificabilità di un codice dato.