Codici a blocco lineari - matrice generatrice, controllo di parità, sindrome e codici di Hamming
In questa pagina 6
I codici a blocco (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 →) si possono descrivere con una tabella di parole, che diventa impraticabile se è grande. I codici linearicodici in cui la somma di due parole è ancora una parola: formano uno spazio vettoriale sul campo binario si descrivono con poche righe e si decodificano con un calcolo semplice.
Definizione e distanza minima
Si lavora nel campo binarioi due valori e con somma e prodotto modulo : somma e prodotto modulo (). Un codice è lineare se (quindi contiene la parola nulla). Conseguenza importante: la distanza minima è il peso minimoil più piccolo numero di uni tra le parole non nulle delle parole non nulle (non servono tutte le coppie).
Esempio di codice non lineare. , , , : ma non è una parola (): non è lineare (anche se è sistematicoi primi bit della parola di codice coincidono con i bit di informazione).
Matrice generatrice
Una base di parole di codice linearmente indipendentinessuna è somma modulo di altre, messe in righe, forma la matrice generatricematrice le cui righe sono parole di codice: moltiplicata per la parola di informazione dà la parola di codice (). La parola di informazione si codifica con Il codice è sistematico se , con matrice : i primi bit sono l'informazione, i restanti sono le parità . Una qualsiasi si porta in forma sistematica con somme di righe.
Matrice di controllo di parità e sindrome
La matrice di controllo di paritàmatrice tale che una parola è di codice se e solo se () è tale che Per : (modulo 2 il segno non conta). Se si riceve ( = vettore di errorevettore con un nelle posizioni in cui il canale ha sbagliato il bit), la sindromevettore : nullo per le parole di codice e dipendente solo dall'errore dipende solo dall'errore, non dalla parola trasmessa. Allora:
- : è una parola di codice (nessun errore, oppure un errore che trasforma una parola in un'altra: non rivelabile);
- : errore rivelato;
- per correggere si cerca l'errore più probabile (di peso minimo, il coset leadertra gli errori con una data sindrome, quello di peso minimo, cioè il più probabile) con quella sindrome e lo si sottrae: . Per un errore singolo nella posizione , è la -esima colonna di : se le colonne sono tutte diverse e non nulle il codice corregge ogni errore singolo.
Inoltre è il minimo numero di colonne di linearmente dipendenti (la somma di colonne è zero): se le colonne sono non nulle e distinte, se sono solo non nulle.
Esempio completo: codice e sua estensione
Il codice con parole , , (e le loro somme, in tutto parole) ha , . Riducendo in forma sistematica () si ottiene (codice a parità pariil numero di uni di ogni parola è pari). Le parole hanno peso : , rivela errore, ne corregge .
Si aggiunge un quinto bit : , (verificato: ). Le parole di hanno pesi : ancora (la parola ha peso ). Le colonne di sono : non sono tutte distinte, quindi non si corregge. Ricevuta : : errore rivelato; la sindrome coincide con le colonne e di , quindi un errore singolo può essere in posizione () o (): e sono entrambe parole di codice ed equidistanti da , quindi non si può correggere, solo rivelare.
Codici di Hamming
Per il codice di Hammingcodice con la cui ha per colonne tutte le sequenze non nulle: corregge un errore ha , , e con per colonne tutte le sequenze binarie non nulle di bit (quindi colonne distinte e non nulle: , e colonne distinte sommano a zero, per esempio se ). Corregge errore ed è perfettole sfere di Hamming di raggio attorno alle parole riempiono tutto lo spazio senza sovrapporsi (). Per si ha l'Hamming : Decodifica: si calcola ; se si inverte il bit tale che la colonna di sia . Esempio: dà (parità , , , dalle ultime tre colonne di ); se si riceve (errore in posizione ), , uguale alla colonna di : si inverte il bit e si ritrova . (Controllato con Python: tutti i errori singoli sono corretti, ; con la probabilità di parola errata è .)
Errori comuni
- Verificare la linearità guardando solo la parola nulla o la somma di una coppia: serve la chiusura per tutte le somme.
- Calcolare su tutte le coppie in un codice lineare (basta il peso minimo) o, al contrario, prenderlo da una riga di qualsiasi.
- Scrivere invece di (la trasposta serve alle dimensioni: ).
- Credere che la sindrome non nulla identifichi sempre l'errore: con colonne uguali o per più errori la correzione è ambigua o sbagliata.
Versione ripasso
- Lineare: , somma modulo 2 ().
- , quindi .
- Non lineare: , perché non è una parola.
Matrice generatrice e matrice di controllo
- (): . Sistematica: , con parità .
- (): e . Per si ha .
Sindrome
- Ricevuta : , dipende solo dall'errore.
- : parola valida. : errore rivelato.
- Errore singolo in posizione : è la colonna di .
- è il minimo numero di colonne di linearmente dipendenti. Se le colonne sono non nulle e distinte, .
Esempio e sua estensione
- Parole , , e somme, 8 parole in tutto. Forma sistematica: , , (parità pari).
- Pesi : , rivela 1 errore, non ne corregge nessuno.
- Estensione con : , (). Pesi : ancora .
- Ricevuta : , errore rivelato. La sindrome coincide con le colonne 3 e 4 di , e e sono entrambe parole di codice equidistanti da : non si corregge.
Codici di Hamming
- , , ; colonne di = tutte le sequenze binarie non nulle di bit. Corregge errore ed è perfetto ().
- Hamming : , .
- Esempio: dà . Ricevuta (errore in posizione 4): , uguale alla colonna 4 di ; si inverte il bit 4 e si ritrova .
- Verifica con Python: tutti i errori singoli sono corretti; con la probabilità di parola errata è .
Errori tipici
- Verificare la linearità su una sola coppia: serve la chiusura per tutte le somme.
- Scrivere invece di : le dimensioni devono essere .
- Credere che una sindrome non nulla identifichi sempre l'errore: con colonne uguali la correzione è ambigua.
Esercizi su questo argomento
Teoria collegata
- Codifica di canale - codici a blocco, distanza minima, rivelazione e correzione
- Formulario - fondamenti di comunicazioni
- Codici a blocco lineari - matrice generatrice, forma sistematica e bound di Singleton
- Codici di Hamming e bound di Hamming
- Matrice di controllo di parità, sindrome e coset
- Codici a blocco lineari e sindrome
- Codici di Hamming e CRC