Salta al contenuto
Note per Studenti Esercizio - codice (6,3) con G sistematica, numero di coset e bucatura (esame del 29 agosto 2021, es. 128)

Esercizio - codice (6,3) con G sistematica, numero di coset e bucatura (esame del 29 agosto 2021, es. 128)

Esame
In questa pagina 5

Testo (tema d'esame del 29 agosto 2021, corso di Fondamenti di Telecomunicazioni, Ing. Informatica UniPD). Sia C\mathcal C un codice lineare con matrice generatrice G=[100010001110011101].G=\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\\1&1&0\\0&1&1\\1&0&1\end{bmatrix}.

  1. (3p) Scrivere una matrice di parità HH di C\mathcal C. Calcolare la minima distanza del codice C\mathcal C, usando le proprietà di HH, motivando la risposta.
  2. (3p) Calcolare il numero di coset di C\mathcal C.
  3. (2p) Calcolare il numero di coset che hanno coset leader di peso di Hamming 11.
  4. (3p) Bucare (puncture in inglese) un codice significa eliminare alcuni bit (in posizioni fisse) da tutte le parole di codice (per esempio togliere il primo bit di tutte le parole di codice). Dire se bucare un codice aumenta, diminuisce o lascia invariata la distanza minima e il rate del codice.

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. Matrice di parità e distanza minima

GG ha n=6n=6 righe e k=3k=3 colonne ed è in forma sistematica: G=[I3A]G=\begin{bmatrix}I_3\\A\end{bmatrix} con A=[110011101].A=\begin{bmatrix}1&1&0\\0&1&1\\1&0&1\end{bmatrix}. (le parità sono c4=b1+b2c_4=b_1+b_2, c5=b2+b3c_5=b_2+b_3, c6=b1+b3c_6=b_1+b_3). La matrice di controllo è H=[A∣I3]H=[A\mid I_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=[110100011010101001].H=\begin{bmatrix}1&1&0&1&0&0\\0&1&1&0&1&0\\1&0&1&0&0&1\end{bmatrix}. Verifica HG=0HG=0: per esempio la prima riga di HH per la prima colonna di GG [1,0,0,1,0,1]T[1,0,0,1,0,1]^T dà 1+1=01+1=0, per la seconda [0,1,0,1,1,0]T[0,1,0,1,1,0]^T dà 1+1=01+1=0, per la terza [0,0,1,0,1,1]T[0,0,1,0,1,1]^T dà 00; le altre righe sono analoghe (controllato con Python).

Distanza minima da HH. Le colonne sono h1=[101], h2=[110], h3=[011], h4=[100], h5=[010], h6=[001].\mathbf h_1=\begin{bmatrix}1\\0\\1\end{bmatrix},\ \mathbf h_2=\begin{bmatrix}1\\1\\0\end{bmatrix},\ \mathbf h_3=\begin{bmatrix}0\\1\\1\end{bmatrix},\ \mathbf h_4=\begin{bmatrix}1\\0\\0\end{bmatrix},\ \mathbf h_5=\begin{bmatrix}0\\1\\0\end{bmatrix},\ \mathbf h_6=\begin{bmatrix}0\\0\\1\end{bmatrix}. dmind_{min} è il minimo numero di colonne che sommano a 0\mathbf 0.

  • Nessuna colonna è nulla: nessuna parola di peso 11.
  • Le colonne sono tutte diverse: nessuna parola di peso 22 (la somma di due colonne diverse non è 0\mathbf 0).
  • Tre colonne sommano a zero: h4+h6=[1,0,1]T=h1\mathbf h_4+\mathbf h_6=[1,0,1]^T=\mathbf h_1, cioè h1+h4+h6=0\mathbf h_1+\mathbf h_4+\mathbf h_6=\mathbf 0. La sequenza [1,0,0,1,0,1]T[1,0,0,1,0,1]^T è una parola di peso 33.

Quindi dmin=3d_{min}=3 (il codice rivela 22 errori e ne corregge 11). Le 88 parole sono 000000, 001011, 010110, 011101, 100101, 101110, 110011, 111000000000,\ 001011,\ 010110,\ 011101,\ 100101,\ 101110,\ 110011,\ 111000: pesi 00, 33 (quattro parole), 44 (tre parole).

2. Numero di coset

I coset sono in corrispondenza con le sindromi, e la sindrome è un vettore di n−k=3n-k=3 bit. Quindi i coset sono 2n−k=23=8.2^{n-k}=2^3=8. Ognuno ha 2k=82^k=8 vettori, in tutto 8⋅8=64=268\cdot8=64=2^6. Tutte le 88 sindromi si possono ottenere (le colonne di HH generano tutto lo spazio di dimensione 33), quindi non ci sono coset "vuoti".

3. Coset con leader di peso 1

Un errore singolo in posizione jj ha per sindrome la colonna hj\mathbf h_j. Le 66 colonne sono tutte diverse e non nulle, quindi i 66 errori singoli stanno in 66 coset diversi e in ciascuno sono l'unico leader (peso 11 è il minimo possibile per una sindrome non nulla). I 66 coset hanno leader di peso 11 e non ci sono altri coset di questo tipo. I coset restanti sono 8−6=28-6=2: quello della sindrome nulla (leader di peso 00, il codice stesso) e quello della sindrome [1,1,1]T[1,1,1]^T, che non è nessuna delle colonne e ha tre leader di peso 22 (001100001100, 010001010001, 100010100010; Python). Il numero di coset con leader di peso 11 è 66.

4. Bucare un codice

Bucare significa togliere da tutte le parole i bit in certe posizioni.

Rate. La lunghezza passa da nn a n−sn-s (se si tolgono ss bit), mentre il numero di parole resta 2k2^k se non si perde informazione: il rate kn−s\frac k{n-s} aumenta.

Distanza minima. Due parole diverse c,c′\mathbf c,\mathbf c' a distanza dd hanno dd posizioni diverse. Togliendo un bit si perde una posizione: se quel bit era una delle posizioni in cui differiscono, la distanza scende di 11; altrimenti resta uguale. Quindi la distanza minima non aumenta mai: diminuisce di al più 11 per ogni bit tolto, e resta invariata solo se i bit tolti sono uguali in tutte le coppie a distanza minima. Per questo codice ogni posizione compare tra i 11 di due delle quattro parole di peso 33: togliere un qualunque bit porta a dmin=2d_{min}=2 (e togliendone due o tre si arriva a dmin=1d_{min}=1; Python, tutte le 66 posizioni controllate: dmin=2d_{min}=2 e 88 parole distinte), con rate che sale da 36=0,5\frac36=0{,}5 a 35=0,6\frac35=0{,}6.

In sintesi: bucare aumenta il rate e diminuisce (o al più lascia invariata) la distanza minima; è il compromesso opposto all'aggiunta di bit di parità (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 →).

Errori comuni

  • Dimenticare che le sindromi sono 2n−k2^{n-k} (le righe di HH), non 2k2^k né 2n2^n.
  • Contare i coset con leader di peso 11 come nn anche quando due colonne di HH sono uguali: allora sono meno (nn meno le colonne ripetute).
  • Dire che bucare "aumenta la protezione perché i bit sono meno": toglie ridondanza, la distanza scende.
  • Confondere bucatura e accorciamento: l'accorciamento toglie colonne da HH e parole dal codice, la bucatura toglie bit da tutte le parole.

Versione ripasso

Testo. G=[100010001110011101]G=\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\\1&1&0\\0&1&1\\1&0&1\end{bmatrix}. Richiesti: HH e dmind_{min} dalle proprietà di HH; numero di coset; numero di coset con leader di peso 11; effetto della bucatura su dmind_{min} e rate.

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

  • G=[I3A]G=\begin{bmatrix}I_3\\A\end{bmatrix}, A=[110011101]A=\begin{bmatrix}1&1&0\\0&1&1\\1&0&1\end{bmatrix}; H=[A∣I3]=[110100011010101001]H=[A\mid I_3]=\begin{bmatrix}1&1&0&1&0&0\\0&1&1&0&1&0\\1&0&1&0&0&1\end{bmatrix}.
  • Colonne non nulle (niente peso 11), tutte diverse (niente peso 22); h1+h4+h6=0\mathbf h_1+\mathbf h_4+\mathbf h_6=\mathbf 0: parola 100101100101 di peso 33. dmin=3d_{min}=3.

Punto 2: sindromi di n−k=3n-k=3 bit: 23=82^3=8 coset di 88 vettori (64=2664=2^6).

Punto 3: 66 colonne distinte e non nulle: 66 coset con leader di peso 11 (unico). Restano la sindrome nulla e [1,1,1]T[1,1,1]^T (tre leader di peso 22).

Punto 4

  • Bucare toglie bit da tutte le parole: lunghezza minore, rate kn−s\frac k{n-s} aumenta; la distanza diminuisce di al più 11 per bit tolto, mai aumenta.
  • Qui ogni bit tolto dà dmin=2d_{min}=2 e rate 35\frac35 (contro 12\frac12).

Dettagli di calcolo

  • Parole: 000000,001011,010110,011101,100101,101110,110011,111000000000,001011,010110,011101,100101,101110,110011,111000; quattro di peso 33.
  • Ogni posizione è uno dei 11 di due parole di peso 33: la bucatura di qualsiasi bit le porta a peso 22.

Errori tipici

  • Contare le sindromi come 2k2^k invece di 2n−k2^{n-k}.
  • Contare nn coset con leader di peso 11 con colonne ripetute in HH.
  • Dire che bucare aumenta la protezione.

Teoria collegata