Title: CODICI
1CODICI
Si ringrazia il prof. Di Santo per aver
gentilmente messo a disposizione il proprio
materiale per la preparazione di alcune delle
slides presenti in questa dispensa.
2(No Transcript)
3(No Transcript)
4(No Transcript)
5Codici Ridondanti
6Codici Ridondanti
- Per consentire la rilevazione e la correzione di
errori si ricorre frequentemente a codici
ridondanti, ovvero che utilizzano un numero
maggiore di bit rispetto al numero strettamente
necessario per codificare linsieme sorgente. Ad
esempio - m bit di dati (linformazione da trasmettere)
- r bit di controllo (bit ridondanti)
- ciascuna parola codice utilizza n mr bit
7Distanza di Hamming
- La distanza di Hamming di due parole di codice w1
e w2 è il numero di bit 1 in w1 XOR w2 - Rappresenta il numero di bit da invertire per
trasformare una parola di codice nellaltra - Ad esempio, se
- w1 10001001
- w2 10110001
- w1 XOR w2 00111000
- la distanza di Hamming tra w1 e w2 è pari a 3
8Distanza di Hamming (2)
- Se un codice deve rilevare d errori, la sua
distanza di Hamming deve essere almeno pari a d1 - Se la distanza fosse minore, un burst di d errori
potrebbe trasformare una parola di codice in
unaltra parola di codice lerrore non sarebbe
rilevato - Se un codice deve correggere d errori, la sua
distanza di Hamming deve essere almeno pari a
2d1 - Un burst di d errori al massimo trasforma una
parola di codice in una sequenza di bit a
distanza al più d dalla parola di codice corretta
e a distanza almeno d1 da tutte le altre parole
di codice
9Distanza di Hamming (3)
Quante sono le parole codice di 8 bit aventi
distanza di Hamming 2 da una parola di codice
assegnata avente la stessa lunghezza?
Occorre numerare tutte le possibili combinazioni
semplici di 2 bit su 8. Combinazione Semplice
(fonte Manabile di Matematica -) Dati n
oggetti distinti e un numero intero positivo
kn,si dicono combinazioni semplici di classe k
tutti i gruppi che si possonno formare con k
degli n oggetti considerando diversi due gruppi
quando differiscono di almeno un
elemento. Numero di combinazioni semplici di k
oggetti su n n n! 8 8!
78
28 k k!(n-k)! 2 2!6! 2
10Codici per la correzione degli errori
11Replicare i bit di controllo
- Un modo semplice per creare codici a correzione
derrore consiste nel replicare linformazione. - Dato un messaggio di m bit si costruisce una
parola di codice con 2d copie di ciascuno dei bit
del messaggio (r 2dm). - La distanza di Hamming del codice è 2d1, quindi
può correggere d errori - Il codice non è efficiente se d 2, l80 dei
bit sono ridondanti.
12Codice di Hamming
- Il codice di Hamming (1950) è un particolare
codice a correzione derrore - Consente di correggere 1 singolo errore
- Ha un numero di bit di controllo pari al limite
teorico inferiore (m12r-r) - Funziona con qualunque dimensione del messaggio m
13Codice di Hamming (2)
- I bit della parola di codice vengono numerati da
sinistra verso destra cominciando con lindice 1 - I bit di controllo sono quelli aventi come indice
una potenza di due (1, 2, 4,8, 16, . . . ) - I bit del messaggio sono tutti gli altri bit
della parola di codice, nellordine il bit di
controllo con indice 2k è il bit di parità dei
bit del messaggio i cui indici hanno il termine
2k nella loro scomposizione in somma di potenze
di due
14Codice di Hamming (3)
- In ricezione, ciascun bit di controllo viene
ricalcolato - Se tutti i valori dei bit di controllo sono
corretti, la parola di codice viene accettata - Se alcuni bit di controllo hanno valori non
corretti, lindice del bit in cui si è verificato
lerrore è dato dalla somma degli indici dei bit
di controllo con valore sbagliato
15Codice di Hamming Esempio 1
16Codice di Hamming Esempio 1
17Codice di Hamming Esempio 2
18Codice di Hamming Esempio 3
19Codice di Hamming Esempio 4
20Codice di Hamming Esempio 5
21Codice di Hamming Esempio 6
22Codice di Hamming Esempio 7
23Codice di Hamming per burst di errori
24(No Transcript)
25Codici per il rilevamento degli errori
- I codici per il rilevamento di errori sono in
pratica più diffusi dei codici per la correzione
di errori - i codici per il rilevamento sono molto più
efficienti dei codici per la correzione (meno
ridondanza nei bit trasmessi) - se un codice per la correzione di 1 errore
indica che un bit è errato, vi è una probabilità
non trascurabile che si sia verificato un intero
burst di errori (gli errori tendono ad addensarsi)
26Codici per il rilevamento degli errori
27Bit di parità per burst di errori
- Un metodo per rilevare interi burst di al più k
errori basato sul bit di parità è il seguente - distribuire i bit da trasmettere in una matrice
con righe di k bit - per ciascuna colonna, calcolare il relativo bit
di parità - inviare la prima riga, poi la seconda riga,
eccetera - inviare come ultima riga i bit di controllo
- Un burst di al più k errori è sempre rilevato,
perchè modifica al più un bit per ciascuna
colonna - La probabilità che un burst di p errori (p gt k)
non venga rilevato è 1/2p
28(No Transcript)
29- Il codice fallisce nellinviduare gli errori
doppi che modificano i bit di parità sulla riga i
e colonna j, rilevando erroneamente un errore
singolo in posizione i,j. - Al contrario consente di
- rilevare errori doppi sulla stessa riga
(rispettivamente colonna) in tal caso si
rilevano due errori di parità sulle relative
colonne (rispettivamente righe). - correggere errori doppi in posizioni
appartenenti a righe e colonne differenti 4
errori di parità