Esercizio 30codice a blocco lineare (4,3) esteso a (5,3), matrici e sindrome (temi d'esame gennaio e luglio 2017)
In questa pagina 5
Testo (temi d'esame del secondo compitino del 15 gennaio 2017 e dell'esame del 6 luglio 2017 di un corso UniPD equivalente). Si consideri un codice a blocco lineare sistematico binario con e . Date le parole di codice , e :
- Determinare la matrice generatrice e la matrice di parità del codice in forma sistematica.
- Si dica quanti errori può rilevare il codice e quanti ne può correggere.
- Si aggiunga un bit alle parole di codice ottenuto come (con , , bit di posizione -esima delle parole di codice). Si scrivano le matrici generatrici e di parità del nuovo codice.
- Data la sequenza ricevuta si controlli la presenza di errori mediante il calcolo della sindrome e si scriva la parola di codice decodificata.
Teoria usata: Codici a blocco lineari - matrice generatrice, controllo di parità, sindrome e codici di HammingUn codice a blocco è lineare se la somma (bit a bit, modulo 2) di due parole di codice è una parola di codice. Si descrive con la matrice generatrice $G$ ($k\times n$, $\mathbf c=\mathbf mG$) e con la matrice di controllo di parità $H$ ($(n-k)\times n$, $G H^T=0$); in forma sistematica $G=[I_k\mid P]$ e $H=[P^T\mid I_{n-k}]$. La distanza minima è il peso minimo delle parole non nulle. La sindrome $\mathbf s=\mathbf rH^T$ dipende solo dall'errore: se è nulla la parola è valida, altrimenti identifica l'errore (un solo errore ha per sindrome la colonna di $H$ corrispondente). I codici di Hamming $(2^m-1,,2^m-1-m)$ hanno $d_{min}=3$.Codici a blocco lineari - matrice generatrice, controllo di parità, sindrome e codici di Hamming →, Codifica di canale - codici a blocco, distanza minima, rivelazione e correzioneLa codifica di canale aggiunge ridondanza ai bit per rivelare o correggere gli errori del canale. Un codice a blocco $(n,k)$ trasforma $k$ bit in $n$ bit (rendimento $R_c=\frac kn$). Con la distanza di Hamming minima $d_{min}$ il codice rivela fino a $d_{min}-1$ errori e ne corregge $t=\left\lfloor\frac{d_{min}-1}2\right\rfloor$ (decodifica a minima distanza). Vale il limite di Singleton $d_{min}\le n-k+1$. Su un canale binario simmetrico con errore $p$, la probabilità di parola sbagliata è $P_w\le\sum_{i>t}\binom nip^i(1-p)^{n-i}$ e, con $p$ piccola, $P_{bit}\approx\frac{d_{min}}n\binom n{t+1}p^{t+1}$.Codifica di canale - codici a blocco, distanza minima, rivelazione e correzione →.
(1) Matrici e
Le tre parole sono linearmente indipendenti, quindi generano un codice con parole. In forma sistematica : servono parole che abbiano i primi bit uguali a , , .
- ✓ (parità );
- ✓ (parità );
- : ✓ (parità ).
Il bit di parità è (codice a parità pari): per ogni parola.
(2) Rivelazione e correzione
Le parole sono , di pesi : (codice lineare: peso minimo ). Il codice rivela errore e corregge errori. (Un errore singolo dà una parola a peso dispari, non valida; due errori danno una parola di peso pari che può essere valida.)
(3) Il codice esteso
Si aggiunge . Le parti di parità diventano : Verifica: (righe di : ; ; ). Le parole di sono , di pesi : (le parole e hanno peso ). Il rendimento scende a ma la distanza non cresce: l'estensione non è utile per la correzione.
(4) Sindrome della sequenza
Errore rivelato. Per cercare un errore singolo si confronta con le colonne di : , , , , . La sindrome coincide con e con : l'errore può essere nella posizione (parola ) o nella (), che sono due parole di codice ugualmente vicine a (distanza ). Il codice non può correggere (è coerente con ): la parola decodificata non è determinabile in modo univoco; si può solo dire che c'è un errore e chiedere la ritrasmissione, oppure scegliere a caso tra e ( di probabilità di sbagliare).
(Verificato con Python: , per entrambi i codici, sindrome .)
Errori comuni
- Dimenticare che per un codice lineare è il peso minimo delle parole non nulle ( qui), e rispondere che corregge un errore.
- Calcolare la sindrome con del codice su una parola di bit: serve ().
- Concludere che la sindrome identifica sempre la posizione dell'errore: colonne uguali () lasciano ambiguità.
- Credere che aggiungere un bit di parità aumenti la distanza: qui resta .
Versione ripasso
Testo. Codice lineare sistematico , con , , : , ; rivelazione/correzione; estensione : , ; sindrome di (compitino e esame ).
- (1) (Codici a blocco lineari - matrice generatrice, controllo di parità, sindrome e codici di HammingUn codice a blocco è lineare se la somma (bit a bit, modulo 2) di due parole di codice è una parola di codice. Si descrive con la matrice generatrice $G$ ($k\times n$, $\mathbf c=\mathbf mG$) e con la matrice di controllo di parità $H$ ($(n-k)\times n$, $G H^T=0$); in forma sistematica $G=[I_k\mid P]$ e $H=[P^T\mid I_{n-k}]$. La distanza minima è il peso minimo delle parole non nulle. La sindrome $\mathbf s=\mathbf rH^T$ dipende solo dall'errore: se è nulla la parola è valida, altrimenti identifica l'errore (un solo errore ha per sindrome la colonna di $H$ corrispondente). I codici di Hamming $(2^m-1,,2^m-1-m)$ hanno $d_{min}=3$.Codici a blocco lineari - matrice generatrice, controllo di parità, sindrome e codici di Hamming →) (), : .
- (2) pesi : : rivela , corregge .
- (3) , ; .
- (4) : errore rivelato; : o , non correggibile.
- Errori: come peso minimo; per bit; colonne uguali ambiguità; parità extra non aumenta .