4 – CANALI DI INFORMAZIONE Una volta esaminate le caratteristiche della sorgente, spostiamo l’attenzione sul canale di trasmissione. Si è visto che siamo interessati a trovare codici con lunghezza media la più bassa possibile, e che l’entropia della sorgente rappresenta il limite inferiore del numero minimo di simboli di codice necessari per codificare un simbolo di sorgente. Abbiamo definito efficienza e ridondanza del codice, e ricerchiamo i codici a ridondanza minima. Nella codifica di canale potrebbe essere invece interessante aumentare la ridondanza, perché a causa del rumore del canale (perturbazioni elettromagnetiche di varia natura) la ridondanza del codice potrebbe essere utile per l’identificazione e la correzione degli errori. Il secondo teorema di Shannon preciserà le opportune tecniche di codifica di canale con rumore. CANALI DI TRASMISSIONE Un canale di trasmissione dell’informazione è descritto dando un alfabeto di ingresso X x1 , x2 ,..., xr , un alfabeto di uscita Y y1 , y 2 ,..., y s e dalla serie di probabilità condizionate P( y j | xi ), 1 i r, 1 j s L’alfabeto di ingresso può essere senza perdita di generalità quello di codifica della sorgente. La probabilità condizionata P(yj|xi) rappresenta la probabilità di osservare in uscita il simbolo yj a condizione di aver trasmesso il simbolo xi secondo il seguente schema: x1 x2 . y1 . y2 . . xr . . ys Un canale di informazione importante è il cosiddetto Canale Simmetrico Binario (BSC) nel quale gli alfabeti di ingresso e di uscita coincidono in 0,1 , secondo il seguente schema: Si vede cioè che P(0 | 0) P(1 | 1) P * P(1 | 0) P(0 | 1) P 1 P * cioè che P è la probabilità d’errore del canale, ossia la probabilità che trasmesso un simbolo si riceva l’altro, mentre P*=1-P è la probabilità che trasmesso un simbolo questo venga ricevuto correttamente. Il canale è binario e anche simmetrico perché la probabilità di ricevere 1 se si invia 0 è uguale alla probabilità di ricevere 0 se si invia 1. Il canale così definito è detto senza memoria o a memoria zero (memoryless canne) perché l’eventuale errore compiuto su un simbolo non implica un errore nel simbolo precedente o successivo. In un canale con memoria (memory o burst channel) invece gli errori si presentano a pacchetti, e l’errore su un simbolo si ripercuote sui simboli precedenti e successivi. Disponiamo ingressi ed uscite come nel seguente schema: y1 y2 …... ...... ys x1 P(y1|x1) P(y2|x1) … … P(ys|x1) x2 P(y2|x1) P(y2|x2) … … P(ys|x2) … . . … … … . . … … … . . … … xr P(y2|xr) … … P(y1|xr) P(ys|xr) Ogni riga corrisponde ad un ingresso xi fisso ed i termini di riga sono le probabilità di ottenere i vari simboli di uscita a condizione che si sia inviato xi. Introduciamo allora in modo sintetico la matrice di canale in (4.1) nella quale ad ogni riga corrisponde un ingresso e ad ogni colonna corrisponde un’uscita dello stesso. Nella 4.1 la somma degli elementi di una riga deve valere 1 perché si tratta della somma delle probabilità che un ingresso generi comunque una certa uscita. P11 P P= 21 ... Pr1 In questa matrice vale P12 P21 ... Pr 2 ... P1s ... P2 s ... ... ... Prs (4.1) s P ij j 1 1 per i=1,….,r . Per un canale simmetrico binario la matrice sarà allora PBSC p* p p p* (4.2) Come nel caso delle sorgenti di informazione, si possono considerare gli ingressi e le uscite di un canale come costituiti da blocchi di n simboli, in modo che potremo definire l’estensione n-ma di un canale come nel caso delle sorgenti. Consideriamo quindi un canale di informazione con alfabeto di ingresso alfabeto di uscita Y y j , X xi , i 1,2,.., r , j 1,2,.., s , con matrice di canale del tipo in (4.1). Allora l’estensione n-ma di questo canale ha alfabeto di ingresso X n i , i 1,2,.., r n e alfabeto di uscita Y n j , j 1,2,.., s n (dove rn e s n è il numero di disposizioni con ripetizione di r (oppure s) simboli n ad n) con matrice di canale 11 21 12 22 ... ... r n 1 r n 2 ... 1s n ... 2 s n ... ... ... r n s n Ciascun ingresso xi consiste in una sequenza di n simboli dell’alfabeto di ingresso, e le sequenze sono tante quante le rn disposizioni; analogamente per le sn sequenze di uscita. Le probabilità condizionate ij che inviata la sequenza xi si presenti in uscita la sequenza yj, ovvero P(yj|xi), sono uguali ai prodotti delle probabilità condizionate delle n coppie di simboli elementari (uno della sequenza di ingresso e l’altro di quella in uscita). Di fatto quindi l’estenzione n-ma di un canale è lo stesso canale originario in cui i simboli di ingresso e di uscita sono visti a blocchi di n. ESEMPIO. Consideriamo l’estensione seconda del canale BSC, ossia (BSC)2, che ha l’ingresso X 2 00,01,10,11 ed identica uscita Y2. La sua matrice di canale sarà allora P *2 P * P PP * P 2 P * P P *2 P2 PP * 2 2 PP * P P* P*P 2 * P PP P * P P *2 (4.2a) E’ possibile ricavare questa matrice a partire dalla matrice P del canale BSC, PBSC in (4.2): si ha infatti P * PBSC PPBSC PPBSC P * PBSC (4.2b) Questa espressione è nota come quadrato di Kronecker o tensore quadrato della matrice P. Nel caso più generale, la matrice di canale dell’estensione n-ma di un dato canale viene denominata potenza n-ma di Kronecker della matrice di canale originaria. PROBABILITA’ DI UN CANALE Consideriamo il solito canale con alfabeto di ingresso X x1 , x2 ,..., xr , alfabeto di uscita Y y1 , y 2 ,..., y s e sia P la matrice di canale espressa dalla (4.1). Supponiamo ora di scegliere i simboli di ingresso con probabilità P(x1),P(x2),…,P(xr). Allora è possibile trovare le probabilità con cui appariranno i simboli di uscita. Infatti se consideriamo il simbolo di uscita y1, esso sarà generato con probabilità P11 se è stato inviato da x1, P21 se è stato inviato da x2, e così via fino a xr . Per il teorema delle probabilità totali si ha: P( y1 ) P( x1 ) P11 P( x 2 ) P21 ... P( x r ) Pr1 P( y 2 ) P( x1 ) P12 P( x 2 ) P22 ... P( x r ) Pr 2 …………………………………………… P( y s ) P( x1 ) P1s P( x2 ) P2 s ... P( xr ) Prs (4.3) Questa seerie di equazioni permette così di determinare le probabilità dei simboli in uscita una volta note le probabilità di ingresso P(xi) e la matrice di canale, attraverso le probabilità condizionate Pij P ( y j | xi ). Tuttavia se ammettiamo di conoscere la matrice di canale e le probabilità di uscita P(y j), per esempio con un numero molto grande di rilevazioni in modo da utilizzare come probabilità la frequenza di uscita, il sistema non è invertibile fino ad ottenere le probabilità di ingresso. In effetti se si pensa al caso di un canale BSC con P=1/2, ogni serie di probabilità di ingresso dà luogo a simboli di uscita equiprobabili: anche in generale più distribuzioni di ingresso possono dar luogo allo stesso sistema di probabilità di uscita. Oltre a poter calcolare le probabilità di uscita (4.3), utilizzando il teorema di Bayes sappiamo che la probabilità dell’evento congiunto (xi,yj) si esprime P ( xi , y j ) P ( xi ) P ( y j | x i ) P ( y j ) P ( x i | y j ) ) (4.4) Quindi possiamo determinare la probabilità condizionata di un ingresso x i data l’uscita yj, ovvero P ( xi | y j ) P ( y j | xi ) P ( xi ) P( y j ) (4.5) dove al denominatore dobbiamo sostituire l’espressione dedotta dalla (4.3). In conclusione, attraverso la conoscenza delle probabilità di ingresso e della matrice di canale, possiamo determinare: - le probabilità di uscita (4.3) - le probabilità degli eventi congiunti relative ad ogni ingresso ed ogni uscita (4.4) - le probabilità condizionate inverse degli ingressi condizionati dalle uscite (4.5). ENTROPIE A PRIORI E A POSTERIORI Sulla base della (4.3), la probabilità di uscita di yj dal canale è P(yj) quando non si conosce quale simbolo sia stato inviato in ingresso. Ma se si conosce ad esempio che in ingresso è stato inviato il simbolo xi, allora la probabilità di uscita di yi cambia in P(yj|xi). Il simbolo in ingresso xi è stato scelto con probabilità P(xi) a prescindere dalla conoscenza del simbolo in uscita. Ma se osserviamo il simbolo di uscita yj allora la probabilità che sia stato scelto in ingresso xi è P(xi|yj) . Chiameremo probabilità a priori dei simboli in ingresso le P(xi), prima della ricezione del simbolo di uscita. Chiameremo probabilità a posteriori dei simboli di ingresso le P(xi|yj) , dopo la ricezione dell’uscita yj . Allora è possibile considerare due tipi di entropia dell’alfabeto X di ingresso al canale: l’entropia a priori di X fondata sulle P(xi), e l’entropia a posteriori di X condizionata da yj , fondata sulle P(xi|yj) ovvero sulla conoscenza di yj . Avremo così: r 1 H ( X ) P( xi ) log i 1 P ( xi ) r 1 H ( X | y j ) P( xi | y j ) log P ( x | y ) i 1 i j entropia a priori di X entropia a posteriori di X quando si è ricevuto yj . H(X) è il numero medio di bit occorrenti per rappresentare il simbolo xi di una sorgente (in questo caso dell’alfabeto X di ingresso) inviato con probabilità P(xi), i=1,…r. H(X|yj) è invece il numero medio di bit occorrenti per rappresentare un simbolo xi dello stesso alfabeto X emesso però con probabilità a posteriori P(xi|yj) , cioè dopo aver osservato l’uscita yj . Siccome però i simboli di uscita si presentano con probabilità P(yj), ci si può aspettare che il numero medio di bit necessari per rappresentare un simbolo di ingresso dato un certo simbolo di uscita segua mediando anche su yj , ottenendo così s s r 1 H ( X | Y ) P( y j ) H ( X | y j ) P( y j ) P( xi | y j ) log P ( x | y ) j 1 j 1 i 1 i j (4.6) entropia media a posteriori del canale ossia il numero medio di bit necessari per rappresentare un simbolo di ingresso quando si conosce l’uscita. EQUIVOCAZIONE DEL CANALE L’entropia a priori è quella della sorgente (alfabeto di ingresso X), e la sua statistica è costituita dalle probabilità a priori P(xi). L’entropia a posteriori riguarda invece una sorgente che scelga una nuova statistica dopo ogni simbolo ricevuto, il che non è ipotizzato nel primo teorema di Shannon. Dobbiamo quindi generalizzarlo. Dal primo teorema di Shannon sappiamo che l’entropia della sorgente, misurata in unità r, costituisce il limite inferiore del numero medio di simboli (in un alfabeto di r simboli) necessario per codificare ciascun simbolo di sorgente. Ma questa volta la statistica cambia da simbolo a simbolo. Limitiamo la discussione ai codici binari senza perdita di generalità. Siccome le uscite possono essere s, si costruiscono s codici binari, uno per ciascuna possibile uscita, ognuno con lunghezza l ij secondo lo schema seguente: Simbolo Ingresso codici x1 l11 l12 ... l1 j ... l1s x2 l 21 l 22 ... l 2 j ... l 2 s ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... xr l r1 lr 2 ... l rj ... l rs Supponiamo che gli s codici considerati, di cui lij rappresenta la lunghezza, siano istantanei. Possiamo allora applicare a ciascun codice la prima parte del teorema di Shannon ed imporre che r H ( X | y j ) P( xi | y j )lij L j i 1 dove L j è la lunghezza media del codice j-mo mediato su tutti gli ingressi e abbiamo utilizzato le probabilità a posteriori invece di quelle a priori perché il codice j-mo è impiegato solo quando yj è stato ricevuto. Ora, è evidente che il numero medio di bit usati per codificare ciascun membro dell’alfabeto X è ottenibile mediando H ( X | y j ) rispetto ai simboli ricevuti yj. Si ottiene così per la (4.6) , utilizzando il teorema di Bayes, che essendo per la (4.6) s s r j 1 j 1 i 1 H ( X | Y ) P( y j ) H ( X | y j ) P( y j ) P( xi | y j )lij si ottiene s s r H ( X | Y ) P( y j ) H ( X | y j ) P( xi , y j )lij L j 1 j 1 i 1 dove L rappresenta il numero medio di bit usati per codificare un simbolo dell’alfabeto X, numero minimizzato da H(X|Y). In analogia alla (3.1) log r 1 1 li log r 1 è possibile scegliere lij come unico intero Pi Pi che soddisfi log 1 1 lij log 1 P ( xi | y j ) P ( xi | y j ) i=1,…,r; j=1,…,s In modo che le lij rappresentino s gruppi di lunghezze di parole accettabili come lunghezze di parola per gli s codici istantanei. Se moltiplichiamo per P(xi,yi) e sommiamo sui due alfabeti X e Y, otteniamo H (X | Y) L H (X | Y) 1 (4.7) Ora, questa formula è valida per ogni canale deltipo considerato, quindi analogamente a quanto detto per il teorma di Shannon, si può affermare che vale anche per l’estensione nma del canale fino a giungere alla (v. 3.3) H(X | Y) Ln 1 H(X | Y) n n in cui Ln è il numero medio di bit usati per codificare un simbolo di Xn e quindi Ln/n è il numero medio di bit usati per codificare un simbolo di X. Si può allora arrivare alla generalizzazione del teorema di Shannon al caso del canale istantaneo di cui sia nota l’uscita: lim ( n Ln ) H(X | Y) n Pertanto possiamo enunciare il TEOREMA DI SHANNON GENERALIZZATO L’entropia media a posteriori costituisce il limite inferiore del numero medio di bit che si possono utilizzare per codificare un simbolo dell’alfabeto X, una volta nota l’uscita dal canale per ogni simbolo inviato. L’entropia cui ci si riferisce è la (4.6), definizione di H(X|Y), qui intesa come media delle entropie a posteriori relative alle varie uscite yj. Poiché intervengono le probabilità di un ingresso condizionato dall’uscita, questa entropia viene chaimata equivocazione di canale o di X rispetto ad Y. Il primo teorema di Shannon enunciava che l’entropia della sorgente in unità r è il limite inferiore del numero medio di simboli di codice usato per ogni simbolo di una sorgente senza memoria. Rispetto al primo teorema di Shannon sottolineiamo un’importante differenza. Mentre la forma originale vale per ogni tipo di codici univocamente decodificabili, istantanei o no, la sua generalizzazione vale solo per i codici istantanei. Infatti in questo caso il codice del simbolo di ingresso varia al variare dell’uscita ad esso corrispondente, e anche se il codice usato è univocamente decodificabile, non è in generale vero che la sequenza di parole di codice ottenuta da una sequenza di parole di codici univocamente decodificabili sia a sua volta univocamente decodificabile. Ad esempio, si può sempre scegliere una sequenza di due parole dei codici X e X*, visti nella codifica di sorgente ed entrambi univocamente decodificabili, che sia indistingubile da una parola di X*: quindi la sequenza non è univocamente decodificabile. INFORMAZIONE MUTUA Occorrono dunque almeno H(X) bit per codificare un simbolo dell’alfabeto di ingresso, a priori cioè senza conoscere l’uscita del canale. Occorrono invece almeno H(X|Y) bit per codificare un ismbolo di ingresso quando è nota la sua uscita dal canale, ovvero a posteriori. Si può quindi dire che l’osservazione di un simbolo di uscita ci fornisce in media H(X)H(X|Y) bit di informazione, ossia la differenza fra i bit occorrenti per codificare un simbolo a priori, senza conoscere l’uscita, e quelli necessari a posteriori conoscendo la medesima. Questa differenza è nota come informazione mutua I di X ed Y, o informazione mutua del canale: I ( X ;Y ) H ( X ) H ( X | Y ) bit (4.8) La (4.8) è simmetrica rispetto ai due alfabeti di ingresso e di uscita. Infatti dalla (4.6) si ottiene che: r I ( X ; Y ) P( xi ) log( i 1 1 ) P ( xi ) s Moltiplicando il minuendo per P( y j 1 j r 1 P ( y ) P ( x | y ) log j i j P ( x | y ) j 1 i 1 i j s | xi ) 1 e ricordando la (4.4) * si ottiene r s P ( xi , y j ) I ( X ; Y ) P ( xi , y j ) log i 1 j 1 P( xi ) P( y j ) Abbiamo già utilizzato la nota diseguaglianza log x (4.9) ( x 1) , dove il simbolo = vale solo x per x=1. Applicandola in questo caso ** si ottiene facilmente I ( X ;Y ) 0 in cui il simbolo = vale solo se i due alfabeti sono statisticamente indipendenti, il che avviene se e solo se P( xi , y j ) P( xi ) P( y j ) . -----------------------------* P( xi , y j ) P( xi ) P( y j | xi ) P( y j ) P( xi | y j ) e sostituisco in r s 1 P ( y j | xi ) P ( y ) P ( x | y ) log j i j P( x | y ) j 1 i 1 i j j 1 s ** log log log P ( xi , y j ) ( P ( xi ) P ( y j ) 1 1 x x x P ( xi ) P ( y j ) 1) P ( xi ) P ( y j ) P ( xi , y j ) quindi P ( xi ) P ( y j ) P ( xi , y j ) P ( xi , y j ) (1 P ( xi ) P ( y j ) P ( xi ) P ( y j ) ) P ( xi , y j ) P ( xi , y j ) infatti Questo è un risultato importante perché afferma che non possiamo perdere in media informazione osservando l’uscita del canale. Si può anche dedurre che quando i due alfabeti non sono statisticamente indipendenti, l’entropia a priori H(X) è sempre maggiore di quella media a posteriori H(X|Y), per cui l’incertezza su quale simbolo sia stato inviato diminuisce se conosciamo le uscite dal canale. Si potrebbe però dimostrare che la differenza fra H(X) e H(X|yj) può anche essere negativa: ossia l’osservazione di un particolare simbolo in uscita potrebbe aumentare l’incertezza ma l’osservazione delle uscite presa in media la diminuisce. Infine va osservato che non si ottiene informazione se i due alfabeti sono indipendenti, perché l’incertezza sul simbolo inviato non può essere variata dall’osservazione delle uscite se queste sono indipendenti dagli ingressi. In tal caso ovviamente l’informazione mutua è nulla. Infine va osservato che la (4.9) è perfettamente simmetrica rispetto ai due alfabeti e alla loro statistica: anche se la trasmissione dell’informazione avviene in senso inverso, l’informazione mutua non cambia. Possiamo quindi porre I ( X ; Y ) I (Y ; X ) H (Y ) H (Y | X ) dove s H (Y ) P( y j ) log[ j 1 e analogamente alla sua forma simmetrica 1 ] P( y j ) (4.10) r s 1 H (Y | X ) P( xi , y j ) log i 1 j 1 P( y j | xi ) (4.10a) è l’entropia media dell’uscita condizionata dall’ingresso, detta equivocazione dell’alfabeto Y di uscita rispetto a quello X di entrata. ENTROPIA CONGIUNTA Definiamo ora anche la grandezza H(X;Y), legata all’incertezza dell’evento congiunto (xi,yj): r s 1 H ( X ; Y ) P( xi , y j ) log i 1 j 1 P( y j , xi ) Ora, moltiplicando e dividendo per P ( xi ) P ( y j ) l’argomento del logaritmo si ottiene facilmente r s 1 P ( x i ) P ( xi ) 1 ossia H ( X ; Y ) P( xi , y j ) log ( ) log( ) log P( y j ) P ( y j , xi ) i 1 j 1 P ( xi ) H ( X ; Y ) H ( X ) H (Y ) I ( X ; Y ) (4.11) Facendo riferimento alla teoria degli insiemi, ipotizziamo che in generale H(X) e H(Y) non siano disgiunti, ovvero che gli alfabeti non siano statisticamente indipendenti. Possiamo scrivere allora I ( X ; Y ) I (Y ; X ) H ( X ) H (Y ) che è poi la (4.11). Possiamo leggere questa formula dicendo che l’informazione mutua è l’intersezione delle entropie dei due alfabeti, quindi è nulla se essi sono statisticamente indipendenti e i relativi insiemi sono disgiunti. Allo stesso modo si può scrivere H ( X ; Y ) H (Y ; X ) H ( X ) H (Y ) ovvero l’entropia congiunta è l’unione delle entropie dei due alfabeti. Possiamo ancora aggiungere che l’entropia media a posteriori, o equivocazione di X rispetto ad Y, è rappresentata dall’insieme differenza fra H(X) e I(X;Y), mentre l’equivocazione di Y rispetto ad X , H(Y|X), è rappresentata dall’insieme differenza fra H(Y) e I(X;Y). In figura (4.1) è rappresentata l’informazione mutua di un canale simmetrico binario. Sia X 0,1 alfabeto di ingresso P (0) , P(1) * 1 probabilità di ingresso al canale Y 0,1 alfabeto di uscita. La matrice di canale BSC è fornita dalla (4.2) PBSC p* p p , in cui p è la probabilità di p* errore del canale e p*=1-p è la probabilità che il digit trasmesso non venga alterato dal canale. Figura 4.1 L’entropia massima si ha per P=1/2, con i simboli equiprobabili. Le probabilità di uscita dal canale sono P (0) P * * P P (1) P * P * Dalla matrice di canale si ottiene infatti: P( y1 ) P( x1 ) P11 P( x 2 ) P21 P( y 2 ) P( x1 ) P12 P( x 2 ) P22 e l’entropia di uscita, a partire dalla (4.10), sarà H ( y ) H ( P * P*) =H( P * * P ) D’altra parte le probabilità condizionate di y dato x coincidono con P e P* ed essendo r s 1 ( *) 1 si ottiene, dalla (4.10a) H (Y | X ) P( xi , y j ) log , i 1 j 1 P( y j | xi ) H ( y | x) P( x) P( y | x) log[ X Y 1 ] H ( p) P( y | x) Quindi l’informazione mutua per il canale simmetrico binario sarà I ( X ; Y ) BSC H ( y) H ( y | x) H (P * P*) H ( P) Ora, poiché come si vede dal grafico, P * P* P (4.12) P 1/ 2 , si arriva ad affermare che I ( X ; Y ) BSC 0 , dove il segno = vale se P 1 / 2 (i due alfabeti sono in questo caso statisticamente indipendenti). Osserviamo che l’informazione mutua vale 0 quando =1 e *=0 o viceversa: non c’è guadagno di informazione dalla conoscenza dell’ingresso quando sappiamo che questo è sempre lo stesso. Inoltre osserviamo le variazioni dell’informazione mutua al variare di : dato un BSC con assegnata P, quando l’informazione mutua è massima ? Ciò avviene per =1/2 (simboli equiprobabili), ed in tal caso dalla (4.12) IMAX BSC=1-H(p). In questo caso l’incertezza sull’ingresso (e quindi sull’uscita, H(Y)) è massima e vale 1 a prescindere dalla conoscenza della probabilità P del canale. In tal caso c’è massimo guadagno di informazione dalla conoscenza equiprobabili. dell’ingresso perché i due ingressi sono Definizione. Definiamo rapidità di segnalazione o bit rate di una sorgente la quantità di informazione per unità di tempo fornita dai simboli che essa presenta in uscita. L’unità di misura corrente è bit/s. Se l’entropia di una sorgente viene emessa in un tempo t, la rapidità media di segnalazione della sorgente sarà H/t bit/s. Tempo di sorgente T = ogni quanto tempo viene emesso un simbolo Symbol rate r = inverso di T r=1/T = symb /sec = baud Information rate o bit rate R=informazione per unità di tempo = numero simb/sec x H informazione media associata al simbolo R= r R= H/T x H = symb/sec x bit/simb = bit/sec = bps bit/sec=bps H/T=R H/R=T=1/r mentre il bit rate di uno specifico codice vale R= L/T bps Signaling rate rb = numero di binit emessi mediamente al secondo = numero di simboli emessi dalla sorgente ogni secondo per numero di binit associati in media ad ogni simbolo (lunghezza media di ogni codeword) rb= r x L = simb/s x binit/simb = binit/s DEFINIZIONI DI CODICI Un codice C si dice univocamente decodificabile o decifrabile se qualsiasi sequenza finite di caratteri di codice S corrisponde ad al Massimo 1 messaggio M: S 0,1* 1M x1 ,...* M ' M" t.c. C(M ) S C(M ' ) C(M " ) I codici istantanei sono un sottoinsieme dei codici univocamente decifrabili. Si dicono istantanei perché non c’è necessità di aspettare un carattere futuro per decidere come decodificare una stringa. Un codice C si dice istantaneo se due sue qualsiasi parole non sono l'una il prefisso dell'altra. I codici a blocchi sono istantanei. Un codice istantaneo con lunghezza delle parole di codice n 1,n2,..,nM su un alfabeto di cardinalità D esiste se e solo se M D ni 1 . i 1 Esempio di codice non istantaneo. Codificando A come 0 e B come 00001, bisogna aspettare il quinto carattere per decidere se decifrare il primo 0 come A o tutta la sequenza come B. Il codice è quindi univocamente decifrabile ma non istantaneo. Codici compatti. Assegnata una sorgente S = (F; p), una codifica (C; f) della sorgente S = (F; p) con minima lunghezza media si dice compatta. In questo caso anche il codice C si dice compatto. Codici ottimi. Si è visto che (dal Primo Teorema di Shannon): Siano H(X) l’entropia di una sorgente discreta senza memoria e L il valore medio delle lunghezze delle parole di codice che rappresentano i simboli emessi dalla sorgente. Si può dimostrare che vale la seguente condizione: LH(X) Il limite inferiore di L è quindi dato da LH(X) . Un codice per cui vale L=H(X) si dice assolutamente ottimo. Un codice per cui si ottiene il valore minimo possibile di L per una determinata sorgente si dice ottimo (anche se LH(X)). Un codice con valore di superiore a quello di un codice ottimo si dice sub-ottimo. Un codice ottimo è quindi un codice che usa la quantità di memoria minima possibile. Data una codifica di sorgente F, diciamo che un codice C è ottimo per F se non esiste un altro codice tramite il quale F possa essere compressa impiegando un numero inferiore di bit. Esiste in genere più di un codice ottimo per una data sorgente - cioè il codice ottimo per F non è unico.