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