10. Codici correttori d’errore
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
•2
Codici correttori d’errore
Obiettivi:
correggere o rivelare errori nella trasmissione di
sequenze numeriche (sequenze di simboli, usualmente
binari)
Correzione di errore → Eliminare l’errore dalla
sequenza ricevuta
Rivelazione di errore → Segnalare l’errore nella
sequenza ricevuta
•richiedere la ritrasmissione
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
Esempio di correzione di errore
tratto da esperienza comune
Messaggio da trasmettere
....arriverò il 26/4/2002...
Errore di trasmissione; messaggio ricevuto:
....arriverò il 28/4/2002...
Errore non visibile, né recuperabile, in ricezione.
Messaggio codificato :
....arriverò il ventisei aprile prossimo venturo...
Due errori di trasmissione; messaggio ricevuto :
....arriverò il vantisei aprole prossimo venturo...
Errori correggibili da parte del ricevente.
Costo dell’operazione di codifica: un messaggio
con più caratteri alfanumerici, cioè con una maggiore
ridondanza
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
3
4
Ridondanza- Definizione
La Ridondanza ρ di un messaggio discreto (sequenza di simboli):
ρ
≡
ΝΤ − Ν I
ΝΤ
=
ΝR
≤1
ΝΤ
dove si è indicato con
NI il numero di simboli strettamente necessario
per trasmettere l’informazione contenuta nel messaggio,
NT il numero totale dei simboli contenuti nel messaggio stesso
(quindi NR = NT - NI numero di simboli ridondanti).
Il valore della ridondanza è compreso nell’intervallo
messaggio costituito
dal minimo numero
di simboli possibile
0 ≤ ρ ≤ 1
messaggio
con contenuto
informativo nullo
(solo ridondanza)
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
5
Canale Discreto
xn
sequenza
di
simboli di
ingresso
canale
discreto
yn
sequenza
di
simboli di
uscita
per ogni simbolo introdotto all’ingresso
viene prodotto
un simbolo in uscita dal canale
I simboli sono usualmente costituititi da bit, singoli
o raggruppati in parole binarie.
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
6
Esempi di canali discreti (1/2)
Sistema di trasmissione per segnali di dati (segnali numerici):
Sorgente
di dati
Destinatario
dei dati
sequenza di
simboli di ingresso
Modulatore
numerico
sequenza di
simboli di uscita
Mezzo
trasmissivo
Demodulatore
numerico
canale discreto
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
7
Esempi di canali discreti (2/2)
Sistema di trasmissione per segnali fonici:
altoparlante
microfono
codificatore
PCM
segnali
analogici
sequenza di simboli
di ingresso (bit)
Modulatore
numerico
decodificatore
PCM
sequenza di simboli
di uscita (bit)
Mezzo
trasmissivo
demodulatore
numerico
canale discreto
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
8
Canali discreti binari, ideali o rumorosi
....001011011....
canale
binario
ideale
....001011011....
la sequenza di simboli di uscita è identica a quella di ingresso
....001011011....
canale
binario
rumoroso
....011010010...
.
la sequenza di simboli di uscita contiene errori casuali
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
9
Canale discreto binario (1/2)
CANALE BINARIO RUMOROSO
1-p
X
0
0
p
1
p’
Y
1
1-p’
p = probabilità che uno “0” introdotto all’ingresso dia luogo a un “1” in uscita
= P(Y = 1| X = 0)
p’ = probabilità che un “1” introdotto all’ingresso dia luogo a uno “0” in uscita
= P(Y = 0 | X = 1)
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
10
Canale discreto binario (2/2)
CANALE BINARIO IDEALE
0
X
p = p’ = 0
1
;
1
1
0
1
1 - p = 1 - p’ = 1
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
Y
11
Canale Binario Simmetrico
Canale binario con p = p’
1-p
0
0
p
X
1
Y
p
1
1-p
il parametro p è la “probabilità di errore” del canale che è uguale a
p=P(Y=0|X=1)=P(Y=1|X=0)
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
12
Canale discreto generico
{a0 , ... , aα-1}
a0
alfabeto
di ingresso
a1
α ordine
dell’alfabeto
di ingresso
ai
b0 {b ,... , b }
0
β-1
b1
.
alfabeto
.
.
.
.
.
.
.
.
P(bk |ai )
bβ-3
bβ-2
bβ-1
aα-2
X
aα-1
P(Y=bk |X=ai)
Probabilità
di transizione
del canale
.
.
.
di uscita
bk β ordine
dell’alfabeto
di uscita
Y
Probabilità di ricevere il simbolo bk,
condizionata all’aver trasmesso il
simbolo ai,
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
13
Comportamento del canale discreto
• In funzione del tempo
Le probabilità di transizione
possono variare in funzione del
tempo
• In funzione della
sequenza di simboli
trasmessa
Le probabilità di transizione
possono dipendere dai simboli
trasmessi prima del simbolo
attuale (od anche dopo)
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
Canale binario simmetrico
stazionario e senza memoria
E’ un canale binario simmetrico in cui le probabilità di transizione:
¾sono costanti nel tempo (“stazionarietà”)
¾non dipendono dai simboli trasmessi prima o dopo il
simbolo in esame (il canale “non ha memoria”)
Per questo tipo di canale la probabilità di errore, p , è un parametro
costante che caratterizza completamente il canale stesso.
Il canale binario simmetrico, stazionario, senza memoria costituisce il
caso di riferimento per lo studio dei codici correttori d’errore binari.
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
14
15
Probabilità di errore p nel BSC
p
0
0.5
1
intervallo di valori teoricamente possibili
intervallo di valori presi in
considerazione nella teoria
dei codici
La probabilità p
è compresa per
definizione
nell’intervallo
0≤p≤1
Un BSC con probabilità di errore
p > 0,5 è equivalente a un BSC con
probabilità d’errore q = 1-p < 0,5
seguito da un invertitore (0→1 ; 1 →0)
Esempio:
Canale radio-mobile (GSM) p≅10-1, p≅10-2,
intervallo di valori di
-2
,
Downlink
satellitare
(DVB-S)
p≅10
interesse applicativo, con p
Cavo Coassiale (DVB-C) p≅10-4,
sufficientemente piccolo
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
16
Schema di trasmissione con impiego di
codifica per correzione d’errore
probabilità di probabilità di errore dopo
errore di
decodificazione = Pe
canale = p
Sorgente
binaria
codificatore
sequenza
trasmessa
Canale
binario
simmetrico
sequenza
codificata
decodificatore
destin.
Sequenza decodificata
eventualmente affetta
da errore
La codifica è utile se ha l’effetto di ridurre la probabilità di errore, ossia se
Pe < p
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
Esempio di codice correttore d’errore
Data una sequenza binaria di sorgente, codificare ogni simbolo con una
parola di 3 simboli, secondo la corrispondenza biunivoca
simbolo di
sorgente
0
1
parola
di codice
0 0 0
1 1 1
Esempio:
sequenza di sorgente. . . . 0
1
1
0
1
. . .
sequenza codificata. . . . . 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1…
In base a quale criterio di decodifica il codice corregge gli errori?
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
17
Criterio di decisione a Massima Verosimiglianza (ML) per
18
trasmissioni in canali binari discreti e rumorosi
x
Sequenza
binaria
trasmessa
Canale
binario
r
Sequenza
binaria
ricevuta
Decisore
MLD
x^
Sequenza
decisa
• Supponiamo che la sequenza x=[x0…xn-1] possa assumere uno degli L possibili valori
{c0, c1,…, cL-1} ciascuno dei quali è una stringa binaria lunga n bit
• Indichiamo con r=[r0…rn-1] la stringa binaria ricevuta (ossia “misurata”) all’uscita del
canale binario.
• Indichiamo con {P(r|x=ci, i=0,…,(L-1)} le risultanti L probabilità di transizione del
canale binario.
Criterio di decisione ML
Ricevuto r, il decisore scegli come decisione quella tra gli L possibili valori {c0, c1,…,
cL-1} alla quale corrisponde la probabilità di transizione più grande, ossia in formule
x̂ = arg max {P ( r | x = ci )}
0≤ i ≤ L −1
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
19
Esempio di decodifica a massima verosimiglianza
Canale Binario Simmetrico stazionario
senza memoria, p<0.5
Errori sui bit indipendenti
Messaggi trasmessi lunghi 3 bits
Probabilità che sia commesso
1 errore P1=p (1-p)2
2 errori P2=p2(1-p)
3 errori P3=p3
P3 < P2 <P1
101
canale
P(101|111) > P(101|000)
(un solo errore è più
probabile di due)
viene da
111 o da 000 ?
111 !
Cioè la sorgente
ha emesso un 1
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
20
Codici a blocco (n,k)
I simboli binari emessi dalla sorgente sono codificati a gruppi
di k (“parole”)
Il codificatore, ad ogni parola di sorgente di k simboli in
ingresso, associa biunivocamente una parola di codice
formata da n simboli in uscita, con n > k
In generale, un codice a blocco risulta definito da 2k parole di codice di n
simboli, scelte tra le 2n sequenze possibili di n simboli. Ad esempio
Codice a blocco (3,1):
2 parole di sorgente possibili (21 = 2) → 0, 1
2 parole di codice (scelte tra 23 = 8 possibili)→ 000, 111
Codice a blocchi (5,2):
4 parole di sorgente possibili (22 = 4) → 00, 01, 10, 11
4 parole di codice (scelte tra 25 = 32 possibili)→ 00000, 01111, 10110, 11001
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
Schema generale per la
co-decodifica di un codice a blocco (n,k)
sorgente
parola di sorgente
emessa
formata da k simboli
(2k parole possibili)
destinatario
^
a
a
codificatore
decodificatore
parola di sorgente
decisa,
formata da k simboli
(2k parole possibili),
non necessariamente
uguale ad a, a causa di
errori di decodifica.
canale
c
parola di codice
formata da n simboli
(2k parole scelte tra 2n
possibili)
BSC
r
sequenza ricevuta
formata da n simboli
(2n sequenze possibili, a causa
degli errori di canale)
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
21
22
Distanza di Hamming fra sequenze binarie
Date due sequenze binarie x ed y formate da m simboli, si
definisce Distanza di Hamming d(x,y) il numero di simboli, in
posizioni omologhe, in cui le due sequenze differiscono.
Si osservi che risulta 0≤d≤n.
Esempio per n = 7:
sequenza x →
sequenza y →
distanza:
n
0101111
1100011
d=3
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
23
Distanza minima di Hamming di un codice a blocchi
Si definisce come distanza minima dmin di Hamming di un codice a blocco
(n,k) il minimo valore della distanza di Hamming tra due parole qualsiasi
appartenenti al codice
Il codice (3,1), ed il codice (5,2) prima definiti hanno ambedue distanza dmin = 3.
000
111
d=3
d=3
d=3
00000
01111
10110
11001
d=4
d=3
d=4
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
d=3
24
Relazione tra distanza di un codice e probabilità di errore dopo
decodificazione (1/2)
canale
0
dal
codificatore
1-p
al decodificatore
0
p
c = [c0 , c1 ,..., cn-1]
1
p
1
r = [r0 , r1 ,..., rn-1]
1-p
9Sia t (0 ≤ t ≤ n) la distanza di Hamming tra c e r, ossia:
d(r,c) = t
9Quindi, su n simboli trasmessi abbiamo:
t trasmissioni con errore
n-t trasmissioni senza errore
9Supponiamo gli errori statisticamente indipendenti (canale senza
memoria), allora la probabilità di transizione di canale è calcolabile
come segue
t
n −1
P ( r | c ) = ∏ P ( ri | ci ) = p (1 − p )
t
i =0
n −t
⎛ p ⎞
n
=⎜
⎟ (1 − p )
⎝1− p ⎠
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
25
Relazione tra distanza di un codice e probabilità di errore dopo
decodificazione (2/2)
Criterio di decisione a Massima Verosimiglianza:
data la sequenza r ricevuta, decidere in favore della parola di
codice c per la quale è massima la P(r|c) data dalla
t
⎛ p ⎞
n
−
P (r | c) = ⎜
1
p
)
⎟ (
⎝ 1− p ⎠
Per p≤0.5 il massimo di P(r|c) al variare di c si ha in corrispondenza del
minimo di t.
Criterio della Minima Distanza di Hamming:
data la sequenza ricevuta r, decidere in favore di quella del codice
c* che ha la minima distanza di Hamming da r.
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
26
Esempio di decodifica a minima distanza di Hamming
Codice (5,2) con dmin = 3 :
Parole del codice: 00000 01111
10110
11001
Parola trasmessa: 10110
Errori nel canale Sequenza ricevuta
Parola decisa
0
10110
10110
1
10111
10110
1
10100
10110
1
10010
10110
1
11110
10110
1
00110
10110
2
00111
00111
…
…
…
3
3
3
3
3
3
2
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
min d(r,c) = 0
min d(r,c) = 1
min d(r,c) = 1
27
Capacitò di correzione di errori del codice
Sia c(T) la parola di codice trasmessa e sia r la sequenza ricevuta, con
d(r, c(T) ) = t
Dato che r è stata ottenuta da c(T) modificandola in t posizioni, occorre
modificare r in almeno altre dmin - t posizioni per ottenere un’altra
parola di codice, distante almeno dmin da c(T) .
Per t < dmin /2 valgono le relazioni
d(r, c ) ≥ dmin - t > t
per ogni c ≠ c(T)
Nelle condizioni dette la decodifica a minima distanza è sempre
corretta. Quindi deduciamo che
un codice a blocco (n,k) con distanza di Hamming dmin
garantisce la correzione di tutte le configurazioni di
errore contenenti un numero di errori t ≤ ⎣(dmin–1)/2⎦
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
28
Capacità di rivelazione d’errore di un codice a blocco
Un codice a blocco (n,k) può essere anche usato per rivelare errori di
canale nella sequenza ricevuta r.
9 La presenza di errori viene rivelata tutte le volte che la sequenza ricevuta
r non coincide con alcuna delle parole di codice {c0,c1,…,cL-1} .
9 Errori di canale che trasformino una parola di codice in un’altra non
possono essere rivelati. Quest’ultima evenienza può evidentemente verificarsi
soltanto se t≥ dmin .
9 Quindi
un codice a blocco (n,k) con distanza dmin garantisce
la rivelazione di tutte le configurazioni di errore
contenenti un numero di errori t ≤ dmin-1
Correzione d’errore
t ≤ ⎣(dmin–1)/2⎦
Rivelazione d’errore
t ≤ dmin-1
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
29
Codici a controllo di parità
Sono codici a blocco (k + 1, k)
La parola di codice c è ottenuta dalla parola di sorgente a
aggiungendo un “bit di parità” , “0” oppure “1”, tale che
il numero di “1” contenuti in c sia pari.
9
9
9
Sono caratterizzati da dmin = 2
Capacità di rivelazione di un singolo errore di canale
Capacità di correzione d’errore nulla
Esempio (n = 8 ; k = 7):
Parola di sorgente a:
Parola di codice c:
0100110
01001101 bit di parità
Sequenza ricevuta r:
con un errore: 01011101 Numero dispari di ”1”, errore rivelato
con due errori: 11011101 Numero pari di “1”, errore non rivelato
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
30
Probabilità d’errore residua dopo decodificazione
(1/2)
Trasmissione senza codifica:
a
â
canale BSC
prob.err. = p
sorgente
destinazione
^
Pe =P(a≠a)=
p
La probabilità di simbolo errato Pe al destinatario è uguale alla
probabilità d’errore del canale, p.
Trasmissione con codifica a correzione d’errore:
a
sorgente
c
codificatore
ĉ
canale BSC
prob.err. p
decodificatore
destinazione
^
Pe = P(c≠c)=
<p
la probabilità Pe di errore “residuo” dopo decodificazione (dovuta agli
errori che non vengono corretti dal decodificatore) è minore della
probabilità d’errore del canale, p.
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
31
Probabilità d’errore residua (2/2)
Codice (n,k) a distanza dmin
Ha la capacità di correggere tutte le configurazioni d’errore con un
numero massimo di errori t = ⎣(dmin-1)/2⎦
^ probabilità di errore sulla parola
Relazione di calcolo per la Pe =P(c≠c)
di codice:
Pe =
n
∑
i = t +1
⎛n⎞ i
⎛ n ⎞ t +1
n −i
⎜ ⎟ p (1-p ) ≅ ⎜
⎟ p , p << 1/ 2
⎝i⎠
⎝ t + 1⎠
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
Complessità della co-decodifica
Codificatore:
Accesso a tabella che definisce la corrispondenza biunivoca tra parole
di sorgente e parole di codice. Tale tabella contiene 2k coppie di
elementi.
complessità esponenziale con k
Decodificatore:
Confronto della sequenza ricevuta con le 2k possibili parole di codice
trasmesse.
complessità esponenziale con k
Esistono codici a contenuto algebrico, nei quali le operazioni di co-decodifica
sono realizzate mediante operazioni algebriche e non mediante accesso a
tabella (teoria elgebrica dei codici)
riduzione della complessità (lineare in k)
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
32
33
Ridondanza e “transmission rate”
Si definisce “transmission rate” (tasso di trasmissione) R di un codice il
rapporto tra numero di simboli entranti ed uscenti dal codificatore
dove ρ
R=
k
= 1− ρ
n
n−k
ρ=
n
rappresenta la ridondanza del codice. Poiché n>k, avremo che R<1.
Modulo TLC:TRASMISSIONI – Codici correttori d’errore
34
Scelta dei valori di k e di n
Si consideri costante il transmission rate k/n.
All’aumentare di k e di n:
9 È possibile trovare codici aventi dmin (e quindi capacità di rivelazione e
di correzione d’errore) più elevata
9 Aumenta la complessità di co-decodifica
9 All’aumentare solo di n, diminuisce il transmission rate R.
Modulo TLC:TRASMISSIONI – Codici correttori d’errore