Esercizio - Kraft-McMillan, Huffman, due canali binari alternati e codice di Hamming (15,11) (compito del 13 febbraio 2026, es. 201)
In questa pagina 7
Testo (compito del 13 febbraio 2026, esercizio 201). Un segnale aleatorio viene campionato con periodo di campionamento di s e i campioni, considerati indipendenti, sono quantizzati con un quantizzatore uniforme a livelli, ottenendo:
- i valori quantizzati e , ciascuno con probabilità ;
- i valori quantizzati e , ciascuno con probabilità ;
- i valori quantizzati e , ciascuno con probabilità ;
- i valori quantizzati e , ciascuno con probabilità .
- Stabilire se è possibile trovare una codifica binaria a prefisso con lunghezze per i valori quantizzati e in caso affermativo determinare la migliore assegnazione delle lunghezze ai simboli quantizzati e la lunghezza media delle parole di codice.
- Qual è il bit rate minimo del canale per trasmettere il flusso di informazione emesso dal convertitore analogico-digitale?
- Determinare la codifica binaria ottima per i simboli quantizzati e la corrispondente lunghezza media delle parole di codice.
I campioni in uscita dall'ADC vengono ora codificati con la codifica a lunghezza fissa a lunghezza minima. Per la trasmissione i bit di uscita dall'ADC vengono mandati alternativamente su due canali binari simmetrici senza memoria, con lo stesso periodo di bit, ma con probabilità d'errore sul bit per uno e per l'altro.
- Qual è il massimo periodo di bit sui canali per avere una probabilità d'errore residua piccola a piacere se si introduce una codifica di canale prima dei canali?
- Se prima del canale si utilizza un codice di Hamming quanto vale il bit-rate sul canale? Qual è la distanza minima e la probabilità che all'uscita del canale peggiore si abbia una sequenza con errori?
- Scrivere una matrice di controllo di parità del codice di Hamming in forma sistematica e determinare la parola di codice decodificata se la sequenza ricevuta è .
Teoria usata: Codici a prefisso - Kraft-McMillan e limiti di Shannon sulla lunghezza mediaLa codifica di sorgente senza perdite associa a ogni parola emessa dalla sorgente una parola di codice binaria (o $M_y$-aria) di lunghezza variabile, in modo invertibile; la qualità si misura con la lunghezza media $L_y=\sum p_{\underline x}(\underline a),l(\underline a)$. In un codice a prefisso nessuna parola è l'inizio di un'altra, quindi la decodifica è istantanea. Kraft-McMillan: ogni codice decodificabile ha $\sum M_y^{-l_i}\le1$, e se interi $l_i$ la soddisfano esiste un codice a prefisso con quelle lunghezze. Shannon: $\frac{H(\underline x)}{\log_2M_y}\le L_y<\frac{H(\underline x)}{\log_2M_y}+1$ per il codice a prefisso ottimo, con $L_y=\frac{H}{\log_2M_y}$ solo se le probabilità sono potenze di $\frac1{M_y}$.Codici a prefisso - Kraft-McMillan e limiti di Shannon sulla lunghezza media → (punti 1-2), 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 → (punto 3), Tasso d'informazione, capacità di canale e teorema di ShannonUna sorgente che emette un simbolo ogni $T$ secondi ha tasso d'informazione $R=\frac{H_s}T$ [bit/s] ($H_s$ entropia per simbolo); un canale ha tasso $R(g)=\frac{I_s(x;y)}T\le R(x)$. La capacità è il massimo del tasso del canale su tutte le statistiche d'ingresso, $C=\max_{p_x}\frac{I(x;y)}T$ per un canale senza memoria. Teorema di Shannon: se il tasso nominale della sorgente è $R\le C$ esiste un codice di canale con probabilità d'errore piccola a piacere, se $R>C$ no. Capacità: BSC $C=\frac1T[1-h(P_{bit})]$, canale a cancellazione $C=\frac{1-\alpha}T$, AWGN reale $C=\frac1{2T}\log_2\left(1+\frac{E_s}{\sigma^2}\right)$; canali in parallelo sommano le capacità.Tasso d'informazione, capacità di canale e teorema di Shannon → (punto 4), Codici di Hamming e bound di HammingIl bound di Hamming (sphere packing) lega tasso e capacità di correzione: $2^k\sum_{r=0}^t\binom nr\le2^n$, cioè $\frac kn\le1-\frac1n\log_2\sum_{r=0}^t\binom nr$, perché le $2^k$ sfere di raggio $t$ attorno alle parole sono disgiunte. Un codice di Hamming ha per colonne di $H$ tutte le sequenze non nulle di $n-k$ bit, ciascuna una volta, quindi $n=2^{n-k}-1$ (parametri $(2^m-1,,2^m-1-m)$: $(7,4)$, $(15,11)$, $(63,57)$, $(255,247)$). Non ha colonne nulle né ripetute e tre colonne sommano a zero: $d_{min}=3$, corregge $1$ errore e ne rivela $2$. Rispetta il bound di Hamming con l'uguaglianza ($t=1$): è un codice perfetto, per cui la probabilità d'errore di parola sul BSC è esattamente $P(\text{almeno 2 errori})$.Codici di Hamming e bound di Hamming → e Matrice di controllo di parità, sindrome e cosetLa matrice di controllo di parità $H$ ($\ell\times n$) soddisfa $H\mathbf r=\mathbf 0\iff\mathbf r\in\mathcal C$; per un codice con generatrice $G$ ($n\times k$) vale $HG=0$ con $\operatorname{rango}(H)=n-k$, e se $G=\begin{bmatrix}I_k\A\end{bmatrix}$ allora $H=[A\mid I_{n-k}]$. La distanza minima è il minimo numero di colonne di $H$ linearmente dipendenti. La sindrome $\boldsymbol\sigma=H\boldsymbol\gamma$ della sequenza ricevuta $\boldsymbol\gamma=\mathbf c+\boldsymbol\varepsilon$ vale $H\boldsymbol\varepsilon$: dipende solo dall'errore. Le sequenze con la stessa sindrome formano un coset ($2^{n-k}$ coset di $2^k$ sequenze) e il decodificatore a minima distanza sceglie il coset leader, l'errore di peso minimo del coset: $\hat{\mathbf c}=\boldsymbol\gamma+\boldsymbol\varepsilon_{min}$. La probabilità di decodifica corretta sul BSC è la somma delle probabilità dei coset leader.Matrice di controllo di parità, sindrome e coset → (punti 5-6). Per il quantizzatore: 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 →.
Le probabilità sommano a ✓. Per comodità si indica in trentaduesimi: .
(1) Esiste un codice a prefisso con le lunghezze ?
Per Kraft-McMillan (Codici a prefisso - Kraft-McMillan e limiti di Shannon sulla lunghezza mediaLa codifica di sorgente senza perdite associa a ogni parola emessa dalla sorgente una parola di codice binaria (o $M_y$-aria) di lunghezza variabile, in modo invertibile; la qualità si misura con la lunghezza media $L_y=\sum p_{\underline x}(\underline a),l(\underline a)$. In un codice a prefisso nessuna parola è l'inizio di un'altra, quindi la decodifica è istantanea. Kraft-McMillan: ogni codice decodificabile ha $\sum M_y^{-l_i}\le1$, e se interi $l_i$ la soddisfano esiste un codice a prefisso con quelle lunghezze. Shannon: $\frac{H(\underline x)}{\log_2M_y}\le L_y<\frac{H(\underline x)}{\log_2M_y}+1$ per il codice a prefisso ottimo, con $L_y=\frac{H}{\log_2M_y}$ solo se le probabilità sono potenze di $\frac1{M_y}$.Codici a prefisso - Kraft-McMillan e limiti di Shannon sulla lunghezza media →) esiste un codice a prefisso binario con quelle lunghezze se e solo se : Sì, esiste. Migliore assegnazione: per minimizzare la lunghezza media si danno le parole più corte ai simboli più probabili (ordinando le probabilità in modo decrescente e le lunghezze in modo crescente, altrimenti un semplice scambio abbasserebbe ):
| Probabilità (in ) | ||||
|---|---|---|---|---|
| Lunghezza |
La coppia di probabilità uguali riceve una lunghezza e una ; è indifferente quale. La lunghezza media è
(2) Bit rate minimo
Il flusso di informazione prodotto dal convertitore è l'entropia per campione moltiplicata per i campioni al secondo. Frequenza di campionamento kHz. L'entropia dei valori quantizzati è (Qui , , , : la somma è e raddoppiata dà .) Per il teorema di Shannon sulla codifica di sorgente nessun codice può usare in media meno di bit per campione, quindi il bit rate minimo è (Per confronto, la codifica a lunghezza fissa con bit darebbe kbit/s.)
(3) Codice ottimo: Huffman
| Passo | Nodi disponibili (in ) | Unione |
|---|---|---|
| 1 | (nodo ) | |
| 2 | (nodo ; vale ) | |
| 3 | (nodo ; vale ) | |
| 4 | (nodo ) | |
| 5 | (nodo ) | |
| 6 | (nodo ) | |
| 7 | radice |
(I numeri sono in trentaduesimi. Al passo 2 i nodi minimi sono e un ( o ); si sceglie , la scelta opposta dà lo stesso .) Etichettando i rami si ottiene, per esempio,
| Valore | Parola | Lunghezza | |
|---|---|---|---|
Controllo con i nodi interni (in trentaduesimi): ✓. Rispetto al punto 1 () si risparmia mezzo bit; il limite ✓, efficienza .
(4) Massimo periodo di bit sui due canali
Con la codifica a lunghezza fissa minima i livelli usano bit, quindi il flusso all'uscita dell'ADC è kHz kbit/s. I bit vengono mandati alternativamente su due canali: ciascun canale riceve metà dei bit, cioè di informazione. Ogni canale è un BSC senza memoria (Tasso d'informazione, capacità di canale e teorema di ShannonUna sorgente che emette un simbolo ogni $T$ secondi ha tasso d'informazione $R=\frac{H_s}T$ [bit/s] ($H_s$ entropia per simbolo); un canale ha tasso $R(g)=\frac{I_s(x;y)}T\le R(x)$. La capacità è il massimo del tasso del canale su tutte le statistiche d'ingresso, $C=\max_{p_x}\frac{I(x;y)}T$ per un canale senza memoria. Teorema di Shannon: se il tasso nominale della sorgente è $R\le C$ esiste un codice di canale con probabilità d'errore piccola a piacere, se $R>C$ no. Capacità: BSC $C=\frac1T[1-h(P_{bit})]$, canale a cancellazione $C=\frac{1-\alpha}T$, AWGN reale $C=\frac1{2T}\log_2\left(1+\frac{E_s}{\sigma^2}\right)$; canali in parallelo sommano le capacità.Tasso d'informazione, capacità di canale e teorema di Shannon →) con capacità per uso : Se si introduce una codifica di canale di rate prima di ciascun canale, e se è il periodo di bit sul canale (cioè dopo il codificatore), le parole di bit portano bit di informazione: , cioè . Per il teorema di Shannon una probabilità d'errore residua piccola a piacere è possibile se per entrambi i canali, quindi Il canale peggiore (quello con ) fissa il limite: s, cioè un bit ogni s per canale ( kbit/s per canale).
Differenza con la soluzione del corso. La soluzione del corso riporta s. Il valore corretto, con gli stessi dati ( e kbit/s), è s: il numero riportato è volte più grande ed è incompatibile con quei dati (con s il rate del codice sarebbe , impossibile). La soluzione del corso usa comunque la stessa formula, .
(5) Hamming : bit-rate, distanza minima e probabilità di errori
Un codice di Hamming con ha bit di parità e bit di informazione (Codici di Hamming e bound di HammingIl bound di Hamming (sphere packing) lega tasso e capacità di correzione: $2^k\sum_{r=0}^t\binom nr\le2^n$, cioè $\frac kn\le1-\frac1n\log_2\sum_{r=0}^t\binom nr$, perché le $2^k$ sfere di raggio $t$ attorno alle parole sono disgiunte. Un codice di Hamming ha per colonne di $H$ tutte le sequenze non nulle di $n-k$ bit, ciascuna una volta, quindi $n=2^{n-k}-1$ (parametri $(2^m-1,,2^m-1-m)$: $(7,4)$, $(15,11)$, $(63,57)$, $(255,247)$). Non ha colonne nulle né ripetute e tre colonne sommano a zero: $d_{min}=3$, corregge $1$ errore e ne rivela $2$. Rispetta il bound di Hamming con l'uguaglianza ($t=1$): è un codice perfetto, per cui la probabilità d'errore di parola sul BSC è esattamente $P(\text{almeno 2 errori})$.Codici di Hamming e bound di Hamming →). Il rate è . I kbit/s di informazione (sul flusso complessivo) diventano Tutti i codici di Hamming hanno distanza minima (rilevano errori e ne correggono ). Sul canale peggiore () la probabilità di avere esattamente errori in una sequenza di bit è Qui .
(6) Matrice di controllo e decodifica
Le colonne della matrice di controllo di parità () di un codice di Hamming sono tutte le sequenze binarie non nulle di lunghezza , ciascuna una sola volta. In forma sistematica le ultime quattro colonne sono quelle di peso (matrice identità) e le prime undici sono le sequenze di peso almeno . Una scelta valida è
(Le colonne - sono e coprono tutti i pesi ; le altre sono .)
Decodifica. La sindrome di (con bit pari a solo nelle posizioni ) è la somma delle colonne di , che sono le colonne di : La sindrome non è nulla, quindi non è una parola di codice. Un codice di Hamming corregge un errore: la sindrome è uguale alla colonna di nella posizione dell'errore. è la colonna di , quindi l'errore più probabile (coset leader, Matrice di controllo di parità, sindrome e cosetLa matrice di controllo di parità $H$ ($\ell\times n$) soddisfa $H\mathbf r=\mathbf 0\iff\mathbf r\in\mathcal C$; per un codice con generatrice $G$ ($n\times k$) vale $HG=0$ con $\operatorname{rango}(H)=n-k$, e se $G=\begin{bmatrix}I_k\A\end{bmatrix}$ allora $H=[A\mid I_{n-k}]$. La distanza minima è il minimo numero di colonne di $H$ linearmente dipendenti. La sindrome $\boldsymbol\sigma=H\boldsymbol\gamma$ della sequenza ricevuta $\boldsymbol\gamma=\mathbf c+\boldsymbol\varepsilon$ vale $H\boldsymbol\varepsilon$: dipende solo dall'errore. Le sequenze con la stessa sindrome formano un coset ($2^{n-k}$ coset di $2^k$ sequenze) e il decodificatore a minima distanza sceglie il coset leader, l'errore di peso minimo del coset: $\hat{\mathbf c}=\boldsymbol\gamma+\boldsymbol\varepsilon_{min}$. La probabilità di decodifica corretta sul BSC è la somma delle probabilità dei coset leader.Matrice di controllo di parità, sindrome e coset →) è e la parola decodificata è Verifica: colonna + colonne - ✓: è una parola di codice (i primi bit, , sono l'informazione e gli ultimi , , la parità).
(Verificato con Python: Kraft , del punto 1 , , Huffman , , , s, ; la matrice ha come colonne tutte le sequenze non nulle e .)
Errori comuni
- Per Kraft, dire " quindi il codice è ottimo": esprime solo l'esistenza di un codice a prefisso con quelle lunghezze, non la sua ottimalità.
- Assegnare le lunghezze corte ai simboli meno probabili.
- Usare bit (lunghezza fissa) per il bit rate minimo: il minimo è kbit/s.
- Al punto 4 prendere la media dei due canali o il canale migliore: serve il peggiore.
- Al punto 4 dimenticare che ciascun canale porta metà dei bit.
- Per la distanza minima dire o simili: per i codici di Hamming è sempre .
- Non controllare che la sindrome coincida con una colonna di (qui la prima).
Versione ripasso
Testo. Quantizzatore a livelli, per , campioni ogni s. Lunghezze : esiste il prefisso, assegnazione e ; bit rate minimo; Huffman; con lunghezza fissa e due BSC alternati (, ) massimo periodo di bit; Hamming : bit-rate, , ; sistematica e decodifica di .
- (1) (Codici a prefisso - Kraft-McMillan e limiti di Shannon sulla lunghezza mediaLa codifica di sorgente senza perdite associa a ogni parola emessa dalla sorgente una parola di codice binaria (o $M_y$-aria) di lunghezza variabile, in modo invertibile; la qualità si misura con la lunghezza media $L_y=\sum p_{\underline x}(\underline a),l(\underline a)$. In un codice a prefisso nessuna parola è l'inizio di un'altra, quindi la decodifica è istantanea. Kraft-McMillan: ogni codice decodificabile ha $\sum M_y^{-l_i}\le1$, e se interi $l_i$ la soddisfano esiste un codice a prefisso con quelle lunghezze. Shannon: $\frac{H(\underline x)}{\log_2M_y}\le L_y<\frac{H(\underline x)}{\log_2M_y}+1$ per il codice a prefisso ottimo, con $L_y=\frac{H}{\log_2M_y}$ solo se le probabilità sono potenze di $\frac1{M_y}$.Codici a prefisso - Kraft-McMillan e limiti di Shannon sulla lunghezza media →) Kraft : esiste. Lunghezze corte alle probabilità alte: bit.
- (2) bit, kHz: kbit/s.
- (3) (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 →) Nodi in : ; bit; parole .
- (4) (Tasso d'informazione, capacità di canale e teorema di ShannonUna sorgente che emette un simbolo ogni $T$ secondi ha tasso d'informazione $R=\frac{H_s}T$ [bit/s] ($H_s$ entropia per simbolo); un canale ha tasso $R(g)=\frac{I_s(x;y)}T\le R(x)$. La capacità è il massimo del tasso del canale su tutte le statistiche d'ingresso, $C=\max_{p_x}\frac{I(x;y)}T$ per un canale senza memoria. Teorema di Shannon: se il tasso nominale della sorgente è $R\le C$ esiste un codice di canale con probabilità d'errore piccola a piacere, se $R>C$ no. Capacità: BSC $C=\frac1T[1-h(P_{bit})]$, canale a cancellazione $C=\frac{1-\alpha}T$, AWGN reale $C=\frac1{2T}\log_2\left(1+\frac{E_s}{\sigma^2}\right)$; canali in parallelo sommano le capacità.Tasso d'informazione, capacità di canale e teorema di Shannon →) kbit/s, kbit/s per canale. : canale peggiore ; s (il corso riporta s: errore).
- (5) (Codici di Hamming e bound di HammingIl bound di Hamming (sphere packing) lega tasso e capacità di correzione: $2^k\sum_{r=0}^t\binom nr\le2^n$, cioè $\frac kn\le1-\frac1n\log_2\sum_{r=0}^t\binom nr$, perché le $2^k$ sfere di raggio $t$ attorno alle parole sono disgiunte. Un codice di Hamming ha per colonne di $H$ tutte le sequenze non nulle di $n-k$ bit, ciascuna una volta, quindi $n=2^{n-k}-1$ (parametri $(2^m-1,,2^m-1-m)$: $(7,4)$, $(15,11)$, $(63,57)$, $(255,247)$). Non ha colonne nulle né ripetute e tre colonne sommano a zero: $d_{min}=3$, corregge $1$ errore e ne rivela $2$. Rispetta il bound di Hamming con l'uguaglianza ($t=1$): è un codice perfetto, per cui la probabilità d'errore di parola sul BSC è esattamente $P(\text{almeno 2 errori})$.Codici di Hamming e bound di Hamming →) kbit/s; ; .
- (6) (Matrice di controllo di parità, sindrome e cosetLa matrice di controllo di parità $H$ ($\ell\times n$) soddisfa $H\mathbf r=\mathbf 0\iff\mathbf r\in\mathcal C$; per un codice con generatrice $G$ ($n\times k$) vale $HG=0$ con $\operatorname{rango}(H)=n-k$, e se $G=\begin{bmatrix}I_k\A\end{bmatrix}$ allora $H=[A\mid I_{n-k}]$. La distanza minima è il minimo numero di colonne di $H$ linearmente dipendenti. La sindrome $\boldsymbol\sigma=H\boldsymbol\gamma$ della sequenza ricevuta $\boldsymbol\gamma=\mathbf c+\boldsymbol\varepsilon$ vale $H\boldsymbol\varepsilon$: dipende solo dall'errore. Le sequenze con la stessa sindrome formano un coset ($2^{n-k}$ coset di $2^k$ sequenze) e il decodificatore a minima distanza sceglie il coset leader, l'errore di peso minimo del coset: $\hat{\mathbf c}=\boldsymbol\gamma+\boldsymbol\varepsilon_{min}$. La probabilità di decodifica corretta sul BSC è la somma delle probabilità dei coset leader.Matrice di controllo di parità, sindrome e coset →) con colonne tutte le sequenze non nulle. somma delle colonne - colonna : errore in posizione , .
- Dettagli (1)-(3). In : . Assegnazione : . Entropia: . Huffman: unioni (in ), lunghezze ; ; ; ; ; .
- Dettagli (4). Capacità per bit () e (); deve stare sotto il minimo, cioè il canale peggiore; s, rate del codice .
- Dettagli (5)-(6). , . Colonne di : tutte le sequenze non nulle; colonne - di peso (), - identità. Verifica .
- Errori: lunghezze corte ai meno probabili; media dei canali al posto del peggiore; scordare la metà dei bit per canale.
Teoria collegata
- Codici a prefisso - Kraft-McMillan e limiti di Shannon sulla lunghezza media
- Codici di Shannon, Huffman ed Elias e codifica aritmetica
- Tasso d'informazione, capacità di canale e teorema di Shannon
- Codici di Hamming e bound di Hamming
- Matrice di controllo di parità, sindrome e coset
- Quantizzazione uniforme - saturazione, errore granulare e SNR di quantizzazione