Salta al contenuto
Note per Studenti Esercizio - matrice di parità a 4 righe, forma sistematica e permutazione delle colonne (esame del 24 gennaio 2025, es. 188)

Esercizio - matrice di parità a 4 righe, forma sistematica e permutazione delle colonne (esame del 24 gennaio 2025, es. 188)

Esame
In questa pagina 6

Testo (tema d'esame del 24 gennaio 2025, corso di Fondamenti di Telecomunicazioni, Ing. Informatica UniPD). Si consideri un codice di canale con la seguente matrice di controllo di parità

H=[110100001000100001110010].H=\begin{bmatrix}1&1&0&1&0&0\\0&0&1&0&0&0\\1&0&0&0&0&1\\1&1&0&0&1&0\end{bmatrix}.

  1. Calcolare la lunghezza delle parole di codice e il numero delle parole di codice.
  2. Dire se le sequenze ξ1=[100011]\boldsymbol\xi_1=[100011] e ξ2=[0011]\boldsymbol\xi_2=[0011] sono parole di codice, giustificando la risposta.
  3. Dire se la distanza minima del codice è strettamente maggiore di 22, giustificando la risposta.
  4. Utilizzando solo permutazioni (in numero minimo) delle colonne di HH, calcolare una matrice di controllo di parità H′H' in forma sistematica e scrivere la matrice generatrice corrispondente.
  5. Dire se i codici associati alle matrici di parità HH e H′H' hanno le stesse parole di codice. Dire se i due codici hanno una probabilità di errore uguale o diversa su un canale binario simmetrico senza memoria. Giustificare le risposte.

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 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. Lunghezza e numero delle parole

La lunghezza nn è il numero di colonne di HH: n=6n=6. Il numero di parole è 2k2^k, dove n−k=rango⁡(H)n-k=\operatorname{rango}(H) (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 →). HH ha 44 righe, e sono linearmente indipendenti: ciascuna ha un 11 in una colonna dove tutte le altre righe hanno 00 (riga 11: colonna 44; riga 22: colonna 33; riga 33: colonna 66; riga 44: colonna 55). Una combinazione di righe che desse la riga nulla non potrebbe contenere nessuna riga, perché quella colonna "privata" avrebbe 11 nel risultato. Quindi rango⁡(H)=4=n−k\operatorname{rango}(H)=4=n-k, cioè k=2k=2 e le parole sono 22=42^2=4.

Si possono anche scrivere: Hc=0H\mathbf c=\mathbf 0 significa {c1+c2+c4=0c3=0c1+c6=0c1+c2+c5=0 ⟹ c=[c1, c2, 0, c1+c2, c1+c2, c1]T\begin{cases}c_1+c_2+c_4=0\\c_3=0\\c_1+c_6=0\\c_1+c_2+c_5=0\end{cases}\ \Longrightarrow\ \mathbf c=[c_1,\,c_2,\,0,\,c_1+c_2,\,c_1+c_2,\,c_1]^T con c1,c2c_1,c_2 liberi. Le 44 parole sono 000000000000, 010110010110 (c1=0,c2=1c_1=0,c_2=1), 100111100111 (c1=1,c2=0c_1=1,c_2=0), 110001110001 (c1=c2=1c_1=c_2=1). Notare che c3=0c_3=0 sempre: la seconda riga di HH fissa un bit a zero (un bit inutile, che non trasporta informazione).

2. Le due sequenze sono parole?

Si calcola la sindrome HξH\boldsymbol\xi.

ξ1=[1,0,0,0,1,1]T\boldsymbol\xi_1=[1,0,0,0,1,1]^T. Riga per riga (tutto modulo 22):

  • riga [1,1,0,1,0,0][1,1,0,1,0,0]: 1⋅1+1⋅0+0⋅0+1⋅0+0⋅1+0⋅1=11\cdot1+1\cdot0+0\cdot0+1\cdot0+0\cdot1+0\cdot1=1;
  • riga [0,0,1,0,0,0][0,0,1,0,0,0]: 00;
  • riga [1,0,0,0,0,1][1,0,0,0,0,1]: 1+1=2≡01+1=2\equiv0;
  • riga [1,1,0,0,1,0][1,1,0,0,1,0]: 1+0+0+0+1+0=2≡01+0+0+0+1+0=2\equiv0.

Quindi Hξ1=[1,0,0,0]T≠0H\boldsymbol\xi_1=[1,0,0,0]^T\ne\mathbf 0 e ξ1\boldsymbol\xi_1 non è una parola di codice. (Notare che [1,0,0,0]T[1,0,0,0]^T è la colonna 44 di HH: è la sindrome di un errore singolo in posizione 44, quindi ξ1\boldsymbol\xi_1 è a distanza 11 dalla parola 100111100111.)

ξ2=[0,0,1,1]\boldsymbol\xi_2=[0,0,1,1]. Ha lunghezza 4≠64\ne6: non può essere una parola di un codice a n=6n=6 (e Hξ2H\boldsymbol\xi_2 non è nemmeno definito, le dimensioni non sono compatibili).

3. È dmin>2d_{min}>2?

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 →). Le colonne sono h1=[1011], h2=[1001], h3=[0100], h4=[1000], h5=[0001], h6=[0010].\mathbf h_1=\begin{bmatrix}1\\0\\1\\1\end{bmatrix},\ \mathbf h_2=\begin{bmatrix}1\\0\\0\\1\end{bmatrix},\ \mathbf h_3=\begin{bmatrix}0\\1\\0\\0\end{bmatrix},\ \mathbf h_4=\begin{bmatrix}1\\0\\0\\0\end{bmatrix},\ \mathbf h_5=\begin{bmatrix}0\\0\\0\\1\end{bmatrix},\ \mathbf h_6=\begin{bmatrix}0\\0\\1\\0\end{bmatrix}.

  • Nessuna colonna è nulla: non esistono parole di peso 11 (una parola con un solo 11 in posizione ii darebbe Hc=hi≠0H\mathbf c=\mathbf h_i\ne\mathbf 0).
  • Le colonne sono tutte diverse tra loro: non esistono parole di peso 22 (darebbero hi+hj=0\mathbf h_i+\mathbf h_j=\mathbf 0, cioè hi=hj\mathbf h_i=\mathbf h_j).

Quindi nessuna parola ha peso ≤2\le2 e dmin≥3>2d_{min}\ge3>2: sì. Anzi h1+h2=[0,0,1,0]T=h6\mathbf h_1+\mathbf h_2=[0,0,1,0]^T=\mathbf h_6: le colonne 1,2,61,2,6 sommano a zero, la parola 110001110001 ha peso 33 e dmin=3d_{min}=3 (si legge anche nell'elenco delle parole della sezione 1: pesi 3,4,33,4,3).

4. Forma sistematica per permutazione delle colonne

Si vuole H′=[A∣I4]H'=[A\mid I_4]: le ultime quattro colonne devono essere e1,e2,e3,e4\mathbf e_1,\mathbf e_2,\mathbf e_3,\mathbf e_4 in quest'ordine (le colonne dell'identità). Colonne disponibili: e1=[1,0,0,0]T=h4\mathbf e_1=[1,0,0,0]^T=\mathbf h_4, e2=[0,1,0,0]T=h3\mathbf e_2=[0,1,0,0]^T=\mathbf h_3, e3=[0,0,1,0]T=h6\mathbf e_3=[0,0,1,0]^T=\mathbf h_6, e4=[0,0,0,1]T=h5\mathbf e_4=[0,0,0,1]^T=\mathbf h_5. Le posizioni 3,4,5,63,4,5,6 contengono oggi h3,h4,h5,h6=e2,e1,e4,e3\mathbf h_3,\mathbf h_4,\mathbf h_5,\mathbf h_6=\mathbf e_2,\mathbf e_1,\mathbf e_4,\mathbf e_3: bisogna scambiare le colonne 33 e 44 e poi le colonne 55 e 66. Due scambi sono il minimo (ogni scambio sistema al più due colonne). L'ordine finale delle colonne originali è (h1,h2,h4,h3,h6,h5)(\mathbf h_1,\mathbf h_2,\mathbf h_4,\mathbf h_3,\mathbf h_6,\mathbf h_5): H′=[111000000100100010110001]=[A∣I4],A=[11001011].H'=\begin{bmatrix}1&1&1&0&0&0\\0&0&0&1&0&0\\1&0&0&0&1&0\\1&1&0&0&0&1\end{bmatrix}=[A\mid I_4],\qquad A=\begin{bmatrix}1&1\\0&0\\1&0\\1&1\end{bmatrix}.

La matrice generatrice sistematica corrispondente è G=[I2A]G=\begin{bmatrix}I_2\\A\end{bmatrix} (perché H′=[A∣I]H'=[A\mid I]): G=[100111001011].G=\begin{bmatrix}1&0\\0&1\\1&1\\0&0\\1&0\\1&1\end{bmatrix}. Verifica H′G=0H'G=0: per esempio la riga [1,1,1,0,0,0][1,1,1,0,0,0] per la prima colonna [1,0,1,0,1,1]T[1,0,1,0,1,1]^T dà 1+0+1=01+0+1=0 e per la seconda [0,1,1,0,0,1]T[0,1,1,0,0,1]^T dà 0+1+1=00+1+1=0; il prodotto completo (Python) è la matrice nulla.

5. I due codici sono uguali? E le prestazioni?

Le parole non sono le stesse. Il codice di H′H' si ottiene da quello di HH scambiando i bit 3↔43\leftrightarrow4 e 5↔65\leftrightarrow6 in tutte le parole. Per esempio 010110→011001010110\to011001. Le parole del codice di H′H' sono 000000, 011001, 101011, 110010000000,\ 011001,\ 101011,\ 110010, diverse da quelle di HH (000000, 010110, 100111, 110001000000,\ 010110,\ 100111,\ 110001): i due codici sono diversi (sono equivalenti per permutazione dei bit).

La probabilità d'errore è la stessa. Su un canale senza memoria ogni bit viene sbagliato con la stessa probabilità PbitP_{bit} e indipendentemente: la verosimiglianza PbitdH(1−Pbit)n−dHP_{bit}^{d_H}(1-P_{bit})^{n-d_H} dipende solo dalla distanza di Hamming, e una permutazione dei bit conserva tutte le distanze (permuta le stesse posizioni in entrambe le sequenze). Quindi la decodifica a minima distanza dà lo stesso risultato e la stessa probabilità d'errore.

Conferma numerica (Python, con la tabella dei coset leader, P(E)=1−∑σPbitw(1−Pbit)6−wP(E)=1-\sum_{\boldsymbol\sigma}P_{bit}^{w}(1-P_{bit})^{6-w}): per entrambi i codici P(E)=7,86⋅10−4P(E)=7{,}86\cdot10^{-4} con Pbit=10−2P_{bit}=10^{-2} e 7,99⋅10−67{,}99\cdot10^{-6} con Pbit=10−3P_{bit}=10^{-3}. Questi valori sono uguali a quelli di un codice (5,2)(5,2) con dmin=3d_{min}=3 perché il bit c3c_3 è sempre nullo: aggiunge solo una posizione in cui un errore ha una sindrome tutta sua (la colonna h3\mathbf h_3) e viene corretto senza danni.

Errori comuni

  • Contare le righe di HH come kk: n−k=rango⁡(H)n-k=\operatorname{rango}(H) è il numero di righe indipendenti, k=n−4=2k=n-4=2.
  • Cercare la sindrome di una sequenza di lunghezza sbagliata: ξ2\boldsymbol\xi_2 non ha n=6n=6 bit.
  • Dire dmin>2d_{min}>2 "perché nn è grande": serve guardare le colonne di HH (nessuna nulla, nessuna ripetuta).
  • Permutare le colonne di HH sperando di ottenere le stesse parole: cambiano le parole, restano le prestazioni.

Versione ripasso

Testo. H=[110100001000100001110010]H=\begin{bmatrix}1&1&0&1&0&0\\0&0&1&0&0&0\\1&0&0&0&0&1\\1&1&0&0&1&0\end{bmatrix}. Richiesti: nn e numero di parole; se 100011100011 e 00110011 sono parole; se dmin>2d_{min}>2; H′H' sistematica con permutazioni minime di colonne e GG; se i codici di HH e H′H' hanno le stesse parole e la stessa P(E)P(E) sul BSC.

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 →)

  • n=6n=6 (colonne). Le 44 righe sono indipendenti (ognuna ha una colonna "privata"): n−k=4n-k=4, k=2k=2, 22=42^2=4 parole.
  • c1+c2+c4=0c_1+c_2+c_4=0, c3=0c_3=0, c1+c6=0c_1+c_6=0, c1+c2+c5=0c_1+c_2+c_5=0: c=[c1,c2,0,c1+c2,c1+c2,c1]T\mathbf c=[c_1,c_2,0,c_1+c_2,c_1+c_2,c_1]^T; parole 000000,010110,100111,110001000000,010110,100111,110001.

Punto 2

  • H[1,0,0,0,1,1]T=[1,0,0,0]T≠0H[1,0,0,0,1,1]^T=[1,0,0,0]^T\ne\mathbf 0: non è parola. 00110011 ha lunghezza 4≠64\ne6: non è parola.

Punto 3

  • Nessuna colonna nulla (niente peso 11), nessuna ripetuta (niente peso 22): dmin≥3d_{min}\ge3. Inoltre h1+h2=h6\mathbf h_1+\mathbf h_2=\mathbf h_6: dmin=3d_{min}=3.

Punto 4

  • Ultime quattro colonne =e1,…,e4=\mathbf e_1,\dots,\mathbf e_4: oggi sono e2,e1,e4,e3\mathbf e_2,\mathbf e_1,\mathbf e_4,\mathbf e_3. Due scambi: colonne 3↔43\leftrightarrow4 e 5↔65\leftrightarrow6.
  • H′=[111000000100100010110001]H'=\begin{bmatrix}1&1&1&0&0&0\\0&0&0&1&0&0\\1&0&0&0&1&0\\1&1&0&0&0&1\end{bmatrix}, G=[I2A]=[100111001011]G=\begin{bmatrix}I_2\\A\end{bmatrix}=\begin{bmatrix}1&0\\0&1\\1&1\\0&0\\1&0\\1&1\end{bmatrix}.

Punto 5

  • Parole diverse: 000000,011001,101011,110010000000,011001,101011,110010 contro 000000,010110,100111,110001000000,010110,100111,110001 (bit 3↔43\leftrightarrow4, 5↔65\leftrightarrow6 scambiati).
  • Stessa P(E)P(E): la verosimiglianza dipende solo da dHd_H, che una permutazione dei bit conserva. Con Pbit=10−2P_{bit}=10^{-2}: P(E)=7,86⋅10−4P(E)=7{,}86\cdot10^{-4} per entrambi.

Errori tipici

  • Prendere il numero di righe di HH per kk.
  • Cercare la sindrome di una sequenza di lunghezza ≠n\ne n.
  • Aspettarsi le stesse parole dopo una permutazione delle colonne.

Teoria collegata