Esercizio - codice (8,4) non sistematico, sistematica equivalente e cascata di due codici (esame del 23 gennaio 2024, es. 172)
In questa pagina 6
Testo (tema d'esame del 23 gennaio 2024, corso di Fondamenti di Telecomunicazioni, Ing. Informatica UniPD). Si consideri il codice a correzione d'errore con matrice generatrice
- (3p) Dire se il codice è a) lineare e b) in forma sistematica, motivando la risposta. Se non è in forma sistematica, dire se è possibile metterlo in forma sistematica solamente usando una sola permutazione dei bit per tutte le parole di codice.
- (2p) Dire se il codice originale può avere distanza minima , motivando la risposta.
- (2p) Se non già trovato al punto 1, trovare ora un codice in forma sistematica equivalente a quello originale (usando tutte le trasformazioni adeguate) e calcolarne la matrice di controllo di parità.
- (2p) Per ridurre la probabilità di errore si utilizza ora la cascata del codice originale del punto 1 con un altro codice avente matrice generatrice (nove righe, otto colonne). Ovvero, le parole di codice in uscita dal codificatore con la originale vengono codificate con un secondo codice con matrice generatrice . Dire se la cascata dei due codici è ancora un codice lineare, e in caso affermativo calcolare la matrice generatrice del codice cascata risultante.
- (2p) Se ora utilizziamo la versione in forma sistematica di come primo codice della cascata e ancora come secondo codice, dire se il codice cascata ammette matrice di parità e in caso affermativo dire se questa matrice è in forma sistematica (senza calcolarla).
Teoria usata: 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 →, 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 →.
1. Linearità e forma sistematica
a) Lineare. Il codice è definito da una matrice generatrice: , e l'insieme dei è lo spazio generato dalle colonne di , un sottospazio. La matrice ha rango (le righe , , e sono indipendenti): ci sono parole, , . Il codice è lineare.
b) Sistematico? In un codice sistematico . Qui le prime quattro righe sono : la terza non è , quindi non è in forma sistematica.
Basta una permutazione dei bit? Permutare i bit di tutte le parole significa permutare le righe di . Per ottenere in alto servono quattro righe che valgano . Le righe di sono : manca . Quindi no, con una permutazione dei bit non si arriva alla forma sistematica.
2. Può essere ?
Ogni colonna di è una parola di codice, quindi non supera il peso di nessuna colonna (il peso minimo dà un limite superiore, 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 →). La prima colonna è e ha peso . Perciò No, il codice non può avere distanza minima . (Il valore vero è : Python dà parole di peso , di peso , di peso , di peso ; per esempio ha peso .)
3. Forma sistematica equivalente e matrice di parità
Servono operazioni sulle colonne, che non cambiano il codice. La terza riga è e dovrebbe essere : si toglie il in quarta colonna sostituendo la quarta colonna con la somma della terza e della quarta: La nuova matrice è (Le colonne , e sono invariate e la quarta colonna nuova è . Python conferma che e generano le stesse parole.)
La matrice di controllo di parità è (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 →): Controllo (Python). Le colonne di sono tutte non nulle e distinte, quindi , coerente con la sezione 2.
4. Cascata dei due codici
L'uscita del primo codificatore è (otto bit) e questa è l'ingresso del secondo: . Il prodotto di matrici è una trasformazione lineare di : la cascata è un codice lineare con matrice generatrice Poiché con , il prodotto è : le prime otto righe sono quelle di e la nona è la combinazione delle righe di dove ha un (righe ): (colonna per colonna: , , , .) Quindi È un codice (, ). Controllo con Python: (spettro dei pesi per i pesi ): il bit aggiunto aumenta la distanza minima da a (le parole di peso vengono portate a peso ), quindi la cascata rivela errori e ne corregge (prima rivelava ).
5. Cascata con la sistematica
Con come primo codice, e poi (il secondo codice è sistematico: copia i primi bit e aggiunge un bit). La cascata è i primi quattro bit sono , quindi è in forma sistematica, con () formata da e dalla riga di parità. Ogni codice lineare ha una matrice di controllo di parità, e per un codice con sistematica la matrice standard è (): ammette matrice di parità e questa è in forma sistematica (le ultime colonne sono l'identità).
Errori comuni
- Pensare che permutando le righe si ottenga sempre la forma sistematica: serve una riga per ogni ; altrimenti servono combinazioni di colonne.
- Calcolare come minimo peso delle righe di invece di quello delle parole (le colonne di sono parole, e le somme di colonne anche).
- Moltiplicare invece di : l'ordine è dalla destra (prima , poi ) e le dimensioni lo impongono ( è , è ).
- Dimenticare che la cascata di due codici lineari è lineare perché il prodotto di matrici è lineare in .
Versione ripasso
Testo. . Richiesti: linearità e forma sistematica (con una sola permutazione dei bit?); ?; sistematica equivalente e ; cascata con ; cascata con la sistematica.
- Lineare (ha una di rango ): , . Non sistematico (riga ).
- Con una permutazione dei bit (righe) no: manca la riga .
Punto 2: la colonna ha peso : . Vero valore .
Punto 3
Punto 4
- : prodotto di matrici, quindi lineare, con .
- , .
Punto 5: con e sistematiche i primi bit sono : cascata sistematica; ha matrice di parità , in forma sistematica.
Dettagli di calcolo
- Pesi delle colonne di : , quindi . Spettro dei pesi del codice (Python): di peso , di peso , di peso , di peso , di peso : .
- Cascata : con (righe di ); spettro : , rivela e corregge .
Errori tipici
- Aspettarsi la forma sistematica dalle sole permutazioni delle righe.
- Calcolare al posto di .
- Prendere il peso minimo delle righe di come .