Salta al contenuto
Note per Studenti Esercizio - codice (6,3) accorciato di Hamming, sindrome e peso minimo (esame del 6 settembre 2022, es. 146)

Esercizio - codice (6,3) accorciato di Hamming, sindrome e peso minimo (esame del 6 settembre 2022, es. 146)

Esame
In questa pagina 6

Testo (tema d'esame del 6 settembre 2022, corso di Fondamenti di Telecomunicazioni, Ing. Informatica UniPD). Si consideri la seguente matrice di parità di un codice a correzione d'errore binario H=[011100101010110001].H=\begin{bmatrix}0&1&1&1&0&0\\1&0&1&0&1&0\\1&1&0&0&0&1\end{bmatrix}.

  1. Scrivere la matrice generatrice del codice.
  2. Dire se il codice è di Hamming, motivando la risposta.
  3. Calcolare la sindrome della sequenza [1 0 0 1 0 1]T[1\ 0\ 0\ 1\ 0\ 1]^T e dire se la sequenza è una parola di codice.
  4. Dimostrare che il peso minimo del codice è uguale a 33 e trovare una parola di codice di peso 33.
  5. Il codice è utilizzato su canale binario simmetrico senza memoria con probabilità di errore sul bit di 0,10{,}1. Calcolare la probabilità che, trasmettendo la sequenza identicamente nulla, si riceva la parola di codice trovata al punto precedente.

Teoria usata: 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 →, 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 →, Codici a blocco lineari - matrice generatrice, forma sistematica e bound di SingletonUn codice a blocco è lineare se le sue $2^k$ parole formano un sottospazio dello spazio delle sequenze binarie di $n$ bit, con la somma modulo 2 (XOR) senza riporto: contiene la parola nulla ed è chiuso rispetto alla somma. Si descrive con la matrice generatrice $G$ ($n\times k$, rango $k$, $\mathbf c=G\mathbf b$, le colonne sono parole di codice); le operazioni sulle colonne non cambiano il codice, le permutazioni delle righe permutano i bit e non cambiano le prestazioni sul canale senza memoria. In forma sistematica $G=\begin{bmatrix}I_k\A\end{bmatrix}$ e $\mathbf c=[\mathbf b;A\mathbf b]$. Per i codici lineari la distanza minima è il peso di Hamming minimo delle parole non nulle e vale il bound di Singleton $d_{min}\le n-k+1$.Codici a blocco lineari - matrice generatrice, forma sistematica e bound di Singleton →, Controllo d'errore - ARQ, FEC e codici a blocco sul canale binario simmetricoPer proteggere i bit dagli errori si può chiedere la ritrasmissione (ARQ, serve il canale di ritorno), aggiungere ridondanza per correggere (FEC) o unire le due cose (HARQ). Un codice a blocco $(n,k)$ trasforma $k$ bit in una parola di $n>k$ bit scelta tra $2^k$ parole su $2^n$ sequenze; modulatore, canale e demodulatore equivalgono a un canale binario simmetrico senza memoria con probabilità d'errore sul bit $P_{bit}$. Per $P_{bit}<\frac12$ il decodificatore ML sceglie la parola a minima distanza di Hamming; con distanza minima $d_{min}$ si correggono sempre $t=\lfloor\frac{d_{min}-1}{2}\rfloor$ errori e se ne rivelano sempre $d_{min}-1$. Il tasso è $R=\frac kn$ e la probabilità d'errore di parola è limitata da $P(\text{più di }t\text{ errori})$. L'ARQ ha efficienza $S_{SW}$, $S_{GBN}$, $S_{SR}$ in funzione di $t_P$, $t_A$, $\tau_P$ e $p$.Controllo d'errore - ARQ, FEC e codici a blocco sul canale binario simmetrico →.

1. Matrice generatrice

HH ha n=6n=6 colonne e 33 righe; le ultime tre colonne sono [1,0,0]T,[0,1,0]T,[0,0,1]T[1,0,0]^T,[0,1,0]^T,[0,0,1]^T, cioè I3I_3: H=[A∣I3]H=[A\mid I_3] è in forma sistematica con n−k=3n-k=3, k=3k=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 →) e A=[011101110].A=\begin{bmatrix}0&1&1\\1&0&1\\1&1&0\end{bmatrix}. La generatrice è G=[I3A]G=\begin{bmatrix}I_3\\A\end{bmatrix}: G=[100010001011101110].G=\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\\0&1&1\\1&0&1\\1&1&0\end{bmatrix}. Le parità sono c4=b2+b3c_4=b_2+b_3, c5=b1+b3c_5=b_1+b_3, c6=b1+b2c_6=b_1+b_2. Le 88 parole sono 000000, 001110, 010101, 011011, 100011, 101101, 110110, 111000000000,\ 001110,\ 010101,\ 011011,\ 100011,\ 101101,\ 110110,\ 111000 (HG=0HG=0 e nucleo di HH verificati con Python).

2. È un codice di Hamming?

Un codice di Hamming ha per colonne di HH tutte le sequenze non nulle lunghe n−kn-k (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 →). Qui n−k=3n-k=3 e le sequenze non nulle di 33 bit sono 23−1=72^3-1=7, ma HH ha solo 66 colonne: [0,1,1]T,[1,0,1]T,[1,1,0]T,[1,0,0]T,[0,1,0]T,[0,0,1]T[0,1,1]^T,[1,0,1]^T,[1,1,0]^T,[1,0,0]^T,[0,1,0]^T,[0,0,1]^T. Manca [1,1,1]T[1,1,1]^T. Quindi non è un codice di Hamming: condizione n=2n−k−1n=2^{n-k}-1 non soddisfatta (6≠76\ne7).

È un codice di Hamming (7,4)(7,4) accorciato: si toglie la colonna [1,1,1]T[1,1,1]^T da HH (equivale a tenere solo le parole con un bit nullo e a eliminarlo) e restano n=6n=6, k=3k=3. Conserva dmin=3d_{min}=3 (colonne ancora distinte e non nulle) ma non è perfetto: la sindrome [1,1,1]T[1,1,1]^T non corrisponde a nessun errore singolo.

3. Sindrome di [1,0,0,1,0,1]T[1,0,0,1,0,1]^T

La sindrome è la somma modulo 22 delle colonne di HH nelle posizioni dove la sequenza ha un 11: posizioni 1,4,61,4,6. σ=h1+h4+h6=[011]+[100]+[001]=[110].\boldsymbol\sigma=\mathbf h_1+\mathbf h_4+\mathbf h_6=\begin{bmatrix}0\\1\\1\end{bmatrix}+\begin{bmatrix}1\\0\\0\end{bmatrix}+\begin{bmatrix}0\\0\\1\end{bmatrix}=\begin{bmatrix}1\\1\\0\end{bmatrix}. (riga per riga: 0+1+0=10+1+0=1; 1+0+0=11+0+0=1; 1+0+1=01+0+1=0 ✓.) La sindrome è diversa da 0\mathbf 0: non è una parola di codice. Poiché [1,1,0]T=h3[1,1,0]^T=\mathbf h_3, un errore sul terzo bit la riporterebbe nel codice: [1,0,0,1,0,1]T+[0,0,1,0,0,0]T=[1,0,1,1,0,1]T=101101∈C[1,0,0,1,0,1]^T+[0,0,1,0,0,0]^T=[1,0,1,1,0,1]^T=101101\in\mathcal C.

4. Peso minimo 33

dmind_{min} è il minimo numero di colonne di HH che sommano a 0\mathbf 0 (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 per un codice lineare coincide con il peso minimo.

  • Nessuna colonna è nulla: non esistono parole di peso 11.
  • Le sei colonne sono tutte diverse: non esistono parole di peso 22 (due 11 in posizioni i≠ji\ne j darebbero hi+hj≠0\mathbf h_i+\mathbf h_j\ne\mathbf 0).

Quindi il peso minimo è almeno 33. Si trova una parola di peso 33 con tre colonne che sommano a zero: h1+h2+h3=[0,1,1]T+[1,0,1]T+[1,1,0]T=[0,0,0]T\mathbf h_1+\mathbf h_2+\mathbf h_3=[0,1,1]^T+[1,0,1]^T+[1,1,0]^T=[0,0,0]^T (riga per riga: 0+1+1=00+1+1=0, 1+0+1=01+0+1=0, 1+1+0=01+1+0=0). La sequenza con tre 11 nelle posizioni 1,2,31,2,3, cioè [1,1,1,0,0,0]T[1,1,1,0,0,0]^T, è una parola di codice di peso 33 (infatti b=[1,1,1]\mathbf b=[1,1,1] dà c4=c5=c6=1+1=0c_4=c_5=c_6=1+1=0). Il peso minimo è esattamente 33. Le parole di peso 33 sono quattro: 111000111000, 001110001110, 010101010101, 100011100011. Lo spettro dei pesi (Python) è: 11 parola di peso 00, 44 di peso 33 e 33 di peso 44 (011011011011, 101101101101, 110110110110), in tutto 88.

5. Probabilità di ricevere la parola trovata

Si trasmette 0=000000\mathbf 0=000000 e si riceve 111000111000: bit diversi nelle posizioni 1,2,31,2,3, quindi dH=3d_H=3, e nelle altre 33 posizioni i bit coincidono. Sul BSC senza memoria P[ξ=111000∣c=0]=Pbit 3(1−Pbit) 3=0,13⋅0,93=7,29⋅10−4.P[\boldsymbol\xi=111000\mid\mathbf c=\mathbf 0]=P_{bit}^{\,3}(1-P_{bit})^{\,3}=0{,}1^3\cdot0{,}9^3=7{,}29\cdot10^{-4}. (La soluzione del corso scrive "su 55 bit" ma la lunghezza è n=6n=6: il calcolo 0,13⋅0,93=7,3⋅10−40{,}1^3\cdot0{,}9^3=7{,}3\cdot10^{-4} è lo stesso.) È la probabilità che il canale commetta proprio quei 33 errori; ciascuna delle 44 parole di peso 33 ha la stessa probabilità.

Errori comuni

  • Dire che è un Hamming perché ha dmin=3d_{min}=3: serve che HH contenga tutte le colonne non nulle (n=2n−k−1n=2^{n-k}-1).
  • Calcolare la sindrome con GG o con una riga sola di HH: serve il prodotto HξH\boldsymbol\xi completo.
  • Prendere Pbit3P_{bit}^3 senza il fattore (1−Pbit)3(1-P_{bit})^3 per i bit corretti.
  • Pensare che hi+hj=0\mathbf h_i+\mathbf h_j=\mathbf 0 possa valere con colonne diverse: sommando due colonne diverse non si ottiene mai 0\mathbf 0.

Versione ripasso

Testo. H=[011100101010110001]H=\begin{bmatrix}0&1&1&1&0&0\\1&0&1&0&1&0\\1&1&0&0&0&1\end{bmatrix}. Richiesti: GG; se è un Hamming; sindrome di 100101100101; peso minimo 33 e una parola di peso 33; probabilità di ricevere questa parola trasmettendo 0\mathbf 0 su BSC con Pbit=0,1P_{bit}=0{,}1.

Punto 1 (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∣I3]H=[A\mid I_3], A=[011101110]A=\begin{bmatrix}0&1&1\\1&0&1\\1&1&0\end{bmatrix}; G=[I3A]=[100010001011101110]G=\begin{bmatrix}I_3\\A\end{bmatrix}=\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\\0&1&1\\1&0&1\\1&1&0\end{bmatrix}.

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

  • Non è Hamming: n=6≠23−1=7n=6\ne2^3-1=7, manca la colonna [1,1,1]T[1,1,1]^T. È un (7,4)(7,4) accorciato.

Punto 3

  • σ=h1+h4+h6=[1,1,0]T≠0\boldsymbol\sigma=\mathbf h_1+\mathbf h_4+\mathbf h_6=[1,1,0]^T\ne\mathbf 0: non è una parola (=h3=\mathbf h_3, errore sul bit 33 porta a 101101101101).

Punto 4

  • Colonne non nulle e distinte: nessun peso 11 o 22. h1+h2+h3=0\mathbf h_1+\mathbf h_2+\mathbf h_3=\mathbf 0: parola 111000111000 di peso 33.

Punto 5

  • dH(0,111000)=3d_H(\mathbf 0,111000)=3: Pbit3(1−Pbit)3=7,29⋅10−4P_{bit}^3(1-P_{bit})^3=7{,}29\cdot10^{-4}.

Dettagli di calcolo

  • Parole: 000000,001110,010101,011011,100011,101101,110110,111000000000,001110,010101,011011,100011,101101,110110,111000; pesi 33 (quattro) e 44 (tre).
  • Sindrome 111111 senza errori singoli: tre leader di peso 22 (001001001001, 010010010010, 100100100100); P(E)=1−[(1−p)6+6p(1−p)5+p2(1−p)4]=0,1077P(E)=1-[(1-p)^6+6p(1-p)^5+p^2(1-p)^4]=0{,}1077 a p=0,1p=0{,}1.

Errori tipici

  • Chiamare Hamming un codice con dmin=3d_{min}=3 senza controllare n=2n−k−1n=2^{n-k}-1.
  • Dimenticare (1−Pbit)3(1-P_{bit})^{3} per i bit giusti.

Teoria collegata