Giardino Daniele – Costante Luca STII Durante una trasmissione, il segnale naviga alcuni minuti prima di arrivare a destinazione. Durante il percorso, il segnale è soggetto a rumore, quindi può capitare che il messaggio che è stato inviato (espresso in bit) sia diverso da quello ricevuto. Ci chiediamo come mai riusciamo a ricevere i dati così come sono stati trasmessi? La risposta è semplice, non si trattano i dati direttamente, ma solo dopo averli trasformati: bisogna eliminare la ridondanza (efficienza) ed aggiungere ridondanza utile (per la protezione dal rumore). Probabilità e proprietà dei logaritmi Valore medio di una variabile casuale: Consideriamo 2 V.C. X,Y, abbiamo o Prob. congiunta : o o o Disuguaglianza di Markov: Chernoff Bound: sia v.c. iid (indipendenti ed identicamente distribuite) con valore medio , allora Legge debole dei grandi numeri: sia v.c. iid (indipendenti ed identicamente distribuite) con valore medio , Informazione associata al valore x: Logaritmo Derivata: 1 Giardino Daniele – Costante Luca Funzione concava/convessa f è strettamente concava se la disuguaglianza è stretta per . Il log è una funzione strettamente concava di x. Disuguaglianza di Jensen: Dim. La dimostrazione avviene per induzione sulla Base: =2. Si consideri . , per la definizione di funzione concava si ha che Passo induttivo. Supponiamo che la disuguaglianza sia verificata per che è verificata per =k-1, dimostriamo =k. 2 Giardino Daniele – Costante Luca Entropia (è il numero di bit per rappresentare l’informazione) Misura l’incertezza di una variabile casuale X. Può essere vista anche come l’informazione che otteniamo in media conoscendo il valore di X. Poiché l’unità di misura sono i bits, usiamo il log in base 2. (informazione emessa alla sorgente) Indichiamo con H(X) l’Entropia e si calcola: Come si può facilmente vedere, eventi poco probabili danno maggiore informazione. L’entropia non dipende dall’alfabeto ma solo dalla sua distribuzione di probabilità. Il massimo dell’entropia si ha quando gli M simboli dell’alfabeto sono equiprobabili ossia . L’unità di misura dell’entropia sono i bits. Se si cambia la base del logaritmo, il valore dell’entropia cambia solo di un fattore costante. Quindi Dim: Con l’entropia, è possibile anche calcolare il numero di domande necessarie per poter “indovinare” un numero a partire da un insieme di numeri. Sia , in media il numero di domande è . In generale il minimo numero medio di domande del tipo è compreso tra e . Il termine nullo non incide nel valore dell’entropia. Logicamente un simbolo con probabilità 0 è sicuro non verificarsi mai. Quindi l’entropia che misura l’incertezza del verificarsi di tale simbolo non ha significato. Entropia binaria di Bernulli: Nel caso di soli due valori della V.C. si parla di entropia binaria o di Bernulli: Entropia Congiunta: date due v.c. X ed Y con distribuzione di probabilità congiunta p(x,y), si definisce 3 Giardino Daniele – Costante Luca Entropia Condizionata: rappresenta l’informazione addizionale media di Y nota X. Date due v.c. X ed Y con distribuzione di probabilità condizionata p(y/x), si definisce Dim: Regola della catena: Dim: Proprietà 1. Dim. Sappiamo che . e tutte le altre 2. Inoltre ) . Dimostriamo questa proprietà tramite la disuguaglianza di Jensen. 3. 4 Giardino Daniele – Costante Luca 4. a. b. c. d. 5. La disuguaglianza di Jensen vale con il segno di “ ” s se Sommando su y abbiamo . , quindi s.se X,Y sono indipendenti. 6. Dim. 7. Estensione regola della catena La dimostrazione avviene per induzione su n: (BASE n=2), applicando la regola della catena abbiamo (INDUZIONE assumendo vero per n-1, si prova per n) 5 Giardino Daniele – Costante Luca Mutua Informazione La mutua informazione rappresenta i bit di informazione che una delle variabili fornisce circa l’altra. Ci dice di quanto decresce l’incertezza su X una volta vista Y. Mutua Informazione Condizionata: Il condizionamento di Z si applica sia ad X che ad Y Dato che Regola della catena per la Mutua Informazione: PROPRIETA’ Se X ed Y sono indipendenti, 6 Giardino Daniele – Costante Luca Dim: Divergenza informazionale Misura la somiglianza tra le distribuzioni di probabilità p(x) e q(x). Quindi date due distribuzioni di probabilità p(x) e q(x), la divergenza informazionale o entropia relativa è definita come . Inoltre la divergenza informazionale non è simmetrica, Abbiamo che Date due v.c. X e Y con probabilità congiunta p(x,y), la mutua informazione corrisponde all’entropia relativa tra e : Questa divergenza misura la differenza tra la distribuzione di probabilità congiunta p(x,y) e la distribuzione quando le variabili casuali sono . 7 Giardino Daniele – Costante Luca 8 Giardino Daniele – Costante Luca Teorema del data processing Catene di Markov: Dati X,Y,Z con formano una catena di Markov 1. Se 2. Se Teorema: 1) 2) Dim: Poiché , Da cui Quindi abbiamo dimostrato che Disuguaglianza di Fano Siano X e Y variabili casuali. Vogliamo stimare X dall’osservazione di Y. Definiamo Teorema: Dim. Con 1)= lg( 1) poiché l’entropia è sempre minore uguale del numero di valori. 9 Giardino Daniele – Costante Luca Compressione dati Abbiamo una sorgente X che emette simboli vogliamo rappresentarli con simboli. Vogliamo rappresentare sequenze sorgente di lunghezza n in sequenze codice di lunghezza N. Lo scopo della compressione è quello di minimizzare la quantità di dati da trasmettere, eliminando la ridondanza. L’entropia fornisce un limite sia inferiore che superiore al numero di bit per rappresentare dati. Notazione: Codifica univoca: se vogliamo una codifica univoca, ogni simbolo della sequenza sorgente deve essere codificata da un simbolo codice. Un codice è detto non singolare se ad ogni viene assegnata una diversa stringa in , cioè L’estensione k-esima Ck di un codice C è una funzione che associa ad ogni Un codice si dice univocamente decodificabile UD se la sua estensione è non singolare (interessano tali codici perché come si comprime così si vuole decomprimere). Associare a parole sorgente diverse, parole codice diverse non garantisce la decodifica univoca di sequenze di parole di codice. Quindi, per vedere se un codice è univocamente decodificabile, devo leggere tutta la sequenza e controllare se alla fine riesco a determinare l’univocità della decodifica. In questo caso, si parla di ritardo di decodifica. Un codice si dice prefisso se nessuna parola codice è prefissa di un’altra. Un codice prefisso è univocamente decodificabile con ritardo finito (il ritardo è dato dalla lunghezza della parola codice più lunga). A un codice D-ario C prefisso corrisponde un albero D-ario dove i rami dell’albero sono etichettati con le lettere dell’alfabeto e ogni parola di C è ottenuta leggendo le etichette dei rami lungo il percorso dalla radice ad una foglia. 10 Giardino Daniele – Costante Luca Disuguaglianza di KRAFT La disuguaglianza di KRAFT lega la lunghezza delle parole codice alla cardinalità dell’alfabeto. (PARTE DIRETTA): Per ogni codice prefisso D-ario, le lunghezze delle parole codice Sia C il codice prefisso D-ario con lunghezza delle parole codice . Sia soddisfano: la lunghezza massima delle parole di C (corrisponde all’altezza dell’albero T D-ario associato al codice C, dove il numero di foglie di Tè ). Per ogni lunghezza dobbiamo eliminare un sottoalbero di altezza . Quindi per ogni i, eliminiamo dall’albero eliminiamo foglie. In totale foglie. Poiché il numero di foglie eliminate non può superare il numero totale di foglie, abbiamo che (PARTE INVERSA): Se soddisfano la disuguaglianza di Kraft, allora esiste un codice prefisso D-ario le cui parole hanno lunghezza Supponiamo che . soddisfano la disuguaglianza di Kraft e che D-ario completo di altezza parole lunghe . Consideriamo l’albero . Lo trasformeremo in un albero che rappresenta un codice D-ario prefisso con : 1. Prima di tutto etichettiamo i rami uscenti da ciascun nodo interno con gli interi . 2. Per ogni i=1,…,m, o Consideriamo il primo nodo disponibile di profondità (primo secondo l’ordine lessicografico delle parole che si leggono andando dalla radice ai nodi) o Eliminiamo il sottoalbero di questo nodo dall’albero ed associamo alla foglia che abbiamo appena creato la parola codice i Eliminiamo Al passo i-esimo in totale abbiamo eliminato foglie foglie 11 Giardino Daniele – Costante Luca Es: sia D={0,1,2}; gli interi 1,2,2,2,2,2,3,3,3 soddisfano la disuguaglianza di Kraft. In questo caso i=1, eliminiamo foglie, ossia i=2, eliminiamo foglie, ossia =3 e così via Quindi il numero di foglie eliminate nei primi i passi (con i<m) è: Ora possiamo eseguire il passo (i+1)-esimo. Infatti il numero di foglie rimaste dopo il passo i Disuguaglianza di Mc Millan Le lunghezze delle parole di un codice Univocamente Decodificabile soddisfano la disuguaglianza di Kraft. DIM. Sia C codice UD (vuol dire che la sua estensione è non singolare) Sia Se avessimo , allora , per k grande (contraddizione). Quindi , e C soddisfa la disuguaglianza di Kraft. Conseguenze: abbiamo dimostrato che la disuguaglianza di Kraft vale anche per i codici UD e quindi per un qualsiasi codice UD esisterà un codice prefisso avente parole della stessa lunghezza, quindi possiamo limitarci a considerare solo codici prefissi che non hanno ritardo di decodifica. 12 Giardino Daniele – Costante Luca Lunghezza media di un codice La lunghezza media L (C) di un codice C per una v.c. X con d.d.p. P(x) è data da La lunghezza media L di un codice D-ario UD per una vc X soddisfa DIM : Si ha l’uguaglianza s.se Ora ci chiediamo se non sono tutti interi? A tal proposito quindi, vediamo quanto la lunghezza media può discostarsi dall’Entropia. Codice di Shannon Consideriamo X con d.d.p. simbolo di probabilità . Il codice di Shannon D-ario è un codice prefisso che assegna al una parola codice di lunghezza Shannon esiste in quanto le lunghezze La lunghezza media è < . Il codice di soddisfano la disuguaglianza di Kraft: : Quando si effettuano i calcoli, basta un solo caso in cui il calcolo del logaritmo non da risultato intero che vale la disuguaglianza ossia che Codifica ottimale Siano le lunghezze delle parole di un codice UD ottimo D-ario per una v.c X con d.d.p. . La lunghezza media 13 Giardino Daniele – Costante Luca Dim: ogni codice UD soddisfa la prima disuguaglianza. Per quanto riguarda invece la seconda disuguaglianza, sia C il codice di Shannon D-ario per X tale che . La lunghezza media del codice ottimale soddisfa Costruzione codici prefissi ottimali (binari) Per ogni d.d.p. p esiste un codice prefisso ottimo tale che: 1. Se > allora 2. Le due parole più lunghe hanno la stessa lunghezza 3. Le due parole più lunghe differiscono solo nell’ultimo bit Dim: siano . Sia C codice ottimo con lunghezze 1. Supponiamo per assurdo che > allora . Consideriamo il codice C’ ottenuto da C scambiando la parola j-esima con quella k-esima, ossia La lunghezza media di C’ è . La differenza tra L’ e la lunghezza media L di C è: Ricordando che > ma , allora L’<L che è impossibile, quindi 2. Supponiamo per assurdo che C contenga un’unica parola di lunghezza massima quindi eliminare l’ultimo bit dalla parola codice di . Possiamo ottenendone una di lunghezza . Otteniamo così un codice prefisso con lunghezza media inferiore ad L. Questo è impossibile in quanto C è ottimo 3. Se valgono la 1 e la 2, allora In generale non è vero che un codice ottimale soddisfa la 3. Supponiamo che e e non differiscono solo nell’ultimo bit, allora i nodi associati a non sono fratelli, quindi ha fratello con , allora . Possiamo quindi scambiare e ottenendo un codice con lunghezza uguale a quella di C. 14 Giardino Daniele – Costante Luca Algoritmo di Huffman Viene utilizzato per la costruzione di codici ottimali. L’algoritmo viene definito ricorsivamente 1) Si prendano le due (oppure d in caso di codice D-ario) probabilità più piccole e si assegni a ciascuna un ultimo bit differente. Si faccia il merge dei simboli corrispondenti alle due probabilità più piccole in un unico simbolo 2) Ripetere il passo 1 fino ad avere 1 simbolo. Non è sempre possibile raggruppare le probabilità in gruppi di D, in tal caso aggiungiamo tanti simboli fino a quando non si forma un gruppo e ogni simbolo ha probabilità zero. Formalmente: Codice per è definito a partire da , il codice per ( simbolo di concatenazione, l’alfabeto è D-ario) Ottimalità dei codici di Huffman. Tale dimostrazione avviene per induzione sul numero m di simboli da codificare. BASE: per m=2, si ha che è ovviamente ottimo. PASSO INDUTTIVO: indipendente da lunghezze del codice per cui (sapendo che in codice ottimale ) abbiamo che se è ottimo, allora anche è ottimo. poiché i codici di Huffman sono prefissi e ottimali, allora la lunghezza di un codice di Huffman C* soddisfa 15 Giardino Daniele – Costante Luca Ricordiamo che un albero D-ario pieno ha aggiungiamo simboli fino ad arrivare all’intero più vicino ad nodi. Se non è nella forma , di questa forma. Ritornando al gioco delle domande citato sopra, le domande equivalgono al codice ossia le domande equivalgono ad una sequenza di risposte cioè ad una codifica binaria di oggetti. Il codice invece rappresenta l’i-ma domanda: “è il bit i-mo=1?”. Quindi 16 Giardino Daniele – Costante Luca Compressione dati Compressione dati con distribuzione di probabilità non esatta Sia p(x) la probabilità reale (non nota), q(x) la stima di p(x) ottenuta da rilievi statistici. Ci chiediamo: se la codifica si basa su q(x), di quanto aumenta la lunghezza media per simbolo rispetto a quella che avremmo ottenuto utilizzando la distribuzione reale p(x)? Teorema: : lunghezza media del codice di Shannon con lunghezze . Risulta Dim: Analogamente possiamo dimostrare il limite inferiore Migliore è la stima q(x), minore è la divergenza e migliore è la lunghezza media. Compressione di sequenze Abbiamo visto che la lunghezza media L* di un codice ottimo soddisfa , quindi se codifichiamo un simbolo sorgente alla volta, il limite superiore al numero medio di bit per simbolo sorgente differisce di al più un bit dall’entropia. Cosa succede se invece di codificare ciascun simbolo separatamente, codifichiamo sequenze di simboli sorgente? Sia la sequenza composta da n simboli emessi dalla sorgente, con n v.c. e d.p. congiunta . Indichiamo con : la lunghezza della parola codice associata a . numero medio di simboli codice per simbolo sorgente, ovvero . Poiché la sommatoria è il numero di bit che usiamo per codificare n simboli, ho diviso per n in modo da ottenere il numero medio di simboli codice per simbolo sorgente. : minimo numero medio di simboli codice per simbolo sorgente. Teorema di codifica di sequenze sorgente Il minimo numero medio di simboli codice per simboli sorgente soddisfa 17 Giardino Daniele – Costante Luca DIM: ciascuna sequenza può essere vista come un “supersimbolo” dell’alfabeto quindi considerare la codifica ottimale di : poichè , ossia dividendo per n otteniamo il risultato voluto OSSERVAZIONE: se la sorgente è senza memoria, cioè distribuiti come X, allora In generale, se . Possiamo , allora sono indipendenti ed identicamente . Quindi codificando sequenze sorgente con codici prefissi possiamo ottenere un numero medio di simboli codice per simbolo sorgente arbitrariamente prossimo all’entropia. Compressione dati Il nostro obiettivo è quello di riuscire a codificare sequenze sorgente lunghe n in sequenze codice lunghe N con un rapporto di compressione migliore di quello ottenuto, cercando di mantenere basso l’errore. La sorgente emette sequenze di simboli in alfabeto che vengono codificati come sequenze di simboli di un alfabeto D-ario. Consideriamo il caso più semplice in cui la sorgente è senza memoria, ossia la sequenza di v.c. indipendenti ed identicamente distribuite come v.c. X. Per la legge debole dei grandi numeri: se sono n v.c. i.i.d., allora Proprietà di equipartizione asintotica (PEA- AEP) Se sono v.c. i.i.d., con d.d.p. , allora = probabilità di osservare la sequenza Ciò significa che se facciamo crescere di molto la lunghezza della sequenza, l’informazione media di una sequenza sorgente si discosta molto dall’entropia con probabilità bassa. 18 Giardino Daniele – Costante Luca DIM: Sequenze tipiche Sia: S: sorgente modellata con una sequenza di n v.c. , i.i.d. con alfabeto : insieme delle sequenze di lunghezza n emesse da S. Tale insieme può essere partizionato in: o : insieme delle sequenze tipiche di lunghezza n costituito da tutte le sequenze t.c o complemento di in Dimostreremo che l’insieme ha probabilità . Tale insieme non contiene tutte le sequenze: per codificare sequenze sorgente, non servono bits, sono sufficienti Proprietà delle sequenze tipiche 1. DIM: è ovvia per la definizione di sequenze tipiche e dalla PEA 2. DIM: Per la proprietà di equipartizione asintotica (PEA), allora 3. DIM: 4. DIM: Per n sufficientemente grande abbiamo 19 Giardino Daniele – Costante Luca TEOREMA DI CODIFICA SORGENTE Th: Sia sequenza di v.c. i.i.d. con d.d.p. . Sia . Esiste un codice che mappa sequenze sorgente di lunghezza n in stringhe binarie in modo che la codifica sia 1-1 e DIM SE : se vogliamo ottenere un rapporto di compressione migliore sfruttando le proprietà delle sequenze tipiche possiamo fare in questo modo: Partizioniamo l’insieme di tutte le sequenze negli insiemi . Ordiniamo ciascuno dei due insiemi (ad esempio in modo lessicografico) Rappresentiamo ciascuna sequenza con il suo rango (posizione) nell’ordinamento o Il numero di bit necessari per codificare le sequenze tipiche è o Il numero di bit necessari per codificare le sequenze non tipiche è al più Il codice viene così definito: codifica sequenza tipica: alla sequenza binaria corrispondente aggiungiamo 0 come prefisso codifica sequenza non tipica: alla sequenza binaria corrispondente aggiungiamo 1 come prefisso a ciascuna sequenza sorgente è associata una parola codice distinta (codifica lossless) la lunghezza della parola codice è : A quanto corrisponde la lunghezza media del codice? Sia di lunghezza n. Con Allora DIM SOLO SE : il teorema di codifica sorgente ci dice che possiamo codificare le sequenze usando bit. Ci si chiede se si può fare di meglio, ossia se esiste un insieme più piccolo dell’insieme tipico che concentra la massa probabilistica? La risposta è no ed ora mostriamo il perché. Dato . Dimostreremo che deve avere un’intersezione significativa (molte sequenze in comune) con TH: Siano i.i.d con d.d.p. P(x). Per ogni si ha 20 Giardino Daniele – Costante Luca Dim: Inoltre risulta Quindi NELLA PRATICA, ESISTE LA CODIFICA LEMPEL ZIV (LZ) Per la codifica di sequenze, si legge la sequenza di sinistra a destra, si divide in parti in modo che ogni parte è una parte precedente più un bit Es: 1011010100010, diventa 1011010100010 Per sequenze di n bit, sia c(n) il numero di parti . La codifica di : puntatore e bit addizionale b in modo che Es: 1011010100010=1,0,11,01,010,00,10 , dove i primi 3 bit del carattere separatore “,” stanno ad indicare l’indirizzo della parte . Il puntatore usa , nel nostro caso avendo 7 parti, bits. La lunghezza della sequenza compressa è circa Questa codifica è molto usata in varie versioni: compress, gzip, ecc. nella pratica, la compressione ha un ruolo fondamentale in quanti molti files contengono sequenze ripetute. Sia n la lunghezza della sequenza, v.c. modella il simbolo i-esimo. LZ è asintoticamente ottimo per sorgenti stazionarie ergodiche . Si mostra che con n sufficientemente grande: Una sequenza compressa di lunghezza circa 21 Giardino Daniele – Costante Luca CODIFICA CANALE La codifica sorgente codifica i dati per rimuovere ridondanza, mentre la codifica canale aggiunge ridondanza per proteggere da errori di trasmissione sul canale. Si ha successo di trasmissione se i dati inviati giungono correttamente alla destinazione. Un obiettivo fondamentale della codifica canale è quello di avere input non confondibili e la capacità di poter correggere errori di trasmissione. Per questo motivo vengono aggiunti bit ridondanti. Canali discreti senza memoria Un canale discreto è una tripla dove: alfabeto di input al canale : alfabeto di output al canale : matrice delle probabilità di transizione In un canale discreto senza memoria (DCM), la probabilità di output dipende solo da input corrispondente NON da precedenti input o output. Dato un canale discreto senza memoria, la capacità per n usi del canale è Dove Quindi . Ci concentreremo su ossia un singolo uso canale. Dimostreremo che la capacità equivale al massimo numero di bit che possono essere trasmessi per ogni uso del canale. La regola generale per il calcolo della capacità è . Canale binario simmetrico: quindi , quindi la capacità Canale binario con cancellazione: 22 Giardino Daniele – Costante Luca Sia allora , quindi Canali simmetrici: ogni riga (rispettivamente colonna) è permutazione di ogni altra riga e (rispettivamente colonna). Canali debolmente simmetrici: ogni riga è permutazione di ogni altra riga; la somma su ogni colonna è costante. un canale simmetrico è anche un canale debolmente simmetrico. Sia Ponendo Quindi Canale asimmetrico: Sia per trovare C massimizziamo . sostituisco questo valore in f(p) ed ottengo Codifica canale DCM (senza memoria) Un codice canale (M,n) per è dato da: 1. Insieme di indici {1,…,M} (equivale a possibili sequenze input) 2. Funzione codifica 3. Funzione decodifica Inoltre definiamo: la probabilità di errore quando si codifica l’indice i con Probabilità massima di errore: 23 Giardino Daniele – Costante Luca Probabilità media di errore: Tasso codice (M,n): Il tasso R è ottenibile se esiste sequenza di codice Attraverso il Teorema di Codifica Canale si dimostra che o Ogni tasso è ottenibile o Nessun tasso è ottenibile La capacità C rappresenta il limite superiore di tutti i tassi ottenibili. L’obiettivo è quello di avere codici che abbiano probabilità di errore prossima a 0 e tasso del canale alto. Coppie tipiche L’insieme delle coppie tipiche rispetto alla distribuzione TEOREMA JOINT PEA Siano sequenze di v.c. i.i.d. secondo è definita da: . Allora 1. 2. 3. Se ed allora per sono indipendenti e scelte secondo e , quindi , TEOREMA DI CODIFICA CANALE Per ogni tasso , esiste una sequenza di codici con probabilità massima di errore . La dimostrazione si basa sulle seguenti idee: analisi di sequenze lunghe, in modo da sfruttare la legge dei grandi numeri e, specificamente, le proprietà delle coppie tipiche; calcolo della probabilità di errore mediata su una scelta random del codice. Dimostrazione parte diretta Generiamo parole codice i.i.d. scegliendone i simboli da fissata d.p. . Una sequenza è scelta con probabilità Un codice indipendentemente in accordo ad una Con probabilità Come descritto sopra il codice viene generato in maniera random. Il messaggio W da trasmettere viene scelto uniformemente a caso: 24 Giardino Daniele – Costante Luca La parola codice è una sequenza alla distribuzione La sequenza , corrispondente alla w-esima riga di C viene spedita sul canale. L’output del canale (versione ottenuta dopo la trasmissione sul canale rumoroso) determinata in accordo viene decodificato come se formano una coppia tipica e quindi non esiste un altro messaggio k t.c. formano una coppia tipica (ciò sta a significare che è l’unico che forma una coppia tipica con ). Se non esiste un tale W o ce ne è più di uno, si emette un segnale di errore. Dichiariamo la codifica errata se , e denotiamo con tale evento. La probabilità di errore la si calcola mediata su tutte le parole del codice, e mediata su tutti i codici possibili, quindi: Poiché mediamo su tutti i codice non dipende da w. Infatti, guardando a tutti i codici, la stessa parola appare lo stesso numero di volte con ogni indice. Quindi possiamo assumere, senza perdita di generalità che l’indice del messaggio inviato sia W=1, poiché Sia la sequenza output quando viene trasmesso (stiamo codificando W=1). Definiamo “l’evento l’i-esima parola codice e formano una coppia tipica”: Quando viene trasmessa, si ha errore se si verifica una delle seguenti condizioni: (c’è più di una Quindi (caso in cui e Consideriamo le 2 quantità separatamente. Si ha che: , per (proprietà 1 di joint AEP) e sono indipendenti, allora che forma una coppia tipica) non formano una coppia tipica) sono indipendenti . Allora (proprietà 3 di joint AEP) Otteniamo quindi se scegliamo n sufficientemente grande e . Se possiamo scegliere e n in modo da rendere la media (su tutti i codici) di Cosa possiamo dire della probabilità massima di errore? Scegliamo , cioè quella che ottiene la capacità. quindi possiamo sostituire ad . 25 Giardino Daniele – Costante Luca Se la media su tutti i codici di Eliminiamo da ogni parola i con , allora esiste un codice tale che (sono meno della metà altrimenti . Allora Creiamo un nuovo codice che contiene solo tali parole di Tale codice contiene ovviamente con probabilità di errore piccola: parole, quindi il suo tasso è che per n grande non differisce , possiamo scegliere un codice di tasso , con probabilità massima significativamente da R. Concludendo: per ogni di errore . Dimostrazione parte inversa Ci resta da dimostrare che per ogni sequenza di codici con Cominceremo con il dimostrare due lemmi che ci serviranno per la dimostrazione. 1. LEMMA: sia l’output di un DMC per input . Allora per ogni distribuzione . vale DIM: COROLLARIO: Sia l’output di un DMC per input . Allora ogni distribuzione 2. Consideriamo un Canale discreto senza memoria (DMC). Sia il messaggio in input W scelto in accordo alla distribuzione uniforme tra messaggi. Sia C il codice, la parola ricevuta in output al canale, la funzione di decodifica e . Allora Definiamo Espandiamo Notiamo che 26 Giardino Daniele – Costante Luca Ne consegue che poiché è funzione di W. DIM. PARTE INVERSA da cui segue la tesi in quanto , Abbiamo che se , allora Consideriamo il messaggio W scelto uniformemente in Allora Riscriviamo la disuguaglianza Questo mostra che per la probabilità di errore si mantiene per . Questo deve valere per ogni n, infatti se avessimo codice con per n piccoli potremmo estenderli a codici di lunghezza maggiore per concatenazione. In conclusione, non si può ridurre arbitrariamente la probabilità di errore con tassi superiori alla capacità. TEOREMA CODIFICA SORGENTE-CANALE Se soddisfano la PEA allora esiste un codice sorgente-canale con la probabilità di errore non può essere resa arbitrariamente piccola. . Se DIM. PARTE DIRETTA Se vale la PEA, allora e Se codifichiamo solo sequenze tipiche allora abbiamo trasmettere sul canale con probabilità di errore . Quindi indici. Se possiamo DIM. PARTE INVERSA Dalla disuguaglianza di Fano Quindi 27 Giardino Daniele – Costante Luca Per si ha 28 Giardino Daniele – Costante Luca CODICI A CORRETTORI D’ERRORE In ogni trasmissione digitale possono avvenire degli errori. Senza metodi efficaci e veloci di correzione degli errori non sarebbe possibile ricevere informazioni provenienti dallo spazio, usare un lettore cd con qualche graffio ecc. Tendenzialmente, codifica e decodifica sono realizzate mediante hardware per essere più performanti. L'algoritmo più semplice è il controllo di parità. Ovvero data un'informazione da inviare, ad esempio “10”, l'emittente aggiunge un bit così che il numero di uno sia pari: nel nostro esempio l’informazione inviata sarà “101”. Il ricevente verifica se l'informazione ricevuta rispetta il controllo di parità, scarta l’ultimo bit e processa il contenuto informativo, che è “10”. Nella realtà il ricevente, accantona l’ultimo bit, ricalcola il valore di parità e lo compara con il ricevuto. Se sono diversi intercetta l'errore, e quindi richiede una ritrasmissione. Notate che se ricevesse “000”, non si accorgerebbe dell'errore !! Questo significa che il controllo di parità con ridondanza singola non si accorge di doppi errori, e comunque in caso di singolo errore non sa correggerlo, sa solo identificarlo. Cominciamo a porre le basi per capire come funzioni i codici di identificazione e correzione di errore con controllo di parità: essi si chiamano Codici di Hamming. Definiamo con l’alfabeto e con . Si definisce Distanza di Hamming (d), dati due codici, il numero di bit differenti posizione per posizione. Ad esempio d(101,010)=3. Tecnicamente la distanza di Hamming si ottiene facendo un XOR tra i due codici e contando quanti uno ha il risultato. Inoltre valgono le seguenti proprietà: DEFINIZIONI Un codice a correzione di errore è un sottoinsieme C di tutte le coppie di parole diverse in C) . La distanza minima di C è (minimo su C è e error detecting se può rilevare e errori C è t error correcting se può correggere t errori Se , C è 2t error detecting e t error correcting DIM: sequenza a distanza da parola codice non è in C sequenza r a distanza da parola codice ha distanza almeno da ogni altra parola codice (vale la disuguaglianza triangolare). Prendendo la parola codice più vicino ad r correggiamo t errori, quindi è è pairwise-indipendent t se per ogni e si ha 29 Giardino Daniele – Costante Luca Codici lineari Un codice è lineare s.se esiste una matrice di controllo parità sull’alfabeto A tale che C è lo spazio nullo di H, cioè Codici di Hamming Per garantire il rilevamento di un numero di errori minore o uguale a s, occorre un codice con distanza di Hamming minima dmin s+1. Immaginiamo un codice con distanza di Hamming minima dmin = 2. Questo codice garantisce il rilevamento di un solo errore. Per esempio, se la parola codice spedita è 101 e si verifica un solo errore di trasmissione, la parola codice ricevuta non corrisponderà a nessuna parola codice valida. Se si verificano invece due errori, la parola codice ricevuta potrebbe essere uguale a una delle parole codice valide e quindi il ricevitore potrebbe non accorgersi degli errori. Per garantire la correzione fino a t errori, la distanza di Hamming minima del codice che si utilizza deve essere dmin 2t+1. Per esempio, se uno schema di codifica ha una distanza di Hamming dmin = 4 possiamo rilevare al massimo 3 errori ma ne possiamo correggere 1 solo. Sia . H è composta da vettori di bits, tranne quello di tutti 0,….0. Il numero totale di parole codice è dove k viene così definito: Es. Definiamo con w(x)=peso di Hamming di x= numero di componenti di x non nulle; LEMMA: dato un codice lineare C, w(C)= minimo numero di colonne linearmente dipendenti di H DIM: H ha r colonne linearmente dipendenti in posizioni s.se esistono tali che e s.se esiste una parola codice di peso r: LEMMA: dato un codice lineare C, w(C)=d(C) DIM: COROLLARIO: un codice lineare C corregge t errori se CODIFICA E DECODIFICA DEI CODICI DI HAMMING Sia . H è composta da vettori di bits, tranne quello di tutti 0,….0. Siano Se vi sono 0 errori, allora In pratica G = matrice generatrice del codice H = matrice di controllo di parità 30 Giardino Daniele – Costante Luca Mostriamo ora un esempio di codifica/decodifica. Si fornisce la procedura di codifica per un codice lungo 15. Per prima cosa ricordiamo che e . Poiché la parola codice è lunga 15 caratteri, sappiamo che e . Inoltre sappiamo che H è composta da tutti i vettori tranne quello composto da tutti 0. Quindi gli ultimi n-k ossia 4 vettori sono la matrice identità, gli altri 11 vettori i restanti ordinati in base al loro valore. Quindi Mentre ,quindi CODIFICA Sia data una parola da spedire ad esempio . La codifica si effettua moltiplicando , ossia prendo solo le righe in G corrispondenti alla posizione degli 1 in u, sommo per colonne modulo 2 e ottengo x. La parola codice da spedire è . DECODIFICA: . La parte di dati interessati sono . Si procede quindi al controllo dei dati sui bit di controllo. Verifico se . Se ottengo un 1 mi dice in quale posizione di H si è verificato l’errore. Immaginiamo di ricevere . Per verificare dobbiamo moltiplicare 31 Giardino Daniele – Costante Luca Abbiamo un errore nella colonna 10 quindi l’errore è in posizione 10. 32