Movatterモバイル変換


[0]ホーム

URL:


Vai al contenuto
WikipediaL'enciclopedia libera
Ricerca

Codice di Hamming

Da Wikipedia, l'enciclopedia libera.
Niente fonti!
Questa voce o sezione sugli argomenti matematica e telecomunicazioninon cita le fonti necessarie o quelle presenti sono insufficienti.

Puoimigliorare questa voce aggiungendo citazioni dafonti attendibili secondo lelinee guida sull'uso delle fonti. Segui i suggerimenti delprogetto di riferimento.

Nelletelecomunicazioni ilcodice di Hamming è uncodice correttorelineare che prende il nome dal suo inventoreRichard Hamming. Il codice di Hamming può rilevare e correggere gli errori di un singolo bit. In altre parole, ladistanza di Hamming tra le code-word trasmesse e ricevute deve essere zero o uno per una comunicazione affidabile. In alternativa, il codice può rivelare (ma non correggere) errori doppi.

Il codice di Hamming fa parte deicodici lineari, ed i suoi parametri sono[qm1q1,qm1q1m,3]{\displaystyle \left[{\frac {q^{m}-1}{q-1}},{\frac {q^{m}-1}{q-1}}-m,3\right]}, doveq è la grandezza dell'alfabeto utilizzato (ad esempio 2 se è binario) em è il numero di bit usati.

Ilcodice di parità consente la rilevazione dell'errore ma non la sua correzione. Aumentando la ridondanza nel messaggio (aggiunta di bit per la rivelazione e la correzione degli errori) è possibile conoscere anche la posizione del bit errato e quindi correggerlo. Il codice di Hamming fornisce questa possibilità.

Se un codice contieneN informazioni distinte, la rappresentazione in forma binaria di ciascuna di esse avviene utilizzando una parola din bit in modo che si verifichi:2n N{\displaystyle 2^{n}\geq \ N}.

Se,2n = N{\displaystyle 2^{n}\ =\ N}, un errore in uno o più bit porta ad una configurazione binaria diversa che corrisponde, però, sempre ad un dato appartenente allo stesso codice: in pratica non si riesce a comprendere se vi è stato un errore o meno.

Ad esempio, supponiamo di voler codificare le cifre decimali da 0 a 9 utilizzando 5 bit. Con 5 bit sono possibili25 = 32{\displaystyle 2^{5}\ =\ 32} configurazioni differenti di cui solo 10 saranno utilizzate. Se vi è un errore il dato potrebbe assumere una delle altre 22 configurazioni e sarà, quindi, possibile rivelare un errore. Si noti che per la codifica delle 10 cifre decimali sarebbero necessari solo 4 bit. Il quinto bit èridondante. Resta da definire la modalità di codifica. Un buon criterio è quello che associa ad ogni cifra decimale una configurazione binaria in cui sono presenti sempre due 1 e tre 0 (o viceversa) come nella seguente tabella.

DecimaleCodifica
011000
110100
210010
310001
401100
501010
601001
700110
800101
900011

Si noti che se si verifica un errore il numero di 1 presenti nel codice si altera. Anche questo tipo di codifica individua la presenza ma non la posizione dell'errore.

Metodo di costruzione del codice

[modifica |modifica wikitesto]

Legenda:

  1. Trovare un valore di K:n+12kk{\displaystyle n+1\leq 2^{k}-k};
  2. Posizionare i K bit trovati, all'interno del messaggio originale, secondo le potenze del 2 (20=1;21=2;22=4;23=8;....{\displaystyle 2^{0}=1;2^{1}=2;2^{2}=4;2^{3}=8;....}, si considerano le potenze in base al valore di K, se K è uguale a tre si prenderanno in considerazione le potenze fino a22=4{\displaystyle 2^{2}=4});
  3. Trovare il valore dei K:
    • Codificare in binario le posizioni dei bit del messaggio finale (ad es. per un messaggio a 6 bit, si numereranno le posizioni dalla prima - 001- alla sesta - 110);
    • Si controllano le posizioni in binario di ogni K, facendo attenzione a quale posizione occupa il bit 1 (ad es. nella posizione 1 occupa la posizione più a destra; nella posizione 2, invece, la posizione centrale), e qualidigit del messaggio possiedono un 1 nella stessa posizione;
    • Si prendono in considerazione i digit trovati e si trova il bit di parità (es. digit1=1, digit2=0,digit3=0; bit di parità=1), il bit di parità corrisponderà al valore di K.

Rilevazione e correzione dell'errore

[modifica |modifica wikitesto]

Una volta codificato il messaggio secondo Hamming, questi arriva al ricevitore il quale lo controlla prima di utilizzarlo dato che a causa dei rumori di segnale il messaggio può subire delle modifiche.Supposto che al ricevitore arrivi un messaggio errato si procede seguendo la regola prima descritta, cioè facendo il bit di parità dei bit legati fra loro dallo stesso K.

Esempio:

Messaggio corretto:

Messaggio Originale:10

KBit di Parità
K1(3,5)1
K2(3)1
K3(5)0

Si ottiene così il messaggio codificato: 11100

Ricevitore

Messaggio ricevuto (errato): 11000

KBit di Parità
K1(3,5)0
K2(3)0
K3(5)0

Ottenuti i valori dei K, si esegue l'operazione logica XOR fra i K corrispondenti del messaggio del ricevitore e quelli della sorgente. Si otterrà così una sequenza verticale di numeri binari.

Esempio:

K1 (1) XOR K1r (0)= 1

K2 (1) XOR K2r (0)= 1

K3 (0) XOR K3r (0)= 0

I risultati ottenuti vengono poi letti dal basso verso l'alto ottenendo la posizione in binario del bit errato (nel nostro caso otteniamo 011 (3dec))

Voci correlate

[modifica |modifica wikitesto]

Altri progetti

[modifica |modifica wikitesto]

Altri progetti

Collegamenti esterni

[modifica |modifica wikitesto]
Estratto da "https://it.wikipedia.org/w/index.php?title=Codice_di_Hamming&oldid=136312200"
Categorie:
Categorie nascoste:

[8]ページ先頭

©2009-2025 Movatter.jp