|
||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
Il codice Hamming(7,4) è un codice di Hamming che codifica 4 bit di data in 7 bit, aggiungendo 3 bit di parità. Oggi, per codice Hamming ci si riferisce a uno specifico codice (7,4) creato da Richard W. Hamming nel 1950 mentre lavorava come teorico ai laboratori Bell Telephone negli anni 40. Hamming inventò il codice nel 1950 per consentire un correzione degli errori durante le trasmissioni e ridurre il rapporto risorse computazionali / tempo sprecato[1]. Il codice di Hamming aggiunge tre bit di controllo addizionali ad ogni quattro bit di messaggio. L'algoritmo di Hamming (7,4) può correggere ogni errore di singolo bit, oppure rivelatore tutti gli errori di singolo bit e gli errori su due bit. Questo significa che in situazioni in cui il canale di trasmissione in cui gli errori non sono in burst (gruppi vicini), il codice Hamming (7,4) è efficace (poiché il canale deve essere molto disturbato per avere un rumore che cambi 2 bit su 7). In altre parole, la distanza di Hamming tra le parole trasmesse e ricevute non deve essere maggiore di uno per essere correggibili.
modifica ScopoLo scopo del codice di Hamming è di creare un insieme di bit di parità che si intersechino in modo tale che un errore su un singolo bit di dati o su un singolo bit di parità possa essere rivelato e corretto.
Questa tabella descrive quali bit di parità coprono quali bit trasmessi nel messaggio codificato. Per esempio p2 protegge i bit 2, 3, 6, e 7. È anche illustrato da quale bit di parità è coperto un bit trasmesso. Per esempio d1 è protetto da p1 e p2 ma non p3. Questa tabella è molto simile alla matrice di controllo di parità ( Inoltre, se le colonne dei bit di parità sono rimosse nella tabella sopra se si considerano solo le righe 1, 2 e 4 della matrice generatrice del codice ( Quindi, proteggendo opportunamente i bit, tutti gli errori con distanza di Hamming 1 possono essere rivelati e corretti, che è lo scopo del codice di Hamming. modifica Matrici di HammingI codici di Hamming possono essere calcolati in termini di algebra lineare attraverso matrici poiché i codici di Hamming sono codici lineari. Per i codici di Hamming vengono definite due matrici di Hamming: la matrice generatrice del codice e Come menzionato prima le righe 1, 2, e 4 della matrice
Le righe rimanenti (3, 5, 6, 7) mappano i dati nelle loro posizioni nel messaggio codificato e altro non sono che la matrice identità. In realtà, queste quattro righe sono linearmente indipendenti e formano la matrice identità (per costruzione). Anche altre tre righe di I 4 bit di dati — ordinati in un vettore La prima tabla sopra mostra la corrispondenza tra ogni bit di dati e di parità e le loro posizioni finali, ma questo può essere rappresentato con un diagramma di Venn. Il primo diagramma mostra tre cerchi (uno per ogni bit di parità) che racchiudono i bit di dati e la protezione di ogni bit di parità. Il secondo diagramma (qui a destra) è identico, ma è segnata la posizione dei bit. Per il resto dell'articolo si useranno i bit di esempio: modifica CodificaSi supponga che si vogliano trasmettere questi dati su un un canale rumoroso. Supponiamo che la probabilità che un bit 0 cambi in 1 sia la stessa che un bit 1 cambi in 0 (rumore simmetrico). Prendiamo il prodotto di G e p e ne facciamo il modulo 2, per determinare il messaggio da trasmettere x: Quindi trasmetteremo Nel diagramma a destra, i 7 bit della parola codificata sono inseriti nelle loro rispettive posizioni; dall'osservazione è chiaro che la parità dei cerchi rosso, verde e blu è pari:
Se durante la trasmissione un bit viene invertito allora la parità di 2 dei 3 cerchi sarà scorretta e il bit errato può essere determinato (anche se si tratta di un bit di parità) usando il fatto che la parità di tutti i tre i cerchi deve essere pari. modifica Controllo di paritàSe non avvengono errori durante la trasmissione, la parola codificata ricevuta r è identica a quella trasmessa x: Il ricevitore moltiplica H e r per ottenere il vettore sindrome Poiché la sindrome z è il vettore nullo, il ricevitore può concludere che non sono avvenuti errori. Questa affermazione è basata sull'osservazione che quando un vettore di dati è moltiplicato per modifica Correzione degli erroriSupponiamo invece che sia avvenuto un errore su un singolo bit . Matematicamente, si può scrivere modulo 2, dove ei è il i-esimo vettore unitario, cioè un vettore nullo con un 1 nella posizione i-esima, contando da 1. Quindi l'espressione precedente significa che è avvenuto un singolo errore nella posizione i. Se moltiplichiamo questo vettore per H: Poiché x è il dato trasmesso, esso è senza errore, e quindi il risultato del prodotto di H e x è zero. Quindi Il prodotto di H con l'i-esimo vettore della base estrae la colonna i-esemi di H. Per esempio, supponiamo di aver introdotto un errore sul bit numero 5 Il diagramma a destra mostra come il bit sbagliato (mostrato in blu) causa una parità sbagliata (mostrata in rosso) nei cerchi rosso e verde. Il bit sbagliato può essere riconosciuto calcolando la parità dei cerchi rosso, verde e blue. Se viene trovato una parità sbagliata allora il bit che si sovrappone ai cerchi dell'unico bit di parità sbagliato è il bit con l'errore. Nell'esempio, i cerchi rosso e verde hanno parità sbagliata, quindi il bit corrispondete all'intersezione del cerchio rosso e verde, ma non blu, indica il bit sbagliato. Ora, che corrisponde alla quinta colonna di Questo valore ricevuto adesso è uguale a quello trasmesso modifica DecodificaUna volta che dal vettore ricevuto è stato eliminato l'eventuale errore il messaggio ricevuto va decodificato nei 4 bit originali. Si definisce la matrice Il valore ricevuto pr è e usando l'esempio sopra modifica Errori multipliNon è difficile mostrare che solo gli errori di singolo bit possono essere corretti usando questo schema. Alternativamente, il codice può essere usato per rivelare un errore singolo o doppio, semplicemente notando che il prodotto di H è non nullo quando questi errori avvengono. Nel diagramma a destra i bit 4 e 5 sono invertiti. Questo provoca un solo errore di parità nel cerchio verde, ma l'errore non è correggibile. Inoltre, il codice Hamming (7,4) non può distinguere tra errori di singolo bit e errori su due bit. modifica Tutti i codiciPoiché la sorgente è formata da solo 4 bit ci sono solo 24 = 16 possibili parole trasmissibili. Si può includere anche un ottavo bit per un controllo di parità extra che consente in aggiunta di rivelare gli errori doppi, ma non di correggerli. (I bit di dati sono in blu; i bit di parità sono in rosso; il bit extra di parità in verde.) modifica Note
|
| All Right Reserved © 2007, Designed by Stylish Blog. |