Salta al contenuto
Note per Studenti Matrice di controllo di parità, sindrome e coset

Matrice di controllo di parità, sindrome e coset

In questa pagina 9

La matrice generatrice (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 →) serve a codificare. Per decodificare su un canale binario simmetrico (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 →) occorre trovare, per una sequenza ricevuta qualsiasi, la parola di codice più vicina in distanza di Hamming. Confrontare la sequenza con tutte le 2k2^k parole è impraticabile; la matrice di controllo di parità trasforma il problema in un calcolo di poche righe.

Versione per Ing. Elettronica: Codici a blocco lineari - matrice generatrice, controllo di parità, sindrome e codici di HammingUn codice a blocco è lineare se la somma (bit a bit, modulo 2) di due parole di codice è una parola di codice. Si descrive con la matrice generatrice $G$ ($k\times n$, $\mathbf c=\mathbf mG$) e con la matrice di controllo di parità $H$ ($(n-k)\times n$, $G H^T=0$); in forma sistematica $G=[I_k\mid P]$ e $H=[P^T\mid I_{n-k}]$. La distanza minima è il peso minimo delle parole non nulle. La sindrome $\mathbf s=\mathbf rH^T$ dipende solo dall'errore: se è nulla la parola è valida, altrimenti identifica l'errore (un solo errore ha per sindrome la colonna di $H$ corrispondente). I codici di Hamming $(2^m-1,,2^m-1-m)$ hanno $d_{min}=3$.Codici a blocco lineari - matrice generatrice, controllo di parità, sindrome e codici di Hamming → (con i vettori per riga: s=rHT\mathbf s=\mathbf rH^T). Per Ing. delle Telecomunicazioni: Codici a blocco lineari e sindromeUn codice a blocco è lineare se la somma (XOR) di due parole di codice è una parola di codice: allora le parole formano un sottospazio di $\mathbb Z_2^n$. Si descrive con la matrice generatrice $G$ ($n\times k$, $\mathbf c=G\mathbf b$; in forma sistematica $G=\binom{I_k}{A}$) e con la matrice di controllo $H$ ($(n-k)\times n$, $H\mathbf c=\mathbf 0$ se e solo se $\mathbf c\in\mathcal C$; per $G$ sistematica $H=[A\mid I_{n-k}]$). La distanza minima è il peso minimo delle parole non nulle e vale $d_{min}\le n-k+1$ (Singleton). La sindrome $\boldsymbol\sigma=H\tilde{\mathbf c}$ dipende solo dall'errore; la decodifica a distanza minima è $\hat{\mathbf c}=\tilde{\mathbf c}-\varepsilon(\boldsymbol\sigma)$, dove $\varepsilon(\boldsymbol\sigma)$ è il coset leader (vettore di peso minimo con quella sindrome).Codici a blocco lineari e sindrome →.

1. Matrice di controllo di parità

Definizione. Una matrice HH di dimensioni ℓ×n\ell\times n è una matrice di controllo di parità del codice lineare C\mathcal C se Hr=0  ⟺  r∈C(r∈{0,1}n).H\mathbf r=\mathbf 0\iff\mathbf r\in\mathcal C\qquad(\mathbf r\in\{0,1\}^n).

Ogni riga di HH è un'equazione di controllo: la parola deve avere, nelle posizioni dove la riga ha un 11, un numero pari di 11. Per esempio la riga [1,1,1,0,0][1,1,1,0,0] dice r1⊕r2⊕r3=0r_1\oplus r_2\oplus r_3=0.

Non servono più di n−kn-k righe indipendenti. Se ℓ>n−k\ell>n-k, esistono n−kn-k righe indipendenti H′H' e le altre sono combinazioni delle prime: se H′r=0H'\mathbf r=\mathbf 0 allora anche le altre righe valgono 0\mathbf 0 per linearità. Per questo HH può avere più righe del necessario senza cambiare il codice.

Teorema. HH è una matrice di controllo di parità del codice con generatrice GG se e solo se HG=0erango⁡(H)=n−k.HG=0\qquad\text{e}\qquad\operatorname{rango}(H)=n-k. (dimensioni: HH è ℓ×n\ell\times n, GG è n×kn\times k, 00 è ℓ×k\ell\times k; da cui ℓ≥n−k\ell\ge n-k.)

Dimostrazione (⇐\Leftarrow). Se r∈C\mathbf r\in\mathcal C allora r=Gb\mathbf r=G\mathbf b e Hr=(HG)b=0H\mathbf r=(HG)\mathbf b=\mathbf 0. Viceversa, se Hr=0H\mathbf r=\mathbf 0, r\mathbf r sta nello spazio nullo di HH (Nucleo e immagineIl nucleo (vettori mandati in 0) e l'immagine (vettori raggiunti) di una funzione lineare sono sottospazi; f è iniettiva se e solo se Ker f = {0}; dim Ker f + dim Im f = dim V (nullità + rango); l'antimmagine di un vettore è una soluzione particolare più il nucleo.Nucleo e immagine →), che per il teorema della dimensione ha dimensione n−rango⁡(H)=kn-\operatorname{rango}(H)=k, quindi contiene 2k2^k sequenze. Ma le 2k2^k parole di codice stanno già nello spazio nullo (primo verso): non c'è posto per altre. Quindi Hr=0⇒r∈CH\mathbf r=\mathbf 0\Rightarrow\mathbf r\in\mathcal C.

(⇒\Rightarrow). Le colonne di GG sono parole di codice, e Hr=0H\mathbf r=\mathbf 0 per ogni parola, quindi HG=0HG=0. Lo spazio nullo di HH è il codice, di dimensione kk, quindi il rango di HH è n−kn-k. □\square

Forma sistematica. Se G=[IkA]G=\begin{bmatrix}I_k\\A\end{bmatrix} (AA è (n−k)×k(n-k)\times k), una matrice di controllo è H=[A∣In−k]((n−k)×n),H=\begin{bmatrix}A\mid I_{n-k}\end{bmatrix}\qquad((n-k)\times n), che ha rango n−kn-k per la presenza dell'identità e verifica HG=[A∣In−k][IkA]=A Ik+In−k A=A+A=0HG=\begin{bmatrix}A\mid I_{n-k}\end{bmatrix}\begin{bmatrix}I_k\\A\end{bmatrix}=A\,I_k+I_{n-k}\,A=A+A=0 (modulo 2 A+A=0A+A=0). È la regola più usata: dalla GG sistematica si legge HH e viceversa. Le equazioni di controllo sono quelle dei bit di parità: la riga ii di HH dice "bit di parità ii = combinazione di bit di informazione data dalla riga ii di AA".

Esempio. Il codice (5,2)(5,2) con G=[1001111011]G=\begin{bmatrix}1&0\\0&1\\1&1\\1&0\\1&1\end{bmatrix} ha A=[111011]A=\begin{bmatrix}1&1\\1&0\\1&1\end{bmatrix} e H=[111001001011001].H=\begin{bmatrix}1&1&1&0&0\\1&0&0&1&0\\1&1&0&0&1\end{bmatrix}. Le equazioni sono c3=c1⊕c2c_3=c_1\oplus c_2, c4=c1c_4=c_1, c5=c1⊕c2c_5=c_1\oplus c_2 (le tre parità della GG). Le 44 parole sono 00000, 01101, 10111, 1101000000,\,01101,\,10111,\,11010 e HH le annulla tutte (verificato con Python).

Se HH non è in forma sistematica. Si portano le colonne dell'identità a destra con permutazioni delle colonne: una permutazione delle colonne di HH permuta i bit del codice (altre parole, stesse distanze e stessa probabilità d'errore sul canale senza memoria). Si legge poi AA e si scrive G=[IA]G=\begin{bmatrix}I\\A\end{bmatrix} del codice permutato. Le operazioni sulle righe di HH (somme di righe, scambi) non cambiano il codice: sono le stesse equazioni scritte in altro modo.

2. Distanza minima dalle colonne di HH

Se c\mathbf c ha peso ww, il prodotto HcH\mathbf c è la somma modulo 2 delle ww colonne di HH nelle posizioni dei suoi 11. Quindi c∈C\mathbf c\in\mathcal C se e solo se quelle colonne sommano a zero:

Teorema. dmind_{min} è il minimo numero di colonne di HH linearmente dipendenti (che sommano a 0\mathbf 0).

Conseguenze, in ordine:

  • colonna nulla in HH: una parola di peso 11 (ei∈C\mathbf e_i\in\mathcal C), quindi dmin=1d_{min}=1;
  • due colonne uguali: la loro somma è 0\mathbf 0, quindi dmin≤2d_{min}\le2;
  • tutte le colonne non nulle e distinte: nessuna parola di peso 11 o 22, quindi dmin≥3d_{min}\ge3; vale dmin=3d_{min}=3 se esistono tre colonne con hi+hj=hk\mathbf h_i+\mathbf h_j=\mathbf h_k.

Nell'esempio precedente le colonne sono [1,1,1],[1,0,1],[1,0,0],[0,1,0],[0,0,1][1,1,1],[1,0,1],[1,0,0],[0,1,0],[0,0,1]: distinte e non nulle, quindi dmin≥3d_{min}\ge3; la somma della prima, della seconda e della quarta è [1,1,1]+[1,0,1]+[0,1,0]=0[1,1,1]+[1,0,1]+[0,1,0]=\mathbf 0 e dà la parola 1101011010 di peso 33: dmin=3d_{min}=3.

3. La sindrome

Definizione. Data la sequenza ricevuta γ\boldsymbol\gamma (lunga nn), la sindrome è σ=Hγ(n−k bit).\boldsymbol\sigma=H\boldsymbol\gamma\qquad(n-k\text{ bit}).

Poiché Hr=0H\mathbf r=\mathbf 0 solo sulle parole, σ=0  ⟺  γ∈C\boldsymbol\sigma=\mathbf 0\iff\boldsymbol\gamma\in\mathcal C: sindrome non nulla = errore rivelato. Scrivendo la ricevuta come parola trasmessa più errore, γ=c+ε\boldsymbol\gamma=\mathbf c+\boldsymbol\varepsilon (il bit ii di ε\boldsymbol\varepsilon è 11 se il canale ha sbagliato il bit ii):

σ=Hγ=Hc⏟0+Hε=Hε.\boldsymbol\sigma=H\boldsymbol\gamma=\underbrace{H\mathbf c}_{\mathbf 0}+H\boldsymbol\varepsilon=H\boldsymbol\varepsilon.

La sindrome dipende solo dall'errore, non dalla parola trasmessa. Se ε\boldsymbol\varepsilon ha un solo 11 in posizione jj, σ\boldsymbol\sigma è la colonna jj di HH. La decodifica a minima distanza cerca la parola c^\hat{\mathbf c} più vicina a γ\boldsymbol\gamma, cioè l'errore di peso minimo ε\boldsymbol\varepsilon tale che γ+ε∈C\boldsymbol\gamma+\boldsymbol\varepsilon\in\mathcal C; ma γ+ε∈C\boldsymbol\gamma+\boldsymbol\varepsilon\in\mathcal C equivale a H(γ+ε)=0H(\boldsymbol\gamma+\boldsymbol\varepsilon)=\mathbf 0, cioè a Hε=σH\boldsymbol\varepsilon=\boldsymbol\sigma.

Algoritmo di decodifica con la sindrome.

  1. Calcolare σ=Hγ\boldsymbol\sigma=H\boldsymbol\gamma.
  2. Tra tutti i vettori ε∈{0,1}n\boldsymbol\varepsilon\in\{0,1\}^n con Hε=σH\boldsymbol\varepsilon=\boldsymbol\sigma, sceglierne uno di peso di Hamming minimo, εmin\boldsymbol\varepsilon_{min}.
  3. Decodificare c^=γ+εmin\hat{\mathbf c}=\boldsymbol\gamma+\boldsymbol\varepsilon_{min}. (Poi b^\hat{\mathbf b} si legge dai primi kk bit se GG è sistematica.)

4. Coset e coset leader

La sindrome ha n−kn-k bit, quindi esistono 2n−k2^{n-k} sindromi possibili. Se ε0\boldsymbol\varepsilon_0 è un errore con sindrome σ\boldsymbol\sigma, gli altri errori con la stessa sindrome sono tutti e soli ε0+c,c∈C\boldsymbol\varepsilon_0+\mathbf c,\qquad\mathbf c\in\mathcal C perché H(ε0+c)=Hε0+0H(\boldsymbol\varepsilon_0+\mathbf c)=H\boldsymbol\varepsilon_0+\mathbf 0 (e viceversa la differenza di due errori con la stessa sindrome sta nel codice).

Definizione. L'insieme ε0+C\boldsymbol\varepsilon_0+\mathcal C degli errori con sindrome σ\boldsymbol\sigma è il coset associato a σ\boldsymbol\sigma. Un coset leader è un vettore del coset di peso di Hamming minimo.

Ci sono 2n−k2^{n-k} coset, ciascuno con 2k2^k vettori: in tutto 2n−k⋅2k=2n2^{n-k}\cdot2^k=2^n, cioè i coset partizionano lo spazio di tutte le sequenze (il coset della sindrome nulla è il codice stesso). Un coset può avere più leader dello stesso peso: sono sequenze equidistanti da più parole, e il decodificatore ML è in parità; la scelta di uno qualunque non cambia la probabilità d'errore.

Si costruisce la tabella dei coset leader: una riga per sindrome. La decodifica è: calcolo σ\boldsymbol\sigma, leggo εmin\boldsymbol\varepsilon_{min}, sommo. Occupa n(2n−k−1)n(2^{n-k}-1) bit (la riga della sindrome nulla non serve), contro i 2kn2^kn bit del confronto con tutte le parole.

Esempio 1 (codice di parità (3,2)(3,2)). G=[100111]G=\begin{bmatrix}1&0\\0&1\\1&1\end{bmatrix}, H=[1 1 1]H=[1\ 1\ 1] (una sola riga: n−k=1n-k=1). Ci sono 22 coset:

σ\boldsymbol\sigma leader altri vettori del coset
00 000000 101, 011, 110101,\ 011,\ 110
11 100100 010, 001, 111010,\ 001,\ 111

(i vettori con sindrome 11 sono quelli di peso dispari; 100100, 010010 e 001001 sono tutti di peso 11, scelto 100100.) Si riceve γ=111\boldsymbol\gamma=111: σ=1+1+1=1\boldsymbol\sigma=1+1+1=1, quindi εmin=100\boldsymbol\varepsilon_{min}=100 e c^=111+100=011\hat{\mathbf c}=111+100=011. Ma si poteva anche scegliere 010010 (decodificando 101101) o 001001 (decodificando 110110): le tre parole sono equidistanti da 111111. Il codice ha dmin=2d_{min}=2 e non corregge.

Esempio 2 (il codice (5,2)(5,2) della sezione 1). HH ha n−k=3n-k=3 righe, quindi 88 sindromi; i 88 coset sono (con la sindrome scritta come σ1σ2σ3\sigma_1\sigma_2\sigma_3):

σ\boldsymbol\sigma leader coset (tutti i 44 vettori)
000000 0000000000 00000, 01101, 11010, 1011100000,\ 01101,\ 11010,\ 10111
001001 0000100001 00001, 01100, 10110, 1101100001,\ 01100,\ 10110,\ 11011
010010 0001000010 00010, 11000, 10101, 0111100010,\ 11000,\ 10101,\ 01111
011011 0001100011 oppure 1010010100 00011, 10100, 01110, 1100100011,\ 10100,\ 01110,\ 11001
100100 0010000100 00100, 01001, 10011, 1111000100,\ 01001,\ 10011,\ 11110
101101 0100001000 01000, 00101, 10010, 1111101000,\ 00101,\ 10010,\ 11111
110110 0011000110 oppure 1000110001 00110, 10001, 01011, 1110000110,\ 10001,\ 01011,\ 11100
111111 1000010000 10000, 01010, 00111, 1110110000,\ 01010,\ 00111,\ 11101

I leader di peso 11 sono i cinque errori singoli: le loro sindromi sono le cinque colonne di HH (111,101,100,010,001111,101,100,010,001) e coincidono con le righe 111,101,100,010,001111,101,100,010,001 della tabella. Restano due sindromi, 011011 e 110110, che corrispondono a doppi errori (peso 22, con due leader ciascuna). La tabella si controlla con Python (enumerando i 3232 vettori).

Decodifiche. γ=11110\boldsymbol\gamma=11110: σ=Hγ=[1+1+1, 1+1, 1+1]=100\boldsymbol\sigma=H\boldsymbol\gamma=[1+1+1,\ 1+1,\ 1+1]=100, leader 0010000100, c^=11110+00100=11010∈C\hat{\mathbf c}=11110+00100=11010\in\mathcal C. γ=00111\boldsymbol\gamma=00111: σ=111\boldsymbol\sigma=111, leader 1000010000, c^=10111\hat{\mathbf c}=10111. γ=00011\boldsymbol\gamma=00011: σ=011\boldsymbol\sigma=011, leader 0001100011 (decodifica 0000000000) o 1010010100 (decodifica 1011110111): parità, entrambe le parole sono a distanza 22.

Il numero di coset con leader di peso 11 è il numero di colonne distinte e non nulle di HH (colonne uguali danno la stessa sindrome e stanno nello stesso coset): è la risposta alle domande sulle sindromi con più leader.

5. Probabilità di decodifica corretta con la tabella dei coset

Sul BSC il decodificatore a coset leader decide giusto se e solo se l'errore effettivo ε\boldsymbol\varepsilon è il leader scelto per la sua sindrome. Quindi, indipendentemente dalla parola trasmessa, P(C)=∑σP(ε=εσ)=∑σPbit wσ(1−Pbit) n−wσ,P(C)=\sum_{\boldsymbol\sigma}P(\boldsymbol\varepsilon=\boldsymbol\varepsilon_{\boldsymbol\sigma})=\sum_{\boldsymbol\sigma}P_{bit}^{\,w_{\boldsymbol\sigma}}(1-P_{bit})^{\,n-w_{\boldsymbol\sigma}}, con wσw_{\boldsymbol\sigma} il peso del leader scelto. Si sommano 2n−k2^{n-k} termini, uno per coset (con più leader si conta uno solo).

Esempio. Per il codice (5,2)(5,2): un coset con leader di peso 00, cinque di peso 11, due di peso 22: P(C)=(1−Pbit)5+5Pbit(1−Pbit)4+2Pbit2(1−Pbit)3.P(C)=(1-P_{bit})^5+5P_{bit}(1-P_{bit})^4+2P_{bit}^2(1-P_{bit})^3. Con Pbit=10−2P_{bit}=10^{-2}: P(C)=0,999214P(C)=0{,}999214, cioè P(E)=7,86⋅10−4P(E)=7{,}86\cdot10^{-4}. La limitazione di 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 → (P(piuˋ di 1 errore)=9,80⋅10−4P(\text{più di }1\text{ errore})=9{,}80\cdot10^{-4}) conta tutti gli eventi con 22 o più errori come errori; il decodificatore invece corregge anche 22 dei (52)=10\binom52=10 doppi errori possibili (quelli scelti come leader). Con Pbit=0,1P_{bit}=0{,}1: P(E)=0,0669P(E)=0{,}0669 contro la limitazione 0,08150{,}0815 (valori controllati con Python).

6. Ricostruire HH dai coset

Per i problemi inversi (note sindromi e leader, si chiede HH) servono due regole:

  • un leader di peso 11 con 11 in posizione jj e sindrome σ\boldsymbol\sigma dice che la colonna jj di HH è σ\boldsymbol\sigma;
  • un leader di peso 22 con 11 in ii e jj dice che hi+hj=σ\mathbf h_i+\mathbf h_j=\boldsymbol\sigma.

Se il codice è sistematico le ultime n−kn-k colonne sono quelle dell'identità; da una colonna e dalla somma si ricavano le altre. Una sindrome di lunghezza ℓ\ell dice che HH ha ℓ\ell righe, cioè n−k=ℓn-k=\ell.

Errori comuni

  • Calcolare la sindrome con la matrice sbagliata: con la GG non si trova nulla di utile, serve HH ((n−k)×n(n-k)\times n).
  • Scrivere H=[I∣A]H=[I\mid A] con G=[IA]G=\begin{bmatrix}I\\A\end{bmatrix}: l'identità sta a destra, H=[A∣I]H=[A\mid I].
  • Credere che la sindrome non nulla identifichi sempre l'errore: se la sindrome è una colonna ripetuta di HH, ci sono più errori singoli possibili (più coset leader).
  • Dimenticare che la correzione è garantita solo per gli errori con peso minimo del coset: con più errori del previsto la parola decisa può essere un'altra parola valida.
  • Contare tutti i leader di un coset nella probabilità di decodifica corretta: se ne usa uno solo.

Domande d'esame

  1. Dato HH, dimostrare che dmin>2d_{min}>2. Se HH non ha colonne nulle (niente parole di peso 11) né colonne uguali (niente parole di peso 22, perché HcH\mathbf c sarebbe la somma di due colonne distinte, diversa da 0\mathbf 0), allora dmin≥3d_{min}\ge3. Esercizio - matrice di parità a 4 righe, forma sistematica e permutazione delle colonne (esame del 24 gennaio 2025, es. 188)
  2. Un codice lineare ha n=5n=5, k=3k=3: quante sindromi, quanti coset, quanti vettori per coset? Quanti bit occupa la tabella dei leader? 2n−k=42^{n-k}=4 sindromi e coset, 2k=82^k=8 vettori per coset; n(2n−k−1)=5⋅3=15n(2^{n-k}-1)=5\cdot3=15 bit.
  3. Decodificare γ=111\boldsymbol\gamma=111 con H=[1 1 1]H=[1\ 1\ 1]. σ=1\boldsymbol\sigma=1, leader 100100, c^=011\hat{\mathbf c}=011 (ma 101101 e 110110 sono ugualmente vicine).

Esercizi svolti

Versione ripasso

Matrice di controllo HH (ℓ×n\ell\times n): Hr=0  ⟺  r∈CH\mathbf r=\mathbf 0\iff\mathbf r\in\mathcal C; ogni riga è un'equazione di controllo (Nucleo e immagineIl nucleo (vettori mandati in 0) e l'immagine (vettori raggiunti) di una funzione lineare sono sottospazi; f è iniettiva se e solo se Ker f = {0}; dim Ker f + dim Im f = dim V (nullità + rango); l'antimmagine di un vettore è una soluzione particolare più il nucleo.Nucleo e immagine →).

  • Teorema: HH controlla C\mathcal C se e solo se HG=0HG=0 e rango⁡(H)=n−k\operatorname{rango}(H)=n-k; quindi ℓ≥n−k\ell\ge n-k e le righe in più sono combinazioni delle indipendenti.
  • Dimostrazione: r=Gb⇒Hr=HGb=0\mathbf r=G\mathbf b\Rightarrow H\mathbf r=HG\mathbf b=\mathbf 0; lo spazio nullo ha dimensione n−rango⁡(H)=kn-\operatorname{rango}(H)=k e contiene già le 2k2^k parole, quindi non ha altro.
  • Sistematico: G=[IkA]⇒H=[A∣In−k]G=\begin{bmatrix}I_k\\A\end{bmatrix}\Rightarrow H=[A\mid I_{n-k}], perché HG=A+A=0HG=A+A=0.
  • Esempio (5,2)(5,2): A=[111011]A=\begin{bmatrix}1&1\\1&0\\1&1\end{bmatrix}, H=[111001001011001]H=\begin{bmatrix}1&1&1&0&0\\1&0&0&1&0\\1&1&0&0&1\end{bmatrix}, parole 00000,01101,10111,1101000000,01101,10111,11010.
  • Permutare le colonne di HH permuta i bit (stesse distanze, stessa P(E)P(E) sul canale senza memoria); operazioni sulle righe di HH non cambiano il codice. Portare HH in forma sistematica: identità nelle ultime n−kn-k colonne, in ordine.

Distanza minima dalle colonne di HH

  • HcH\mathbf c = somma delle colonne nelle posizioni dei 11 di c\mathbf c: dmind_{min} è il minimo numero di colonne che sommano a 0\mathbf 0.
  • Colonna nulla →dmin=1\to d_{min}=1; due uguali →dmin≤2\to d_{min}\le2; tutte non nulle e distinte →dmin≥3\to d_{min}\ge3 (peso 33 se hi+hj=hk\mathbf h_i+\mathbf h_j=\mathbf h_k). Nell'esempio (5,2)(5,2) le colonne 1,2,41,2,4 sommano a zero: 1101011010, dmin=3d_{min}=3.

Sindrome σ=Hγ\boldsymbol\sigma=H\boldsymbol\gamma (n−kn-k bit), γ=c+ε\boldsymbol\gamma=\mathbf c+\boldsymbol\varepsilon

  • σ=Hε\boldsymbol\sigma=H\boldsymbol\varepsilon: dipende solo dall'errore. σ=0  ⟺  γ∈C\boldsymbol\sigma=\mathbf 0\iff\boldsymbol\gamma\in\mathcal C (sindrome non nulla = errore rivelato).
  • Errore singolo in posizione jj: σ\boldsymbol\sigma = colonna jj di HH.
  • Decodifica a minima distanza: (1) σ=Hγ\boldsymbol\sigma=H\boldsymbol\gamma; (2) εmin\boldsymbol\varepsilon_{min} di peso minimo con Hε=σH\boldsymbol\varepsilon=\boldsymbol\sigma; (3) c^=γ+εmin\hat{\mathbf c}=\boldsymbol\gamma+\boldsymbol\varepsilon_{min}; poi b^\hat{\mathbf b} = primi kk bit se GG è sistematica.

Coset e coset leader

  • Errori con sindrome σ\boldsymbol\sigma: ε0+C\boldsymbol\varepsilon_0+\mathcal C. 2n−k2^{n-k} coset di 2k2^k vettori, in tutto 2n2^n (partizione dello spazio); il coset di σ=0\boldsymbol\sigma=\mathbf 0 è il codice.
  • Coset leader = vettore di peso minimo del coset; può essere più d'uno (parità, scelta indifferente). Tabella dei leader: n(2n−k−1)n(2^{n-k}-1) bit.
  • Esempio (3,2)(3,2), H=[1 1 1]H=[1\ 1\ 1]: σ=0→000\boldsymbol\sigma=0\to000 (coset 000,101,011,110000,101,011,110); σ=1→100\boldsymbol\sigma=1\to100 (coset 100,010,001,111100,010,001,111); γ=111→c^=011\boldsymbol\gamma=111\to\hat{\mathbf c}=011, ma 101101 e 110110 sono ugualmente vicine (dmin=2d_{min}=2).
  • Esempio (5,2)(5,2): sindromi 000,001,010,100,101,111000,001,010,100,101,111 hanno leader 00000,00001,00010,00100,01000,1000000000,00001,00010,00100,01000,10000; 011→{00011,10100}011\to\{00011,10100\} e 110→{00110,10001}110\to\{00110,10001\}. Decodifiche: 11110→σ=100→1101011110\to\sigma=100\to11010; 00111→σ=111→1011100111\to\sigma=111\to10111; 00011→σ=01100011\to\sigma=011: parità tra 0000000000 e 1011110111.
  • Coset con leader di peso 11 = colonne distinte e non nulle di HH (colonne uguali: stesso coset, più leader).

Probabilità di decodifica corretta (BSC)

  • P(C)=∑σPbitw(1−Pbit)n−wP(C)=\sum_{\boldsymbol\sigma}P_{bit}^{w}(1-P_{bit})^{n-w}, ww = peso del leader scelto, un solo leader per coset.
  • Esempio (5,2)(5,2): P(C)=(1−p)5+5p(1−p)4+2p2(1−p)3P(C)=(1-p)^5+5p(1-p)^4+2p^2(1-p)^3; p=10−2p=10^{-2}: P(E)=7,86⋅10−4P(E)=7{,}86\cdot10^{-4} (limitazione 9,80⋅10−49{,}80\cdot10^{-4}); p=0,1p=0{,}1: 0,06690{,}0669 (limitazione 0,08150{,}0815).

Problema inverso

  • Leader di peso 11 in posizione jj e sindrome σ\boldsymbol\sigma: colonna jj di HH è σ\boldsymbol\sigma. Leader di peso 22 in i,ji,j: hi+hj=σ\mathbf h_i+\mathbf h_j=\boldsymbol\sigma. Codice sistematico: ultime n−kn-k colonne = identità; lunghezza della sindrome =n−k=n-k.

Errori tipici

  • Usare GG per la sindrome, o scrivere H=[I∣A]H=[I\mid A] invece di [A∣I][A\mid I].
  • Credere che una sindrome non nulla dia sempre l'errore (colonne ripetute, più leader).
  • Contare più leader dello stesso coset nella P(C)P(C).
  • Cercare la sindrome di una sequenza di lunghezza diversa da nn.

Esercizi su questo argomento

Teoria collegata