Salta al contenuto
Note per Studenti Esercizio - codice di Hamming (63,57), bound di Hamming e bit di parità aggiunto (secondo compitino dell'11 gennaio 2022, es. 132)

Esercizio - codice di Hamming (63,57), bound di Hamming e bit di parità aggiunto (secondo compitino dell'11 gennaio 2022, es. 132)

Esame
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 5757 bit e lunghezza delle parole di codice di 6363 bit.

  1. Dimostrare che esiste un codice di Hamming con le caratteristiche indicate.
  2. Calcolare il numero massimo di errori corretti e rilevati sempre da questo codice di Hamming.
  3. 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 11, gli ultimi 66 bit uguali a 11 e tutti gli altri bit sono zeri.
  4. Allungare tutte le parole di codice con un bit così calcolato c64=∑i=157bi,c_{64}=\sum_{i=1}^{57}b_i, dove bib_i sono i bit della sequenza in ingresso al codificatore. Dimostrare che questo nuovo codice ha distanza minima strettamente minore di 55 (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 nn bit di parola e kk di informazione esiste se e solo se n=2n−k−1n=2^{n-k}-1 (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 HH sono tutte le sequenze non nulle di n−kn-k bit, e queste sono 2n−k−12^{n-k}-1. Qui n=63n=63, k=57k=57, n−k=6n-k=6 e 26−1=64−1=63=n.2^{6}-1=64-1=63=n. Quindi esiste. Equivalentemente il bound di Hamming con t=1t=1 vale con l'uguaglianza: 2k(1+n)=257⋅64=257⋅26=263=2n2^k(1+n)=2^{57}\cdot64=2^{57}\cdot2^6=2^{63}=2^n.

2. Errori corretti e rivelati

Un codice di Hamming ha dmin=3d_{min}=3. Quindi corregge sempre ⌊3−12⌋=1\left\lfloor\frac{3-1}2\right\rfloor=1 errore e rivela sempre dmin−1=2d_{min}-1=2 errori.

3. Matrice di parità sistematica a pesi decrescenti

a) Descrizione. HH ha n−k=6n-k=6 righe e n=63n=63 colonne (6×636\times63), in forma sistematica H=[A∣I6]H=[A\mid I_6].

  • Le ultime 66 colonne sono quelle dell'identità I6I_6: sequenze di peso 11.
  • Le prime 5757 colonne sono tutte le altre sequenze non nulle di 66 bit, cioè quelle di peso ≥2\ge2, e sono tutte diverse. Le sequenze di 66 bit con peso ww sono (6w)\binom6w: 11 di peso 66, 66 di peso 55, 1515 di peso 44, 2020 di peso 33, 1515 di peso 22, in tutto 1+6+15+20+15=571+6+15+20+15=57 ✓.
  • Con il peso decrescente da sinistra a destra: la prima colonna è [1,1,1,1,1,1]T[1,1,1,1,1,1]^T (peso 66), poi le 66 colonne di peso 55, le 1515 di peso 44, le 2020 di peso 33, le 1515 di peso 22 e infine, a destra, le 66 colonne dell'identità (peso 11, il più basso). (Dentro lo stesso peso l'ordine non è fissato dal testo.)

b) Decodifica. La sequenza γ\boldsymbol\gamma ha γ1=1\gamma_1=1, gli ultimi sei bit (posizioni 58,…,6358,\dots,63) uguali a 11 e tutti gli altri a 00. La sindrome è la somma delle colonne di HH nelle posizioni dei 11 (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 →): σ=h1+h58+⋯+h63⏟colonne di I6=[111111]+[111111]=[000000].\boldsymbol\sigma=\mathbf h_1+\underbrace{\mathbf h_{58}+\dots+\mathbf h_{63}}_{\text{colonne di }I_6}=\begin{bmatrix}1\\1\\1\\1\\1\\1\end{bmatrix}+\begin{bmatrix}1\\1\\1\\1\\1\\1\end{bmatrix}=\begin{bmatrix}0\\0\\0\\0\\0\\0\end{bmatrix}. (La somma delle colonne di I6I_6 è [1,…,1]T[1,\dots,1]^T, uguale alla prima colonna di HH; 1+1=01+1=0 in ogni riga. Verificato con Python costruendo HH per intero.) La sindrome è nulla: γ\boldsymbol\gamma è una parola di codice e la decodifica restituisce c^=γ\hat{\mathbf c}=\boldsymbol\gamma (nessun errore da correggere). È coerente con la struttura sistematica: b=[1,0,…,0]T\mathbf b=[1,0,\dots,0]^T ha le parità uguali alla prima colonna di AA, tutta di 11, quindi la parola è proprio 11 seguito da 5656 zeri e da sei 11.

4. Il bit aggiunto non basta per dmin=5d_{min}=5

Il nuovo codice ha n′=64n'=64 e lo stesso k=57k=57 (il nuovo bit dipende dai bit di informazione).

Con il bound di Hamming. Se il nuovo codice avesse dmin≥5d_{min}\ge5 correggerebbe t=2t=2 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 →) kn≤1−1nlog⁡2∑r=02(nr).\frac kn\le1-\frac1n\log_2\sum_{r=0}^{2}\binom nr. Con n=64n=64, k=57k=57: ∑=1+64+(642)=1+64+2016=2081\sum=1+64+\binom{64}2=1+64+2016=2081 e log⁡22081=11,02\log_22081=11{,}02: 5764=0,8906 ≤? 1−11,0264=0,8278.\frac{57}{64}=0{,}8906\ \overset?\le\ 1-\frac{11{,}02}{64}=0{,}8278. La disuguaglianza è falsa (0,8906>0,82780{,}8906>0{,}8278): un codice (64,57)(64,57) con dmin≥5d_{min}\ge5 non può esistere. Quindi dmin<5d_{min}<5. Detto con le sfere: servirebbero 257⋅2081≤2642^{57}\cdot2081\le2^{64}, cioè 2081≤27=1282081\le2^7=128, falso.

Alternativa. Aggiungere un bit a un codice può far crescere dmind_{min} al massimo di 11 (3→43\to4), mai di 22: quindi dmin≤4<5d_{min}\le4<5.

Valore esatto. Il bit c64c_{64} è la somma dei soli bit di informazione, non di tutta la parola. Nel codice di Hamming esiste una parola di peso 33 con due 11 nella parte di informazione e uno nella parte di parità: per esempio le colonne hi=[1,1,0,0,0,0]T\mathbf h_i=[1,1,0,0,0,0]^T e hj=[1,1,1,0,0,0]T\mathbf h_j=[1,1,1,0,0,0]^T (entrambe di peso ≥2\ge2, quindi tra le prime 5757) sommano a [0,0,1,0,0,0]T[0,0,1,0,0,0]^T, la terza colonna dell'identità: la sequenza con tre 11 in quelle posizioni è una parola (controllata con Python, Hc=0H\mathbf c=\mathbf 0). Per questa parola c64=bi+bj=1+1=0c_{64}=b_i+b_j=1+1=0: il peso resta 33. Quindi il nuovo codice ha dmin=3d_{min}=3 (non 44): la distanza è 3<53<5, e il tasso scende da 5763=0,905\frac{57}{63}=0{,}905 a 5764=0,891\frac{57}{64}=0{,}891 senza alcun vantaggio in capacità correttiva.

Errori comuni

  • Verificare l'esistenza solo guardando dmin=3d_{min}=3: bisogna mostrare n=2n−k−1n=2^{n-k}-1.
  • Mettere nella parte sinistra di HH le sequenze di peso 11: quelle sono l'identità, a destra; la parte sinistra contiene le sequenze di peso ≥2\ge2.
  • Cercare di "correggere" γ\boldsymbol\gamma senza calcolare la sindrome: la sindrome nulla dice che è una parola.
  • Credere che aggiungere un bit di parità di una parte dei bit alzi dmind_{min} come la parità dell'intera parola: qui (c64c_{64} somma dei soli bit di informazione) la distanza resta 33.

Versione ripasso

Testo. n=63n=63, k=57k=57. Richiesti: esiste un Hamming?; errori corretti e rivelati; descrivere HH sistematica a pesi decrescenti e decodificare γ=1 0…0 1 1 1 1 1 1\boldsymbol\gamma=1\,0\dots0\,1\,1\,1\,1\,1\,1; mostrare che con c64=∑i=157bic_{64}=\sum_{i=1}^{57}b_i aggiunto dmin<5d_{min}<5.

Punto 1 (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 →)

  • n−k=6n-k=6, 26−1=63=n2^6-1=63=n: esiste (257⋅64=2632^{57}\cdot64=2^{63}).

Punto 2: dmin=3d_{min}=3: corregge 11, rivela 22.

Punto 3 (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 →)

  • H=[A∣I6]H=[A\mid I_6], 6×636\times63: ultime 66 colonne =I6=I_6; le 5757 prime sono le sequenze di peso ≥2\ge2 in ordine di peso decrescente: 11 di peso 66 (la prima, tutti 11), 66 di peso 55, 1515 di peso 44, 2020 di peso 33, 1515 di peso 22.
  • σ=h1+h58+⋯+h63=1+1=0\boldsymbol\sigma=\mathbf h_1+\mathbf h_{58}+\dots+\mathbf h_{63}=\mathbf 1+\mathbf 1=\mathbf 0: parola di codice, c^=γ\hat{\mathbf c}=\boldsymbol\gamma.

Punto 4

  • Bound di Hamming con t=2t=2, n=64n=64: 5764=0,8906>1−log⁡2208164=0,8278\frac{57}{64}=0{,}8906>1-\frac{\log_22081}{64}=0{,}8278: dmin<5d_{min}<5 (oppure: un bit in più alza dmind_{min} al più di 11).
  • Vero valore dmin=3d_{min}=3 (esiste una parola di peso 33 con due 11 nei bit di informazione, per cui c64=0c_{64}=0).

Dettagli di calcolo

  • Colonne di AA per peso: 11 di peso 66, 66 di peso 55, 1515 di peso 44, 2020 di peso 33, 1515 di peso 22 (somma 5757).
  • log⁡22081=11,02\log_2 2081=11{,}02; 1−11,0264=0,8278<5764=0,89061-\frac{11{,}02}{64}=0{,}8278<\frac{57}{64}=0{,}8906. Parola di peso 33 con c64=0c_{64}=0: colonne [1,1,0,0,0,0]T[1,1,0,0,0,0]^T e [1,1,1,0,0,0]T[1,1,1,0,0,0]^T più la colonna e3\mathbf e_3.

Errori tipici

  • Provare l'esistenza con la sola dmin=3d_{min}=3.
  • Mettere le colonne di peso 11 a sinistra.
  • Credere che qualunque bit di parità aggiunto alzi dmind_{min}.

Teoria collegata