Esercizio - codice di Hamming (63,57), bound di Hamming e bit di parità aggiunto (secondo compitino dell'11 gennaio 2022, es. 132)
In questa pagina 5
Testo (tema d'esame del secondo compitino dell'11 gennaio 2022, corso di Fondamenti di Telecomunicazioni, Ing. Informatica UniPD). Considerare un codice di correzione d'errore a blocco binario con lunghezza dei blocchi di ingresso al codificatore di bit e lunghezza delle parole di codice di bit.
- Dimostrare che esiste un codice di Hamming con le caratteristiche indicate.
- Calcolare il numero massimo di errori corretti e rilevati sempre da questo codice di Hamming.
- Scegliendo una matrice di parità in forma sistematica con colonne aventi peso di Hamming decrescente da sinistra a destra, a) descrivere la matrice (quali righe o colonne si trovano, senza scrivere la matrice) e b) decodificare la sequenza con il primo bit uguale a , gli ultimi bit uguali a e tutti gli altri bit sono zeri.
- Allungare tutte le parole di codice con un bit così calcolato dove sono i bit della sequenza in ingresso al codificatore. Dimostrare che questo nuovo codice ha distanza minima strettamente minore di (suggerimento: utilizzare un opportuno bound).
Teoria usata: 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 →, 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 →.
1. Esistenza del codice di Hamming
Un codice di Hamming con bit di parola e di informazione esiste se e solo se (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 →): le colonne di sono tutte le sequenze non nulle di bit, e queste sono . Qui , , e Quindi esiste. Equivalentemente il bound di Hamming con vale con l'uguaglianza: .
2. Errori corretti e rivelati
Un codice di Hamming ha . Quindi corregge sempre errore e rivela sempre errori.
3. Matrice di parità sistematica a pesi decrescenti
a) Descrizione. ha righe e colonne (), in forma sistematica .
- Le ultime colonne sono quelle dell'identità : sequenze di peso .
- Le prime colonne sono tutte le altre sequenze non nulle di bit, cioè quelle di peso , e sono tutte diverse. Le sequenze di bit con peso sono : di peso , di peso , di peso , di peso , di peso , in tutto ✓.
- Con il peso decrescente da sinistra a destra: la prima colonna è (peso ), poi le colonne di peso , le di peso , le di peso , le di peso e infine, a destra, le colonne dell'identità (peso , il più basso). (Dentro lo stesso peso l'ordine non è fissato dal testo.)
b) Decodifica. La sequenza ha , gli ultimi sei bit (posizioni ) uguali a e tutti gli altri a . La sindrome è la somma delle colonne di nelle posizioni dei (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 →): (La somma delle colonne di è , uguale alla prima colonna di ; in ogni riga. Verificato con Python costruendo per intero.) La sindrome è nulla: è una parola di codice e la decodifica restituisce (nessun errore da correggere). È coerente con la struttura sistematica: ha le parità uguali alla prima colonna di , tutta di , quindi la parola è proprio seguito da zeri e da sei .
4. Il bit aggiunto non basta per
Il nuovo codice ha e lo stesso (il nuovo bit dipende dai bit di informazione).
Con il bound di Hamming. Se il nuovo codice avesse correggerebbe errori e dovrebbe soddisfare (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 →) Con , : e : La disuguaglianza è falsa (): un codice con non può esistere. Quindi . Detto con le sfere: servirebbero , cioè , falso.
Alternativa. Aggiungere un bit a un codice può far crescere al massimo di (), mai di : quindi .
Valore esatto. Il bit è la somma dei soli bit di informazione, non di tutta la parola. Nel codice di Hamming esiste una parola di peso con due nella parte di informazione e uno nella parte di parità: per esempio le colonne e (entrambe di peso , quindi tra le prime ) sommano a , la terza colonna dell'identità: la sequenza con tre in quelle posizioni è una parola (controllata con Python, ). Per questa parola : il peso resta . Quindi il nuovo codice ha (non ): la distanza è , e il tasso scende da a senza alcun vantaggio in capacità correttiva.
Errori comuni
- Verificare l'esistenza solo guardando : bisogna mostrare .
- Mettere nella parte sinistra di le sequenze di peso : quelle sono l'identità, a destra; la parte sinistra contiene le sequenze di peso .
- Cercare di "correggere" senza calcolare la sindrome: la sindrome nulla dice che è una parola.
- Credere che aggiungere un bit di parità di una parte dei bit alzi come la parità dell'intera parola: qui ( somma dei soli bit di informazione) la distanza resta .
Versione ripasso
Testo. , . Richiesti: esiste un Hamming?; errori corretti e rivelati; descrivere sistematica a pesi decrescenti e decodificare ; mostrare che con aggiunto .
- , : esiste ().
Punto 2: : corregge , rivela .
- , : ultime colonne ; le prime sono le sequenze di peso in ordine di peso decrescente: di peso (la prima, tutti ), di peso , di peso , di peso , di peso .
- : parola di codice, .
Punto 4
- Bound di Hamming con , : : (oppure: un bit in più alza al più di ).
- Vero valore (esiste una parola di peso con due nei bit di informazione, per cui ).
Dettagli di calcolo
- Colonne di per peso: di peso , di peso , di peso , di peso , di peso (somma ).
- ; . Parola di peso con : colonne e più la colonna .
Errori tipici
- Provare l'esistenza con la sola .
- Mettere le colonne di peso a sinistra.
- Credere che qualunque bit di parità aggiunto alzi .