Salta al contenuto
Note per Studenti Esercizio - codice (6,4) con colonne uguali in H, coset leader multipli e bit di parità aggiunto (esame del 25 gennaio 2023, es. 154)

Esercizio - codice (6,4) con colonne uguali in H, coset leader multipli e bit di parità aggiunto (esame del 25 gennaio 2023, es. 154)

Esame
In questa pagina 6

Testo (tema d'esame del 25 gennaio 2023, corso di Fondamenti di Telecomunicazioni, Ing. Informatica UniPD). Si consideri un codice a correzione d'errore binario con matrice di controllo di parità H=[111110101001],H=\begin{bmatrix}1&1&1&1&1&0\\1&0&1&0&0&1\end{bmatrix}, utilizzato su canale binario simmetrico senza memoria.

  1. Calcolare la lunghezza delle parole di codice e il numero delle parole di codice.
  2. Trovare la matrice generatrice del codice e dire se è in forma sistematica.
  3. Dire se esistono più coset leader per la sindrome [1 0]T[1\ 0]^T, giustificando la risposta.
  4. Trovare la parola di codice più probabile che è stata trasmessa se la sequenza ricevuta è [1,1,1,1,0,1]T[1,1,1,1,0,1]^T.
  5. Si aggiunga alle parole di un codice un bit alla fine, calcolato come somma di tutti i bit della sequenza in ingresso al codificatore. Calcolare la matrice di parità del codice così ottenuto e dire se questo nuovo codice ha una distanza minore/uguale/maggiore di quella del codice originale, giustificando la risposta.

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 di parole

La lunghezza è il numero di colonne di HH: n=6n=6. HH ha 22 righe e sono indipendenti (la seconda non è nulla e non è uguale alla prima), quindi rango⁡(H)=n−k=2\operatorname{rango}(H)=n-k=2 e k=4k=4. Le parole sono 2k=162^k=16 su 26=642^6=64 sequenze.

2. Matrice generatrice e forma sistematica

Le ultime due colonne di HH sono [1,0]T[1,0]^T (quinta) e [0,1]T[0,1]^T (sesta): formano l'identità I2I_2. Quindi HH è già nella forma [A∣In−k][A\mid I_{n-k}] (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 →), con A=[11111010](le prime quattro colonne).A=\begin{bmatrix}1&1&1&1\\1&0&1&0\end{bmatrix}\qquad(\text{le prime quattro colonne}). La matrice generatrice è G=[I4A]G=\begin{bmatrix}I_4\\A\end{bmatrix}: G=[100001000010000111111010].G=\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&0&1\\1&1&1&1\\1&0&1&0\end{bmatrix}. È in forma sistematica: i primi quattro bit sono i bit di informazione, gli ultimi due sono le parità c5=b1+b2+b3+b4c_5=b_1+b_2+b_3+b_4 e c6=b1+b3c_6=b_1+b_3. Verifica: HG=0HG=0 (Python, e a mano: la prima riga di HH per la prima colonna di GG dà 1+1=01+1=0, per la seconda 1+1=01+1=0, ecc.).

3. Più coset leader per la sindrome [1,0]T[1,0]^T?

Le colonne di HH sono h1=[11], h2=[10], h3=[11], h4=[10], h5=[10], h6=[01].\mathbf h_1=\begin{bmatrix}1\\1\end{bmatrix},\ \mathbf h_2=\begin{bmatrix}1\\0\end{bmatrix},\ \mathbf h_3=\begin{bmatrix}1\\1\end{bmatrix},\ \mathbf h_4=\begin{bmatrix}1\\0\end{bmatrix},\ \mathbf h_5=\begin{bmatrix}1\\0\end{bmatrix},\ \mathbf h_6=\begin{bmatrix}0\\1\end{bmatrix}. Un errore singolo in posizione jj ha per sindrome hj\mathbf h_j. La sindrome [1,0]T[1,0]^T compare nelle colonne 22, 44 e 55: i tre errori singoli ε=e2,e4,e5\boldsymbol\varepsilon=\mathbf e_2,\mathbf e_4,\mathbf e_5 hanno la stessa sindrome e lo stesso peso minimo (11, la sindrome non è nulla). Quindi sì: esistono tre coset leader per [1,0]T[1,0]^T (e nessun errore di peso 00). Una sequenza ricevuta con questa sindrome è equidistante da tre parole diverse e il decodificatore a minima distanza è in parità.

(Per completezza: la sindrome [1,1]T[1,1]^T ha due leader, e1\mathbf e_1 ed e3\mathbf e_3; [0,1]T[0,1]^T ne ha uno solo, e6\mathbf e_6; [0,0]T[0,0]^T è il caso senza errore. Le 44 sindromi sono tutte coperte da errori di peso ≤1\le1.)

4. Parola più probabile per ξ=[1,1,1,1,0,1]T\boldsymbol\xi=[1,1,1,1,0,1]^T

Sindrome, riga per riga (modulo 22):

  • riga [1,1,1,1,1,0][1,1,1,1,1,0]: 1+1+1+1+0+0=4≡01+1+1+1+0+0=4\equiv0;
  • riga [1,0,1,0,0,1][1,0,1,0,0,1]: 1+0+1+0+0+1=3≡11+0+1+0+0+1=3\equiv1.

σ=[0,1]T\boldsymbol\sigma=[0,1]^T, la colonna 66, e nessun'altra colonna le è uguale: il coset leader è unico, ε=[0,0,0,0,0,1]T\boldsymbol\varepsilon=[0,0,0,0,0,1]^T. La parola più probabile (a minima distanza di Hamming, 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 →) è c^=ξ+ε=[1,1,1,1,0,1]T+[0,0,0,0,0,1]T=[1,1,1,1,0,0]T,\hat{\mathbf c}=\boldsymbol\xi+\boldsymbol\varepsilon=[1,1,1,1,0,1]^T+[0,0,0,0,0,1]^T=[1,1,1,1,0,0]^T, che è la parola di b=[1,1,1,1]T\mathbf b=[1,1,1,1]^T (parità c5=1+1+1+1=0c_5=1+1+1+1=0, c6=1+1=0c_6=1+1=0).

5. Aggiunta di un bit di parità sui bit di informazione

Il nuovo bit è c7=b1+b2+b3+b4c_7=b_1+b_2+b_3+b_4: si aggiunge a GG la riga [1,1,1,1][1,1,1,1], G′=[1000010000100001111110101111](n=7, k=4).G'=\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&0&1\\1&1&1&1\\1&0&1&0\\1&1&1&1\end{bmatrix}\qquad(n=7,\ k=4). La nuova matrice di controllo (stessa A′A' con una riga in più, A′=[111110101111]A'=\begin{bmatrix}1&1&1&1\\1&0&1&0\\1&1&1&1\end{bmatrix}) è H′=[A′∣I3]H'=[A'\mid I_3]: H′=[111110010100101111001].H'=\begin{bmatrix}1&1&1&1&1&0&0\\1&0&1&0&0&1&0\\1&1&1&1&0&0&1\end{bmatrix}. Verifica H′G′=0H'G'=0 con Python.

Distanza. Nella nuova matrice le colonne 11 e 33 sono ancora uguali ([1,1,1]T[1,1,1]^T entrambe), e anche le colonne 22 e 44 ([1,0,1]T[1,0,1]^T). Due colonne uguali sommano a 0\mathbf 0: la sequenza con due 11 nelle posizioni 11 e 33 è una parola di codice (è la parola di b=[1,0,1,0]T\mathbf b=[1,0,1,0]^T, che con c5=c6=c7=0c_5=c_6=c_7=0 vale 10100001010000). Quindi il nuovo codice ha ancora parole di peso 22, e dmin=2d_{min}=2 come il codice originale (nel codice originale la stessa coppia di colonne uguali già dava dmin=2d_{min}=2): la distanza è uguale. Il bit aggiunto è la somma dei soli bit di informazione, non di tutta la parola: non rende pari il peso di ogni parola. Per ottenere dmin=3d_{min}=3 servirebbe che nessuna coppia di colonne fosse uguale. Il numero di parole di peso 22 scende da 44 a 22 (spettro dei pesi: Python), ma la distanza minima non cambia.

Errori comuni

  • Pensare che aggiungere un bit di parità aumenti sempre di 11 la distanza: lo fa solo se è la parità di tutta la parola e se la distanza minima era dispari.
  • Contare i coset leader solo dal peso del vettore: una sindrome ripetuta in due o più colonne di HH ha più leader di peso 11.
  • Decodificare la sequenza con sindrome [1,0]T[1,0]^T scegliendo un errore a caso: la parola decodificata non è garantita.
  • Dimenticare di aggiungere la colonna e3\mathbf e_3 (la nuova identità I3I_3) alla matrice di controllo.

Versione ripasso

Testo. H=[111110101001]H=\begin{bmatrix}1&1&1&1&1&0\\1&0&1&0&0&1\end{bmatrix}, BSC. Richiesti: nn e numero di parole; GG e forma sistematica; coset leader per la sindrome [1,0]T[1,0]^T; parola più probabile per ξ=111101\boldsymbol\xi=111101; matrice di parità del codice con un bit in più (somma dei bit di informazione) e confronto delle distanze.

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), rango⁡(H)=2=n−k\operatorname{rango}(H)=2=n-k: k=4k=4, 24=162^4=16 parole.

Punto 2

  • Ultime due colonne =I2=I_2: H=[A∣I2]H=[A\mid I_2], A=[11111010]A=\begin{bmatrix}1&1&1&1\\1&0&1&0\end{bmatrix}; G=[I4A]G=\begin{bmatrix}I_4\\A\end{bmatrix} (sistematica).

Punto 3

  • Colonne di HH: h2=h4=h5=[1,0]T\mathbf h_2=\mathbf h_4=\mathbf h_5=[1,0]^T: tre coset leader (e2,e4,e5\mathbf e_2,\mathbf e_4,\mathbf e_5). (Anche [1,1]T[1,1]^T ne ha due, h1=h3\mathbf h_1=\mathbf h_3.)

Punto 4

  • σ=Hξ=[0,1]T\boldsymbol\sigma=H\boldsymbol\xi=[0,1]^T = colonna 66 (unica): ε=e6\boldsymbol\varepsilon=\mathbf e_6, c^=111100\hat{\mathbf c}=111100.

Punto 5

  • c7=b1+b2+b3+b4c_7=b_1+b_2+b_3+b_4: riga [1,1,1,1][1,1,1,1] in più in GG; H′=[111110010100101111001]H'=\begin{bmatrix}1&1&1&1&1&0&0\\1&0&1&0&0&1&0\\1&1&1&1&0&0&1\end{bmatrix}.
  • Colonne 1,31,3 ancora uguali: parola di peso 22 (10100001010000): dmin=2d_{min}=2, uguale all'originale.

Dettagli di calcolo

  • Sindromi: [0,0]→0[0,0]\to\mathbf 0; [0,1]→e6[0,1]\to\mathbf e_6 (unico); [1,0]→e2,e4,e5[1,0]\to\mathbf e_2,\mathbf e_4,\mathbf e_5; [1,1]→e1,e3[1,1]\to\mathbf e_1,\mathbf e_3.
  • Spettro dei pesi: originale 1,0,4,6,3,21,0,4,6,3,2 (per i pesi 0,…,50,\dots,5), nuovo (7,4)(7,4) 1,0,2,6,3,2,21,0,2,6,3,2,2: le parole di peso 22 scendono da 44 a 22 ma dmin=2d_{min}=2 resta.

Errori tipici

  • Credere che un bit di parità aumenti sempre dmind_{min}.
  • Non vedere i leader multipli con colonne uguali.
  • Scegliere a caso tra i leader.

Teoria collegata