Esercizio - codice (6,3) con G sistematica, numero di coset e bucatura (esame del 29 agosto 2021, es. 128)
In questa pagina 5
Testo (tema d'esame del 29 agosto 2021, corso di Fondamenti di Telecomunicazioni, Ing. Informatica UniPD). Sia un codice lineare con matrice generatrice
- (3p) Scrivere una matrice di parità di . Calcolare la minima distanza del codice , usando le proprietà di , motivando la risposta.
- (3p) Calcolare il numero di coset di .
- (2p) Calcolare il numero di coset che hanno coset leader di peso di Hamming .
- (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
ha righe e colonne ed è in forma sistematica: con (le parità sono , , ). La matrice di controllo è (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 →): Verifica : per esempio la prima riga di per la prima colonna di dà , per la seconda dà , per la terza dà ; le altre righe sono analoghe (controllato con Python).
Distanza minima da . Le colonne sono è il minimo numero di colonne che sommano a .
- Nessuna colonna è nulla: nessuna parola di peso .
- Le colonne sono tutte diverse: nessuna parola di peso (la somma di due colonne diverse non è ).
- Tre colonne sommano a zero: , cioè . La sequenza è una parola di peso .
Quindi (il codice rivela errori e ne corregge ). Le parole sono : pesi , (quattro parole), (tre parole).
2. Numero di coset
I coset sono in corrispondenza con le sindromi, e la sindrome è un vettore di bit. Quindi i coset sono Ognuno ha vettori, in tutto . Tutte le sindromi si possono ottenere (le colonne di generano tutto lo spazio di dimensione ), quindi non ci sono coset "vuoti".
3. Coset con leader di peso 1
Un errore singolo in posizione ha per sindrome la colonna . Le colonne sono tutte diverse e non nulle, quindi i errori singoli stanno in coset diversi e in ciascuno sono l'unico leader (peso è il minimo possibile per una sindrome non nulla). I coset hanno leader di peso e non ci sono altri coset di questo tipo. I coset restanti sono : quello della sindrome nulla (leader di peso , il codice stesso) e quello della sindrome , che non è nessuna delle colonne e ha tre leader di peso (, , ; Python). Il numero di coset con leader di peso è .
4. Bucare un codice
Bucare significa togliere da tutte le parole i bit in certe posizioni.
Rate. La lunghezza passa da a (se si tolgono bit), mentre il numero di parole resta se non si perde informazione: il rate aumenta.
Distanza minima. Due parole diverse a distanza hanno posizioni diverse. Togliendo un bit si perde una posizione: se quel bit era una delle posizioni in cui differiscono, la distanza scende di ; altrimenti resta uguale. Quindi la distanza minima non aumenta mai: diminuisce di al più 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 di due delle quattro parole di peso : togliere un qualunque bit porta a (e togliendone due o tre si arriva a ; Python, tutte le posizioni controllate: e parole distinte), con rate che sale da a .
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 (le righe di ), non né .
- Contare i coset con leader di peso come anche quando due colonne di sono uguali: allora sono meno ( 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 e parole dal codice, la bucatura toglie bit da tutte le parole.
Versione ripasso
Testo. . Richiesti: e dalle proprietà di ; numero di coset; numero di coset con leader di peso ; effetto della bucatura su e rate.
- , ; .
- Colonne non nulle (niente peso ), tutte diverse (niente peso ); : parola di peso . .
Punto 2: sindromi di bit: coset di vettori ().
Punto 3: colonne distinte e non nulle: coset con leader di peso (unico). Restano la sindrome nulla e (tre leader di peso ).
Punto 4
- Bucare toglie bit da tutte le parole: lunghezza minore, rate aumenta; la distanza diminuisce di al più per bit tolto, mai aumenta.
- Qui ogni bit tolto dà e rate (contro ).
Dettagli di calcolo
- Parole: ; quattro di peso .
- Ogni posizione è uno dei di due parole di peso : la bucatura di qualsiasi bit le porta a peso .
Errori tipici
- Contare le sindromi come invece di .
- Contare coset con leader di peso con colonne ripetute in .
- Dire che bucare aumenta la protezione.