Codice di Hamming: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
replaced: cosi → così (2) using AWB |
m →top: sistemazione fonti, smistamento lavoro sporco e fix vari |
||
(36 versioni intermedie di 24 utenti non mostrate) | |||
Riga 1:
{{F|teorie dell'informatica|arg2=telecomunicazioni|febbraio 2013}}
Nelle [[telecomunicazioni]] il '''codice di Hamming''' è un [[Forward Error Correction|codice correttore]]
[[codice lineare|lineare]] che prende il nome dal suo inventore [[Richard Hamming]]. Il codice di Hamming può rilevare e correggere gli errori di un singolo bit. In altre parole, la [[distanza 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 dei [[codice lineare|codici lineari]], ed i suoi parametri sono <math>\left[\frac{q^m-1}{q-1},\frac{q^m-1}{q-1}-m,3\right]</math>, dove ''q'' è la grandezza dell'alfabeto utilizzato (ad esempio 2 se è binario) e ''m'' è il numero di bit usati.
Riga 6 ⟶ 7:
Il [[bit di parità|codice 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 contiene ''N'' informazioni distinte, la rappresentazione in forma binaria di ciascuna di esse avviene utilizzando una parola di ''n'' bit in modo che si verifichi:
Se, <math>2^n\ = \ N</math>, 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.
Riga 50 ⟶ 51:
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 ==
Legenda:
* <math>n</math>, il numero di bit del messaggio originale;
* <math>k</math>, il numero di "check" bit (di ridondanza) aggiunti al messaggio originale;
* <math>m=n+k</math>, il numero di bit del messaggio finale (cioè il messaggio dopo la codifica con Hamming).
# Trovare
# Posizionare i K bit trovati, all'interno del messaggio originale, secondo le potenze del 2 (<math>2^0=1; 2^1=2; 2^2=4; 2^3=8;....</math>, si considerano le potenze in base al valore di K, se K è uguale a tre si prenderanno in considerazione le potenze fino a <math>2^2=4</math>);
# 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 quali ''digit'' 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 ==
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.
Riga 73 ⟶ 74:
Messaggio corretto:
Messaggio Originale:
{| align=center border=1
! K!! Bit di Parità
Riga 88 ⟶ 89:
|-
|}
Si ottiene così il messaggio codificato:
''Ricevitore''
Riga 120 ⟶ 121:
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 ==
* [[codice Hamming(7,4)]]
* [[distanza di Hamming]]
Riga 126 ⟶ 127:
== Altri progetti ==
{{interprogetto|
== Collegamenti esterni ==
{{Portale|matematica}}▼
* {{Collegamenti esterni}}
* {{FOLDOC|Hamming code|Hamming code}}
▲{{Portale|matematica|informatica}}
[[Categoria:Teoria dei codici]]
[[Categoria:Logica matematica]]
|