Codici di Hamming
Bibliografia

 

Un  aspetto importante nel trattamento dell'informazione è quello del rilevamento e della gestione degli errori che alterano il codice di nostro interesse. Per esempio può capitare che si verifichino degli errori all'interrno delle memorie RAM dei computer  a causa di picchi di tensione oppure errori di trasmissione dovuti alle linee di comunicazione analogiche e digitali. Si possono adottare due metodologie per trattare gli errori: la prima consiste nell' includere nei dati sufficiente informazione ridondante da permettere l'individuazione e la correzione dell'errore, la seconda, invece, consiste nell' includere nei dati informazione sufficiente da permettere la sola individuazione dell'errore. La prima strategia utilizza i codici di correzione degli errori, mentre la seconda i codici di rilevamento degli errori (vedi testo 5. pagg. 61-64).

Supponiamo di costruire un codice che rilevi e corregga errori di un solo bit in una parola formata da m bit di dati e r bit di controllo ed in particolare utilizziamo l'algoritmo di Hamming per stringhe di lunghezza 4 bit.

Innanzitutto calcoliamo il minimo numero dei bit di controllo per una stringa di tale lunghezza: è dato dal più piccolo r che risolve:

  m+r+1 <= 2r 

in cui m e r rappresentano rispettivamente la lunghezza della parola data in input ed il numero dei bit di controllo.
Nel nostro caso m=4 perciò il più piccolo r che verifica   4+r+1 <= 2r è r=3.
Allora la stringa codificata avrà lunghezza 4+3=7 bit ed ognuno dei bit di controllo occuperà un posto di indice dato da una potenza del 2, esaminando la stringa da sinistra verso destra. Assumiamo, infatti, che i bit siano numerati progressivamente da sinistra ponendo il bit di indice 1 all'estremità sinistra. Quindi i bit di indice 1, 2, 4 sono bit di controllo, gli altri, invece sono ripartiti in opportune e specifiche sequenze di controllo. Più precisamente:

Bit di controllo

Sequenza di controllo

il bit di indice 1

controlla i bit di indici 1, 3, 5, 7

il bit di indice 2

controlla i bit di indici 2, 3, 6, 7

il bit di indice 4

controlla i bit di indici 4, 5, 6, 7

Una rappresentazione grafica che aiuta la trattazione dell' argomento e quella realizzata mediante i diagrammi di Venn che è riportata in figura 1.

 

Figura 1

Abbiamo utilizzato il simbolo ? per indicare il posto occupato dai bit di controllo  nella stringa codificata ed il simbolo $ per gli altri.
Ogni circonferenza rappresenta il dominio del bit di controllo a cui essa è relativa e una intersezione di due o più domini mostra che il bit in essa contenuto è controllato dai bit dei domini che concorrono all' intersezione.
La codifica si dirà di tipo "parità pari" se il valore il valore dei bit di controllo sarà impostato in maniera che il numero di bit di valore 1 in ogni sequenza di controllo della parola codificata sia pari; si dirà di tipo "parità dispari" se faremo in modo che il numero di bit di valore 1 per ogni sequenza di controllo sia dispari.

Inseriamo adesso , una stringa  di 4 bit e con parità pari. Il risultato apparirà in figura 1.

Supponiamo adesso che si verifichi casualmente un errore: la parità dei bit di controllo verrà modificata.

per esempio il bit di indice

   

Figura 2

  Basta poco per rilevare la posizione del bit errato: sommiamo gli indici di dei bit di controllo errati.
L' errore si trova al °  bit.

  Più in generale, possiamo codificare stringhe di qualsiasi lunghezza.

Inserisci una stringa da codificare 

                        La sua codifica è   




Se volete scaricarvi il file .zip che contiene queste pagine web cliccate qui