Sistemi di Telecomunicazioni Corso di Laurea Specialistica in Ingegneria delle Telecomunicazioni (DM 270) A.A. 2014-2015 Pietro Guccione Contenuti Teoria dell’Informazione Basi della Teoria dell’informazione Teorema di Shannon Prestazioni dei sistemi di codifica Regime a potenza o a banda limitata Teorema della capacità di canale Introduzione ai codici P Guccione Teoria dell’Informazione Lo schema di principio su cui si basa la teoria dell’informazione è il seguente sorgente destinazione canale rumore Le principali domande a cui dà risposta la teoria dell’informazione sono quindi: • il modo più economico per rappresentare i messaggi in modo da trasmettere informazione, con qualità prefissata, su un canale non ideale • come si possa trasmettere l’informazione su canale non ideale in modo affidabile Tecniche utilizzabili in pratica: • codifica di sorgente senza/con perdita di informazione. (Esempi: file/immagine) • codici di rivelazione/correzione dell’errore Codifica senza vincoli di complessità: limite di Shannon P Guccione Codifica di sorgente È necessario definire la qualità dell’informazione emessa da una sorgente. Questa è detta entropia. È legata al costo minimo per la rappresentazione della sequenza di messaggi emessi dalla sorgente Tipi di sorgenti: • continue: filtraggio, campionamento, quantizzazione • discrete: intrinsecamente, come file, etc • con memoria: i bit dipendono tra loro. Spesso è difficile valutare il grado di correlazione tra i simboli (esempio: nella lingua parlata la correlazione esiste, può essere anche molto lunga, ed è variabile nel tempo e a seconda del linguaggio) • senza memoria: i bit sono emessi indipendentemente l’uno dall’altro Le sorgenti si suppongono stazionarie: la probabilità di emissione dei simboli è costante nel tempo. Le sorgenti si suppongono ergodiche: l’osservazione di una realizzazione permette di dedurre informazioni statistiche sull’intero processo (medie d’insieme e temporali coincidono con probabilità 1). P Guccione Teorema dell’equipartizione 1 Permette di ricavare il concetto di informazione legata all’emissione di un simbolo. Data una sorgente che emette simboli xi, scelti in un alfabeto di M simboli, ciascuno con probabilità pi=P(xi), un messaggio molto lungo, fatto da N simboli, conterrà: Np1 simboli x1, Np2 simboli x2, …, NpM simboli xM. Per la legge dei grandi numeri, al tendere di N ad infinito la probabilità che siano presenti proprio Np1 simboli x1, Np2 simboli x2, …, NpM simboli xM tende ad 1. Questi messaggi si differenziano per la posizione dei simboli al loro interno. La probabilità del singolo messaggio: pmess p1Np1 p2Np2 ... pMNpM Siccome i messaggi emessi sono equiprobabili (per l’ergodicità), allora i possibili messaggi sono: 1/pmess. Il minimo numero di bit necessari per descrivere tutto il messaggio è: n log 2 P Guccione 1 log 2 pmess pmess Teorema dell’equipartizione 2 Quindi il numero medio di bit necessari per descrivere il singolo simbolo è: Questa quantità è l’entropia della sorgente. Si misura in bit/simbolo e dice qual è l’informazione media legata alla sorgente, cioè la parte non predicibile del messaggio. La quantità Rappresenta il minimo numero di bit teoricamente necessari per descrivere mediamente un simbolo. Si definisce informazione legata al simbolo emesso xi. Esempio: entropia di una sorgente che emette due simboli indipendenti tra loro: P Guccione Proprietà legate all’entropia L’entropia rappresenta il modo più economico con cui si può codificare una sorgente, ed è quindi sempre minore del numero medio di bit per simbolo necessari a codificare qualunque sorgente. numero medio di bit per simbolo Un codice è univocamente decodificabile se vale la disuguaglianza: Da qui si ricava che: Se si sceglie, per ciascun simbolo, un numero di bit pari a: si ha facilmente che: Se si effettuano codifiche a blocchi, si ha e quindi: B quindi se N è sufficientemente grande, il numero di bit per simbolo tende ad H(X). P Guccione Codifiche prossime all’entropia /1 Codifica di Huffmann: costruita mediante un albero binario, è univocamente decodificabile, poiché ogni codice non è prefisso dei codici precedenti. È necessario conoscere le probabilità di emissione dei simboli. Codifica universale: non richiede la conoscenza delle probabilità di emissione dei simboli. Si basa sull’idea di codificare sequenze sufficientemente lunghe. Si consideri una sorgente binaria con probabilità di emissione pari a p per 1 e 1-p per 0. Il singolo messaggio sarà impredicibile, ma su una sequenza lunga possiamo prevedere che vi saranno Np uni e N(1-p) zeri. [La deviazione standard per una binomiale tende a diventare trascurabile rispetto al valore medio (cresce con la radice quadrata di N).] P Guccione Codifiche prossime all’entropia /2 Dato un messaggio di N simboli, si conta il numero di 1 e si codifica con: bit. Al crescere di N il numero di bit/simbolo è trascurabile: lim N log( N 1) 0 N Inoltre si codifica anche la particolare disposizione degli 1 nel messaggio. Sono necessari bit. Si può dimostrare che il costo del messaggio tende ad H(X) al tendere di N ad infinito. P Guccione Entropia condizionata Si introduce quando esiste memoria nella sorgente: l’emissione di un simbolo dipende da quella dei simboli precedenti. Il condizionamento non aumenta l’entropia: Entropia congiunta: Per sorgenti con memoria è possibile definire l’entropia come il limite dell’entropia condizionata ai simboli precedenti, facendo tendere il numero dei simboli precedenti ad infinito (o sino a che non si esaurisce la memoria della sorgente): H ( X ) lim H ( X k / X k 1 , X k 2 ,...,X k N ) N Nelle sorgenti con memoria conviene, per ridurre il numero di bit/simbolo, codificare a blocchi, quindi sfruttare la conoscenza della memoria della sorgente. P Guccione Modelli del canale di trasmissione 1 Un canale di trasmissione può sempre essere ridotto al suo modello equivalente discreto, dato che, dopo codifica, il segnale passa attraverso il mezzo trasmissivo, viene ricevuto (eventualmente modula / demodula una portante) e campionato: sorgente X codifica canale filtro rx mezzo trasmissivo campionatore sorgente Y=X+N noise La descrizione di una canale di trasmissione richiede: • la conoscenza dell’alfabeto di ingresso e la probabilità di emissione dei simboli P( xi ) • la conoscenza dell’alfabeto di uscita yj • le probabilità di transizione ingresso/uscita: P( y j / xi ) Si possono quindi calcolare le probabilità di emissione dei simboli P( y j ) Nell’ipotesi di ingresso continuo o uscita continua, le probabilità discrete diventano densità di probabilità: p( x), p( y), p( y / x) I modelli che usualmente si adottano sono: AWGN (con uscita continua: decisione soft) e BSC (Binary Symmetric Channel, con uscita discreta: decisione hard). P Guccione Modelli del canale di trasmissione 2 È detta informazione mutua che transita su canale, la quantità L’informazione mutua dipende dal canale e dalla statistica della sorgente ed ha il significato di informazione residua che giunge a destinazione dopo che è stata tolta l’equivocazione dovuta al canale. Se invece la si scrive come: ha il significato di informazione che giunge a destinazione “corretta” dalla presenza del rumore. Infatti risulta: essendo: Equivocazione, cioè quella parte di informazione dovuta alla non idealità del canale. Al variare della statistica della sorgente il canale può essere più o meno in grado di trasmettere informazione. Si definisce capacità del canale, la massima informazione mutua possibile, al variare della distribuzione di probabilità della sorgente all’ingresso: P Guccione Capacità di canale Nel caso discreto la capacità di canale vale quindi: Nel caso continuo, definita l’entropia come: si ha, se è continua solo Y: se è continua X ed Y: Poiché si considera sempre rumore additivo ed indipendente: y=x+n, si ha anche: Quindi: P Guccione Teorema di Shannon 1 Per calcolare la capacità con l’espressione precedente basta cercare il massimo dell’entropia H(Y). Se p(y) è la densità di probabilità di una generica variabile casuale y con valor medio my e varianza σy2 e se Z(y) è la densità gaussiana di pari valor medio e varianza, si ha Se come caso particolare si pone p(y) = Z(y) si ottiene il valore dell’entropia di una variabile casuale gaussiana con varianza σy2 Se invece y è una generica variabile casuale, con densità p(y) e varianza σy2 si ha con uguaglianza se e solo se p(y) = Z(y), cioè nel caso gaussiano. P Guccione Teorema di Shannon 2 Il valore dell’entropia di una sorgente gaussiana è: Se la sorgente ha densità di probabilità qualunque p(y) invece: Fissata la potenza (e quindi la varianza), l’entropia di Y è massima se è gaussiana. Poiché si suppone il rumore gaussiano, la statistica di ingresso che rende massima la capacità di canale è la statistica gaussiana. Sotto tali condizioni, se si fissa la potenza della sorgente in ingresso: , essendo: , si ha: Quindi, equivalentemente: C P Guccione 1 S log1 2 N bit symbol Prestazioni dei sistemi di codifica 1 Scelta una modulazione numerica, il problema della codifica consiste nel cercare il massimo di H(Y) (e quindi dell’informazione mutua) a parità di energia media spesa per generare i simboli: Per semplicità tuttavia si effettua la ricerca supponendo i simboli in ingresso equiprobabili (e commettendo un piccolo errore). Esempio: in una PAM a 4 livelli, i più esterni sono più protetti da rumore, ma costano di più. L’ottimizzazione del sistema prevederebbe il loro uso con probabilità inferiore a quella dei simboli interni. Capacità di trasmissione per codifiche M-PAM (con ingressi equiprobabili) rispetto ad una sorgente con ingresso gaussiano P Guccione Prestazioni dei sistemi di codifica 2 Con M livelli la capacità non può superare log 2 M bit symbol qualunque sia l’SNR. I sistemi di trasmissione più raffinati hanno un numero elevato di livelli ed un codice che li utilizza con probabilità non uniforme. La capacità di un sistema bi-dimensionale è doppia degli M-PAM, dato che corrisponde a 2 M-PAM su due portanti in quadratura. Generalizzando, il teorema di Shannon si può anche scrivere come: S C log1 N bit 2D dove 2D equivale a “2-dimensioni”. Capacità di costellazioni bidimensionali con emissione di simboli equiprobabili confrontate con un ingresso continuo gaussiano P Guccione Riassunto dei risultati Codifica in banda-base (M-PAM) o passa-banda (M-QAM) si possono ridurre allo stesso modello discreto, dove si suppone X la sequenza di simboli all’ingresso ed N il rumore gaussiano additivo, con densità spettrale di potenza monolatera pari a N0. Detto 1 / T il symbol rate [symbol/sec], il bit rate, misurato in [bit/2D] e Es l’energia/2D, si hanno i seguenti risultati: • la minima banda nominale è • il data rate, in bit/sec è: • la potenza del segnale (energia media / sec) è: • il rapporto segnale rumore vale: • la capacità del canale: P Guccione SNR normalizzato Se è l’efficienza spettrale nominale, la capacità di canale è sempre maggiore: C[bit ( 2 D ] log2 (1 SNR) La relazione precedente può essere scritta come: SNR 2 1 Definiamo un rapporto segnale rumore normalizzato: In base al teorema di Shannon: Inoltre, essendo: si ottiene: La quantità precedente è detta rapporto segnale rumore per bit di informazione. Il teorema di Shannon, in termini di P Guccione Regime a potenza limitata Un canale AWGN può essere classificato come funzionante in regime a banda limitata o potenza limitata, essendo banda e potenza i due vincoli per una trasmissione numerica. La differenza sta nell’efficienza spettrale. Come “linea di divisione” si usa =2 bit/2D, corrispondente alla massima efficienza che si ottiene con una codifica binaria. Potenza limitata (<2 bit/2D) • SNR basso, • • La capacità cresce linearmente con l’SNR, • Al tendere di →0, SNRnorm Eb / N 0 log2 e • Convengono codifiche binarie. Esempio: comunicazione da spazio profondo. Non si hanno limiti nella banda, ma restrizioni nell’uso della potenza, quindi il sistema lavora con valori di 2 1 Eb / N 0 ln 2(1.59dB), 0 R ( P / N 0 ) / ln 2 [bit / s] P Guccione Regime a potenza limitata 1 Esempio: 2-PAM. Simboli trasmessi: (potenza limitata) SNRnorm Eb E 2 b N0 2 1 N0 3 Limite di Shannon: =2 bit/2D nella 2-PAM, quindi Eb / N0 2 1 3 ( 1.76dB) 2 Massimo guadagno di codifica che si può ottenere a Pe=10-5 P Guccione Regime a potenza limitata 2 In un regime a potenza limitata quindi l’efficienza spettrale nominale è sempre minore di 2bit/2D, che corrisponde a quella ottenibile con una codifica di canale 2-PAM. Le quantità sono normalizzate “per bit” e si usa Eb/N0 come misura normalizzata del rapporto segnale rumore. Per un codice a blocchi basato sul 2-PAM, si ha Eb 2 2 d min 4 2 la probabilità d’errore per simbolo è: P( E ) Q( 2Eb / N 0 ) La probabilità d’errore per bit vale: d P( E ) K (C ) Pb Q 2N 0 log 2 C log 2 C 2 min Numero medio di simboli vicini per simbolo trasmesso Si definisce allora guadagno effettivo di codifica di un codice C la differenza (in [dB]) tra il valore Eb/N0 ottenuto con C e quello che si ottiene con un 2-PAM, per avere la stessa probabilità d’errore Pb(E). P Guccione Regime a potenza limitata 3 Siccome per una 2-PAM accade che 2 d min 4Eb , definiamo il guadagno nominale di codifica come: 2 d min (C ) 4 Eb In modo che valga 1 per un 2-PAM. Questo non è propriamente il guadagno effettivo di codifica, dato che di mezzo c’è la non linearità dovuta a Q() e il numero medio di simboli vicini per bit trasmesso: K b K (C ) / log 2 C Se Kb=1 allora le due quantità sono ~ uguali (a meno di upper bounds), Se Kb>1, si usa una regola approssimata (per prob. d’errore reali): eff 0.2 log2 K b P Guccione [dB] Regime a banda limitata 1 Banda limitata • SNR grande, • • La capacità cresce logaritmicamente con l’SNR. Ad ogni aumento dell’SNR di 3dB (per SNR grandi), la capacità cresce di ~1bit/2D. • Convengono codifiche multilivello. Esempio: il canale telefonico. Canale AWGN con banda W3500Hz, SNR 37dB. <log2(1+103.7) 12.3bit/s/Hz ed R<43 kbit/s Se si alza SNR di 3dB, cresce soltanto di 1 bit/s/Hz e il bit rate di 3500bit/s. P Guccione Regime a banda limitata 2 In un regime a banda limitata quindi l’efficienza spettrale nominale è sempre maggiore di 2bit/2D, che corrisponde a quella ottenibile con una codifica di canale 2-PAM. Le quantità sono normalizzate “per 2-dimensioni” e si usa l’SNRnorm come misura normalizzata del rapporto segnale rumore. Le codifiche di base sono la M-PAM: (alfabeto dei simboli) (efficienza nominale) e l’M-QAM ( ): (numero medio di simboli vicini per 2D) Distanza minima tra i simboli: Energia media per simbolo: 3 Es La probabilità d’errore su simb. (M>4) è: Ps ( E ) 2Q 2 1 N0 P Guccione 2Q 3SNRnorm Regime a banda limitata 3 Esempio: M-PAM e M-QAM. Probabilità d’errore M-PAM: Probabilità d’errore M-QAM (/2D): Poiché: Ps ( E ) 4Q 3SNRnorm SNRnorm = 0 (Shannon Limit) Massimo guadagno di codifica che si può ottenere a Pe=10-5 P Guccione Regime a banda limitata 4 Si definisce guadagno effettivo di codifica γeff di un codice A la differenza (in [dB]) tra il valore SNRnorm ottenuto con A e quello che si ottiene con una M-PAM (o MQAM), per avere la stessa probabilità d’errore Ps(E): 2 ( A) 2 Pr( E ) 2 K min ( A) d min Ps ( E ) Q 2N0 N N Si definisce guadagno nominale di codifica di un codice A 2 (2 1)d min 6Es in modo tale che valga 1 per la M-PAM e l’M-QAM. Si può scrivere Ps(E) in funzione di γ: Ps ( E ) K s ( A)Q 3 SNRnorm (con numero medio di simboli vicini /2D. N è la dim. del codice). Se Ks non è troppo grande, vale ancora la relazione che lega γeff a γ: eff 0.2 log2 K s P Guccione [dB] Teorema della capacità di canale 1 Questo teorema è una conseguenza della legge dei grandi numeri. Esso afferma che, “se si trasmette ad un ritmo minore del limite di Shannon, è possibile, con un opportuno codice, ridurre la probabilità d’errore ad un valore piccolo a piacere”: C P 0 Il teorema tuttavia non dice come costruire i codici da utilizzare per ridurre la probabilità d’errore. Per dimostrare il teorema si utilizzano (solo in teoria) i codici casuali di Shannon: Sia N il numero di simboli per blocco e [bit/2D] il rate di trasmissione. Un codice a blocchi casuale di Shannon C di lunghezza N e rate è un insieme di M=2N /2 sequenze reali (parole di codice) di lunghezza N. L’energia media per parola di codice è NSx, detta Sx=P/2W l’energia media per dimensione/simbolo, e supponendo distribuzione equiprobabile su C. (esempio: per una 16-QAM si ha Sx=5) Ogni simbolo è scelto casualmente (ed indipendentemente dagli altri simboli) come un numero reale distribuito secondo una statistica gaussiana a media 0 e varianza Sx. P Guccione Teorema della capacità di canale 2 Il calcolo della probabilità d’errore è fatto supponendo: di scegliere un codice casuale C di scegliere una particolare parola di codice da trasmettere, c0 che il canale aggiunga del rumore gaussiano n a media 0 e varianza 2=N0/2 al ricevitore, dato y= c0+n, si decide per c0 se esiste un solo c tale che y c N 2 , 2 L’errore capita quindi se: (decodifica “tipica” o a massima verosimiglianza) 0 y c0 2 N 2 y ci 2 2 , oppure ci c 0 Poiché y c0 n , il primo dei due eventi implica che n 2 non è nell’intervallo N ( 2 ) n N ( 2 ) 2 Tuttavia essendo N 2 N 2 k con N {N k } gaussiane, iid, a media 0 e varianza N2, questa probabilità va a zero, per N , con velocità esponenziale, per la legge k dei grandi numeri (decresce esponenzialmente con N). P Guccione Teorema della capacità di canale 3 Il secondo dei due eventi capita se “si scambia” un simbolo per un altro, quindi se 2 la distanza yx è nell’intervallo N 2 Per un risultato fondamentale della large deviation theory (derivata anch’essa dalla legge dei grandi numeri), questa probabilità va a zero con 2 NE essendo E (a parte termini di ordine ε) l’entropia relativa tra X ed Y: p XY ( x, y) log2 p XY ( x, y) dxdy p X ( x) pY ( y) Nel caso di canale gaussiano, questa quantità è anche l’informazione mutua che transita su canale: y2 1 I ( X , Y ) log 2 2 2 Quindi la probabilità che una parola di codice ci sia scelta al posto di c0 va a zero con P Guccione Teorema della capacità di canale 4 Quindi la probabilità di scambiare ci con c0 è limitata superiormente: P(ci / c0 ) 2 N I ( X ,Y ) ( ) Utilizzando un limite superiore anche per la probabilità d’errore complessiva, la probabilità di scambiare una delle M-1 parole di codice con quella effettivamente trasmessa, è superiormente limitata da: Pci / c0 2 N / 2 2 N I ( X ,Y ) ( ) (essendo M-1<2N /2) che va esponenzialmente a zero con N, ammesso che ed ε sia piccolo. Questo prova che una probabilità d’errore arbitrariamente piccola può essere ottenuta usando un codice casuale di Shannon ed una decodifica a massima verosimiglianza. P Guccione Riduzione della probabilità d’errore La probabilità d’errore si può, in conclusione, ridurre in uno dei seguenti modi: aumentare il rapporto segnale rumore, dato che questa soluzione aumenta la capacità di canale; ridurre il rate di trasmissione, dato che questa soluzione riduce il numero di forme d’onda al secondo e quindi diminuisce la richiesta di banda e di conseguenza il rumore in ingresso al sistema; aumentare la lunghezza del blocco del codice (N), aumentando la complessità del codice e il ritardo nelle operazioni di codifica/decodifica; evitare di distruggere l’informazione soft contenuta nei simboli ricevuti; l’informazione hard infatti dà luogo a prestazioni inferiori. P Guccione Codici: strategie Le principali strategie d’uso dei codici prevedono: correzione degli errori: quando gli errori non superano in numero la capacità correttiva del codice. Esiste tuttavia, per ogni codice, il rischio che una particolare e –si spera- molto improbabile sequenza di errori su canale generi una sequenza errata e non riconosciuta come tale dal codice. Esiste anche una probabilità non nulla che il codice corregga in modo errato. rivelazione degli errori e richiesta di ritrasmissione: purché esista un canale di ritorno affidabile e si sopporti il ritardo di ritrasmissione. Anche in questo caso possono sfuggire sequenze errate. strategie miste: correzione parziale legata ad un numero di errori piccolo e richiesta di ritrasmissione (o scartare la sequenza) nei restanti casi di rivelazione d’errore. P Guccione Codici: tipologie principali Le principali tipologie di codici più comuni sono: codici a blocco: k cifre di informazione sono trasformate in n cifre di messaggio. Esempio: il codice di parità, in cui n=k+1 e la k+1-sima cifra è la parità delle restanti k. codici convoluzionali: codici dotati di memoria, in cui il messaggio emesso dal codice dipende dalla cifra corrente e da un certo numero di quelle passate. codici composti: codici concatenati, codici prodotto, turbo-codici. …0 1 0 1 1 0 0 0 1 0 1 … …1 0 1 1 0 0 1 0 1 0 0 … codifica rumore …0 1 0 1 0 0 0 0 1 0 1 … …1 0 1 1 0 0 1 0 1 0 0 … decodifica P Guccione Decodifica 1 Vi sono differenti strategie di decodifica. Generalmente, più complessa è la decodifica, più efficace essa risulta nel ridurre la probabilità d’errore. Decodifica hard Consiste nell’effettuare la scelta al ricevitore numerico bit per bit, indipendentemente l’uno dall’altro. Quindi nel passare i bit all’interno del decodificatore del codice per verificare se vi sono errori, si sceglie la parola di codice più vicina a quella decodificata. …0 1 0 1 1 0 0 0 1 0 1 … …1 0 1 1 0 0 1 0 1 0 0 … codifica rumore … y1 y2 … … … …0 1 0 1 0 0 0 0 1 0 1 … …1 0 1 1 0 0 1 0 1 0 0 … decodifica P Guccione yn … Decodifica 2 Decodifica soft a massima verosimiglianza (ML) Consiste nell’utilizzare direttamente il livello del segnale ricevuto per determinare, tra le sequenze lecite (le parole del codice permesse) quella che più verosimilmente è stata trasmessa (decodifica a massima verosimiglianza). Si cerca quindi la parola di codice c, tale che max y n cn c n o anche min y c c Complessità cresce con le parole di codice (2N) 2 …0 1 0 1 1 0 0 0 1 0 1 … …1 0 1 1 0 0 1 0 1 0 0 … codifica rumore …1 0 1 1 0 0 1 0 1 0 0 … P Guccione decodifica ML … y1 y2 … yn … Decodifica 3 Decodifica soft massima probabilità a posteriori (MAP) o bit a bit Consiste nel calcolare, bit per bit la massima probabilità a posteriori, che tiene conto della probabilità d’emissione della cifra in sorgente: per ciascun bit di informazione si calcola la probabilità che questi sia 0, e si decide per lo zero se tale probabilità è <0.5, altrimenti si decide per l’1. Differenza con la decodifica soft ML: La decodifica ML, scegliendo la parola più probabile, rende minima la probabilità che il blocco di bit sia sbagliato La decodifica MAP scegliendo bit per bit rende minima la probabilità che la sequenza di bit sia sbagliata. Spesso le differenze sono di poco rilievo (<<1dB) e dipendono dal codice. …0 1 0 1 1 0 0 0 1 0 1 … …1 0 1 1 0 0 1 0 1 0 0 … codifica rumore …1 0 1 1 0 0 1 0 1 0 0 … P Guccione decodifica MAP … y1 y2 … yn … Decodifica 4 Esempio Codice a parità (3,2): 2 bit di informazione + 1 bit di parità. Possibili parole: (000), (011), (101), (110) Campioni ricevuti: (y1,y2,y3). Le probabilità P(0/yn) siano: (0.4, 0.7, 0.7). Decodifica hard Decodifica soft ML Decisione indipendente bit per bit: 0.4 < 0.5 ? sì →1 0.7 < 0.5 ? no →0 0.7 < 0.5 ? no →0 Decisione sulla parola più probabile: (000) → 0.4 0.7 0.7 = 0.196 (011) → 0.4 0.3 0.3 = 0.036 (101) → 0.6 0.7 0.3 = 0.126 (110) → 0.6 0.3 0.7 = 0.126 (000) codice più probabile (100): non è parola di codice. Decodifica soft MAP Decisione a posteriori sul bit più probabile: 1° bit: 0. Possibili sequenze (000) U (011) P=0.196+0.036=0.232 1° bit: 1. Possibili sequenze (101) U (110) P=0.126+0.126=0.252 2° bit: 0. Possibili sequenze (000) U (101) P=0.196+0.126=0.322 2° bit: 1. Possibili sequenze (011) U (110) P=0.036+0.126=0.162 3° bit: 0. Possibili sequenze (000) U (110) P=0.196+0.126=0.322 3° bit: 1. Possibili sequenze (011) U (101) P=0.036+0.126=0.162 (100): non è parola di codice, sebbene questi sono i valori più probabili per i tre bit P Guccione Prestazioni dei sistemi di decodifica Sono mostrate le prestazioni di alcuni sistemi di decodifica a cui si è fatto cenno in precedenza (codici lineari e convoluzionali) Hamming (31,26). Decodifica soft e hard P Guccione Convoluzionale R=1/2 e 256 stati. Decodifica soft e hard Codici casuali I codici possono anche essere generati casualmente. I codici casuali che risultano sono: più semplici da generare non lineari e quindi più complessi da decodificare Si può dimostrare che le prestazioni tendono a diventare uguali per tutti i codici casuali all’aumentare della dimensione del blocco, N. Inoltre le prestazioni complessivamente aumentano con N. Queste prestazioni sono sempre, tuttavia, inferiori a quelle di codici non causali (lineari, algebrici, concatenati, convoluzionali, etc). 100 codici casuali con N=20, K=4. P Guccione Codici casuali con N=24, K=12. Confronto con il migliore codice delle stesse dim. Codifica di Lempel-Ziv 1 Esistono diverse versioni del codice di Lempel-Ziv, inventato nel 1977. Tra queste ricordiamo l’LZ77, l’LZ78. Loro differenti versioni sono utilizzate commercialmente sotto forma di nomi quali WinZip, PKZip, LHA, WinRAR, etc. È una codifica a lunghezza variabile e a blocchi, nel senso che è variabile sia il numero di simboli che si codificano, sia il numero di bit che di volta in volta si assegnano al gruppo di simboli da codificare. Non richiede conoscenza a priori della statistica di sorgente. Tuttavia riesce a rendere minimo il numero medio di bit per simbolo. (codici universali). L’algoritmo comprime sequenze di simboli x1 , x2 ,... prese da un alfabeto di M X simboli. n Denotiamo con x m la sottosequenza xm , xm1 ,...,xn . L’algoritmo mantiene in memoria un certo numero di simboli passati (e già codificati), detto finestra, w. Questa finestra di osservazione è usualmente molto lunga, anche 210-217 simboli. P Guccione Codifica di Lempel-Ziv 2 L’algoritmo opera come segue. Supponiamo che ad un certo momento siano stati codificati già tutti i simboli sino a x P . Tra i simboli successivi, ancora da codificare, l’algoritmo cerca la stringa più lunga in assoluto che abbia corrispondenza con una appartenente alla finestra di osservazione passata. Quindi cerca se esiste, per la stringa x PP1n una corrispondenza con la stringa x PP1nuu purché questa appartenga alla finestra, quindi purché u w. L’idea dell’algoritmo LZ77 è di codificare questa stringa semplicemente utilizzando (codificandole) le informazioni di n ed u. In fase di decodifica, se si mantiene la stessa dimensione della finestra, arrivati alla decodifica di x P , mediante la conoscenza di n ed u si potrà risalire alla sequenza x PP1nuu e quindi utilizzare i simboli già decodificati per decodificare anche la sequenza x PP1n . simboli già codificati, x1,…,xP Finestra di osservazione, w P Guccione simboli da codificare, xP+1,… Stringa di match, lunga n Codifica di Lempel-Ziv 3 Esempio. Si consideri la sequenza: Vi è un match di n=3 a partire da u=7 simboli prima del puntatore corrente. Invece nel caso Vi è un match di n=4 a partire da u=2 (in questo caso si permette anche una parziale sovrapposizione tra la stringa passata e quella di matching). P Guccione Codifica di Lempel-Ziv 4 In breve i passi dell’algoritmo sono i seguenti. Si codificano i primi w simboli con un codice a lunghezza fissa e senza compressione. Poiché wlog M è una piccola frazione dei bit totali, questa inefficienza iniziale è assorbita dalla efficienza complessiva. Si seleziona il puntatore su P w Pn Pnu Si trova l’indice n 2 più grande, in modo che risulti xP1 xP1u per un qualche u nell’intervallo. 1 u w Se non si trova nessun match, si pone n 1 e si codifica x P1 senza compressione, cioè utilizzando un codice a lunghezza fissa log 2 M . Se c’è match, si codificano i valori di n ed u. n è codificato nella sua rappresentazione binaria, e facendolo precedere da log 2 n zeri, cioè In questo modo la parola di codice che comincia con 0 n1 corrisponderà ai 2n interi compresi nell’intervallo 2 n m 2 n1 1 . Se n 1 si codifica u con un codice a lunghezza fissa di dimensione log 2 w . Si setta il puntatore da P a P+n e si riprende dal terzo punto. P Guccione Codifica di Lempel-Ziv 5 Sequenze tipiche Sia data una sorgente X che emette simboli, scelti da un alfabeto di dimensione N: x1 , x2 ,...,xN . Per ogni simbolo sia nota la probabilità di emissione, p( xi ) . Data una sequenza di n simboli i.i.d., questa è detta ε-tipica se per ogni ε piccolo a piacere risulta: 1 log px ( n ) H ( X ) n (n) cioè l’informazione media per simbolo contenuta nella sequenza x è praticamente uguale all’informazione media che minimamente può essere emessa dalla sorgente (entropia). Il concetto di sequenza tipica di una sorgente senza memoria può anche essere ricavato, in maniera più intuitiva, a partire dalla variabile aleatoria che rappresenta il numero di occorrenze di un generico simbolo xi X all'interno della sequenza x ( n ) di n simboli emessi dalla sorgente. Poiché questi sono indipendenti, si ha una v.a. binomiale di parametri n e pxi e, conseguentemente, di media npxi . Si considera allora tipica una sequenza in cui il numero di occorrenze di ogni simbolo xi X coincide, o per lo meno è prossimo, al corrispondente numero medio di occorrenze npxi . All’aumentare di n il numero di sequenze tipiche tende ad essere sempre più grande. P Guccione Codifica di Lempel-Ziv 6 Il motivo per cui la codifica di Lempel-Ziv funziona è da ricercare nella dimostrazione del teorema dell’equipartizione (AEP). Pur non conoscendo la statistica della sorgente, se w è sufficientemente grande, allora w conterrà la maggior parte delle stringhe tipiche emesse dalla sorgente, sino ad una certa lunghezza n* che dipende da w e dalla statistica di sorgente. A regime quindi un codificatore sarà in grado di codificare efficacemente al minimo n* simboli utilizzando non più di log w bit. Il numero medio di bit per simbolo diventa quindi L (log w) / n* . Assumendo ora che la sorgente sia di tipo Markoviano, L è molto vicina all’entropia condizionata della sorgente H ( X / S ) . In queste condizioni si verifica che: le stringhe tipiche di lunghezza n hanno tutte all’incirca probabilità di presentarsi pari a 2 nH ( X / S ) ; data una stringa x PP1n la lunghezza attesa di una stringa precedente uguale all’attuale vale circa: 1 / PrxPP1n P Guccione Codifica di Lempel-Ziv 7 Se allora scegliamo n tale che 2 nH ( X / S ) w vi sarà una grande possibilità di incontrare sequenze tipiche di lunghezza n nella finestra di osservazione w. nH ( X / S ) w le sequenze tipiche di lunghezza n nella finestra di [Se invece 2 osservazione w vi capiteranno molto raramente] * La conclusione è che il valore ideale da scegliere per n è: n* : 2 n H ( X / S ) w da cui si ha poi: n* log w H (X / S) Quando il codificatore codifica una stringa di lunghezza n*, avrà bisogno di log w n* H ( X / S ) bit per codificare la posizione u. Per codificare il valore di n avremo bisogno di un numero di bit che cresce solo logaritmicamente con n e quindi trascurabile rispetto a log w che cresce linearmente con n. L’algoritmo richiede in conclusione L H ( X / S ) bit per simbolo di sorgente, che rappresenta la minima informazione trasmissibile per la sorgente, indipendentemente dalla sua statistica di ingresso (nota o no). P Guccione