Sei sulla pagina 1di 6

Teoria dell’informazione

• Codifica di canale e di sorgente: la prima aggiunge codice ridondante, la seconda comprime.


• Sorgente: ho un alfabeto di simboli s1, s2, sq questi simboli escono con una probabilità pi.
Le pi sono tali che 0<=pi<=1 e sommatoria di pi=1. L’obiettivo è quello di minimizzare la
lunghezza media calcolata come L= sommatoria pi*li
• Codice di Van Duren: è un codice 3 su 7. significa che 3 bit su 7 valgono 1. Ho 35
combinazioni
• Codice 01247: assegno dei pesi ai bit. 0 al primo, 1 al secondo, 2 al terzo, 4 al quarto, 7 al
quinto. È un codice 2 su 5.
• Controllo di parità: pari: aggiungo un bit di controllo dopo il messaggio. Vale zero se il
numero di 1 nel messaggio è pari, 1 se è dispari.
Dispari: aggiungo un bit di controllo dopo il messaggio. Vale uno se il
numero di 1 nel messaggio è dispari, zero se è dispari. Si usa più spesso nella
pratica, nel caso in cui il messaggio è composto da molti zeri.
• Probabilità di errore: suppongo che ci sia un rumore sempre costante chiamato
rumore bianco. Suppongo che ogni posizione abbia la stessa p di avere un errore e le posizioni
siano indipendenti tra di loro. Se p=0 sarebbe una condizione ideale mai verificata; se p=1
significa che è sempre sbagliato, basta negare tutto; se p=1/2 è un generatore di numeri casuali.
-> non esistono. Per calcolare la probabilità di avere k errori uso la binomiale: p(k)= n su k *
p^k* q^n-k, posso approssimare con p(k)= n su k* p^k dato che gli altri termini sono
trascurabili
• Ridondanza: è il rapporto tra il numero totale di cifre spedite e il numero di cifre
del messaggio. Lo scopo è quello di minimizzarla. Si calcola come R= 1+ cifre di controllo/
cifre totali. Devo quindi minimizzare il numero di bit di controllo. Nel controllo di parità la
ridondanza è: 1+ 1/n-1 e la probabilità di non accorgersi di un errore è data da 1+(1-2p)^n/2 –
(1-p)^n-> è la probabilità di commettere un numero di pari di errore.
• Burst di errori: è un insieme di errore ravvicinati, per gestirlo faccio una parità
per colonna e spedisco un intero byte di controllo. Per risolvere un errore posso anche usare 3
linee di trasmissione e prendere il simbolo con frequenza massima.
• Codici pesati: suppongo di avere un alfabeto di 36 caratteri (10 cifre+ 1 spazio+
25 lettere). Per ogni messaggio viene inviata una cifra di controllo. Questa cifra di controllo ha
peso 1. Con questa codifica se avviene uno scambio fra simboli adiacenti, l’unico modo per non
accorgersi è che i simboli siano uguali. La cifra di controllo è data da (22+26)mod37=11. c= 37-
11=26=Q. Viene spedito il simbolo Q come cifra di controllo. Il ricevente ricalcola la stessa
tabella e deve controllare solo che la somma modulo 37 sia 0.
• Codici rettangolari: i messaggi sono strutturati a rettangolo, con le cifre di
controllo sull’ultima colonna e sull’ultima riga. Se avviene un solo errore, il codice rettangolare
sa identificare la posizione e quindi può correggerlo. La ridondanza vale R=m*n/(n-1)*(m-1).
L’algoritmo è più efficiente se il rettangolo tende ad essere un quadrato. Si possono aggiungere
bit fittizi di messaggio per creare un quadrato. Il numero di cifre di controllo (parità) è dato da
n+m-1.
• Codici triangolari: i messaggi sono strutturati a triangolo, le cifre di controllo
sono meno rispetto ai codici rettangolari. Ho n cifre di controllo e sommatoria i cifre di
messaggi. Il numero di bit totali inviati è di (n+1)n/2. la ridondanza è data da R=n+1/n-1.
l’eccesso di ridondanza è dato da 2/n-1. I codici triangolari sono più efficienti di quelli
rettangolari.
• Codici cubico: ha 3(n-1)+1 cifre di parità, (n-1)^3 cifre di messaggio e 3/n^3 è
l’eccesso di ridondanza.
• Codice di hamming: suppongo che ci sia rumore bianco, il codice di hamming è
un codice capace di correggere un errore. Suppongo di avere un messaggio composto da n bit, k
cifre di messaggio e m cifre di controllo. Ho bisogno di n combinazioni per specificare la
posizione in cui è avvenuto l’errore. Deve essere 2^m>=n+1. questo codice mi permette di
correggere errori anche tra le cifre di controllo. Il mittente calcola le cifre di controllo facendo la
XOR nel seguente modo: prima cifra di controllo = un bit si un bit no; seconda cifra di
controllo: due bit si, due bit no; terza cifrea di controllo= 4 bit si 4 bit no. Inizio sempre dal
fondo. Il ricevente calcola la parità di ogni cifra di controllo (queste ultime si trovano sempre
nelle potenze di 2 come posizione). Il ricevente calcola la sindrome posizionando le cifre di
controllo dalla più piccola (meno significativa) alla più grande (più significativa). Valgono zero
se la cifra ci controllo rispetta le parità e valgono 1 se la cifra di controllo non rispetta la parità.
Trasformando il numero binario in decimale ho la posizione in cui è avvenuto l’errore. La
ridondanza del codice di Hamming è R= 1+m/k circa 1+logn/k.
• Distanza di hamming: suppongo di avere un messaggio in n cifre binarie,
lavorando in {0,1} quindi gli elementi con cui lavoro sono vettori in n bit. {0,1}^n è uno spazio
vettoriale. Se sono R^n, con n cifre posso avere 2^n combinazioni, se n=3 queste combinazioni
possono essere intese come i vertici di un cubo. Considero un insieme di vertici come
combinazioni accettabili e posso vedere un errore come uno spostamento sugli spigoli del cubo.
La distanza fra messaggi validi deve essere almeno di 1. Se è 2 mi accorgo che è successo un
errore, se è 3 posso correggere l’errore con una buona probabilità di indovinare. Se la distanza è
4 posso correggere l’errore e capire da dove arriva. La distanza di Hamming è la distanza tra il
messaggio inviato e quello ricevuto. Il peso di Hamming invece è la distanza fra un vettore e il
vettore nullo. Posso creare una bolla con al centro il messaggio corretto e ai lati, sulla superficie
della bolla, i messaggi errati. Se un errore sposta il messaggio su un valore sulla superficie della
bolla il ricevente lo sostituisce con il valore al centro della bolla. La bolla è definita come b(x,
r)= {y appartiene {0,1}^n | d(y,x) <=r}. Se voglio calcolare quante sfere ci stanno nel mio
spazio faccio vol totale/ vol sfera>= numero max sfere. Ho che 2^n/n+1>= 2^k-> 2^m>= n+1.
quindi come nel codice di Hamming se voglio correggere un errore devo rispettare questa
disequazione. Per calcolare il volume della bolla ho b(x, 1)= 1 + n su 1= n+1-> se il raggio è 1.
b(x,2)= 1+ n su 1 + n su 2-> se il raggio è 2 ecc. La distanza di Hamming gode di 3 proprietà: a)
d(x, y)>=0 e d(x, y)=0 se e solo se x=y; b) d(x, y)=d(y, x); c) d(x, z)<= d(x, y)+d(y,z).
• Codifica sorgente: suppongo di avere una sorgente s con un alfabeto {s1, s2,
..sq}, ogni simbolo ha una probabilità {p1, p2, pq} di uscire e l’obiettivo è quello di
rappresentare con un alfabeto i simboli emessi dalla sorgente. Per codifica intendiamo una
funzione y: S-> lamda*. Un tipo di codice è quello a blocchi ( conviene quando le pi sono simili
tra loro) in cui i simboli più frequenti hanno una code word più corta e simboli rari ne hanno
una più lunga. L’obiettivo è sempre quello di minimizzare la lunghezza media L= sommatoria
pi*li. Per capire quando termina una code word devo imporre 2 condizioni: 1) codice univoco (2
simboli non possono essere trasformati nella stessa code word), 2) nessuna sequenza può essere
mappata in modo che sia mal interpretata.
• N-esima estensione di S: l’n-sima estensione di S è un insieme di simboli di s, si
indica con S^n si ha che si= (si1, si2, sin). S^n contiene q^n simboli.
• Codici istantanei: sono codici in cui il ricevente riconosce subito le code word
ricevute, senza dover aspettare ke arrivi tutto il messaggio. Il concetto è che nessuna code-word
può essere prefisso di un’altra. I codici a blocchi sono tutti istantanei. Un esempio di codice
istantaneo è il comma code. (lo 0 o 1 separa sempre un simbolo da un altro). Un codice
istantaneo è migliore di un altro se ha lunghezza media minore.
• Disuguaglianza di Kraft: suppongo di avere una sorgente S con simboli s1, s2, sq
che hanno una probabilità p1, p2, pq. L’obiettivo è quello di trovare codifiche di lunghezza l1,
l2, lq. Questa disuguaglianza mi dice se le lunghezze prese vanno bene o no. Condizione
necessaria e sufficiente affinché esista un codice istantaneo r-ario avente lunghezze l1, l2, lq è
che k= sommatoria 1/r^li <= 1. I codici istantanei hanno k<=1 sempre ma non è sempre vero il
viceversa. Proposizione 1: se k<=1 allora esiste un codice istantaneo con lunghezze l1, l2, lq.
• Disequazione di Mc-Millan: esiste un codice univocamente decodificabile con
lunghezze l1, l2, lq se e solo se vale k<=1. se voglio costruire un codice istantaneo con
lunghezza media L minima devo avere che se: p1>=p2>=pq allora deve essere l1<=l2<=lq.
Proposizione 2: se ogni nodo interno di un albero binario di decisione ha 2 figli, allora K=1.
Proposizione 3: generalizza la proposizione 2 con r figli. Ho sempre K=1. Se k<=1 significa che
c’è almeno un nodo interno che ha un solo figlio (binario). Inoltre deve sempre essere che lq-
1=lq altrimenti il codice non sarebbe efficiente.
• Codici di Huffman: sono codici usati per trovare un codice istantaneo con
lunghezza media minore (cioè efficiente). È un algoritmo gready e funziona in maniera quasi
ricorsiva. È composto da 2 fasi: 1. si prendono gli r simboli con probabilità minore, si crea una
sorgente che ha una probabilità data dalla somma delle 2, continuo così finchè ho r sorgenti. 2.
assegno ad ogni sorgente un valore e faccio la fase all’indietro. Si crea un codice istantaneo.
Dato che ci sono diverse possibili combinazioni devo scegliere quella che mi minimizza la
varianza. V= sommatoria (pi-L)^2. per diminuire la varianza devo mettere la somma delle due
sorgenti nella più alta posizione disponibile. Verifico che la lunghezza media diminuisce ed è la
più piccola. Se q è una potenza di 2 ottengo un codice a blocchi. Se è quasi una potenza di 2,
ottengo un codice a blocchi accorciato. Un comma code ha tutti i simboli per cui vale p>=2/3
sommatoria pk. Huffman è un algoritmo per la compressione lossless. La varianza diminuisce se
metto la somma dei simboli più in alto possibile.
• Sorgenti di Markov: sono sorgenti dotate di memoria. Si chiama sorgente di
ordine m una sorgente che tiene conto degli ultimi m avvenimenti. La sorgente ha uno stato
interno. In totale una sorgente di ordine m ha qm stati. Si parla di probabilità condizionata. La
sorgente dovrebbe avere sempre uno stato di default. Se la sorgente non ha uno stato di default
ho una distribuzione di probabilità che mi dice con quale probabilità inizio nell’i-esimo stato.
Una sorgente può essere rappresentata come una matrice (nel nostro caso matrice 3x3).
Per trovare la probabilità che alla fine della computazione esca un simbolo moltiplico questa
matrice indicata con M per un vettore π=[pa,pb,pc]. Se voglio saperne la probabilità nella
seconda computazione faccio (π M) M = π M2.
I sistemi con una distribuzione stazionaria (non cambia mai) si chiamano ERGODICI e le
probabilità vengono ricavate dall’equazione π M = π.
TEOREMA: lim per n->infinito di Mijn=πj dove π è l’unica soluzione del sistema formato da
a) π M = π b) ∑πj=1 c) πj>0 [Mijn è la probabilità di trovarsi in uno stato j dopo n passi,
partendo dallo stato i]. La lunghezza media di un codice di Markov è solitamente minore della
lunghezza media di una sorgente senza memoria, cioè la compressione è migliore. In Markov la
lunghezza media si calcola come: L=pa La + pb Lb …. Con La=lunghezza media delle codeword
della prima riga etc.
• Codifica predittiva: considero una sorgente che emette un simbolo sn. Considero
un predittore P che cerca di “indovinare” il valore di sn. ln vale 1 se il predittore ha sbagliato e
vale 0 se il predittore ha indovinato. Il predittore ha in ingresso en per cercare di migliorare nel
caso in cui stia sbagliando molto.
Sul canale viene spedito en e il ricevente ha lo stesso predittore del mittente. Il ricevente calcola
sn facendo lo xor tra bn ed en. Il segnale viene inoltre compresso con i logaritmi: si invia cioè il
numero di zeri successivi. Esempio 00000100011001  spedisce 5302.
La probabilità di indovinare un simbolo è espressa come p e deve essere < ½. Per rappresentare
i numeri da spedire uso k bit. Ho quindi 2k numeri rappresentabili. Una di queste configurazioni
è usata per comunicare che seguiranno altri zeri. Con p(n) intendo la probabilità di avere una
sequenza di n zeri seguiti da un 1. {p(n)}s apparten No è una distribuzione di probabilità. ∑1infin
p(n)=∑pn q= q ∑pn= q (1/1-p)= 1. La lunghezza media dei bit che vengono trasmessi è : k/(1-
p2k-1). La lunghezza media e la varianza dipendono da p.
• Tabelle di Hash: suppongo di codificare un codice sorgente. Uso una tabella di
1024 elementi e una funzione h: {0,1}n  {0,….,1023}. Quando incontro una nuova variabile
la inserisco all’interno della tabella. Quest’ultima deve essere creata in modo che 2 nomi diversi
abbiano 2 diverse corrispondenze. Le tabelle di hash possono essere viste come codifiche.
• Codice di Gray è un codice con distanza di Hamming pari a 1. Ho 3 bit, scrivo
tutti i valori per 2 bit 2 volte, poi aggiungo lo 0 in testa al primo gruppo e 1 in testa al secondo
gruppo, cioè:
2 bit  00 01 11 10 3 bit  000 001 011 010 100 101 111 110
Per passare da gray a binario copio i bit fino al primo 1 (compreso) poi nego tutti i bit fino al
prossimo 1.
• Codice di anti-gray: è un codice che da una parola all’altra cambia il numero max di bit. Se un
codice anti-grey ha lunghezza k, il codice grey ha lunghezza k-1. Scrivo le codeword con k=2,
di ogni parola faccio il negato e poi aggiungo 0 a quelle iniziali, 1 a quelle negate.
• Informazione ed entropia suppongo che da una sorgente sia uscito il simbolo si, I(si)=1/pi. Più è
alta la probabilità e meno informazioni vengono date. Dato che I(si,sj)=1/(pi pj) non va bene,
introduco la nuova formula I(si)=log(1/pi). Esiste un’altra funzione sensata per I(p) che gode
delle seguenti proprietà: 1)I(p) >=0 2)I(p1;p2)=I(p1)+I(p2) 3)I(p) deve essere una funzione
continua. L’entropia è l’informazione media di una sorgente  Hr(s)= ∑i=1q pi I(si). Per p=1/e
l’entropia assume valore massimo.
• Disuguaglianza di Gibbs: considero 2 distribuzioni di probabilità (x1,x2,….,xq) e (y1,y2,….,yq).
La diseguaglianza di Gibbs parte dal concetto che ln(x) <= x-1 per ogni x ed è: ∑i=1q xi
logr(yi/xi)<=0. L’uguaglianza vale solo se ho yi=xi per ogni i, quindi se le due distribuzioni sono
identiche. Questa disuguaglianza mi permette di dire che Hr(s) – logr q <=0  Hr(s)<= logr q.
Quindi la sorgente che ci da più informazioni è quella che genera i numeri casualmente. Questa
osservazione è in contraddizione con il concetto di informazione generico(un libro con lettere
casuali contiene meno informazioni).
• Che legame c’è tra Kraft e l’entropia? Hr(s)<=L
• Codifica di Shannon-Fano: suppongo di conoscere le probabilità pi dei simboli. L’obiettivo è
quello di creare un codice istantaneo. Non uso Huffman perché è troppo “lento”, non so dire
subito la lunghezza del simbolo. Quindi, conoscendo pi ho che logr (1/pi) <= li < logr (1/pi) + 1.
So che li è l’unico intero compreso nell’intervallo. Se vale la diseguaglianza di Kraft allora le li
sono state scelte “bene”. Devo trasformare le li in 1/rli, rlogr(1/pi) <= rli < rlogr(1/pi) + 1  1/pi <= r li <
r/pi  pi >= 1/rli > pi/r  ∑pi >= ∑ (1/rli) > ∑ (pi/r)  1>= ∑ (1/rli) > 1/r (la prima parte
dell’ultima diseguaglianza corrisponde alla dis. di Kraft).
Per capire da dove vengano le codeword devo ragionare sulla dimostrazione di Kraft. Ho che
Hr(s)<=L< Hr(s)+1. La lunghezza media del codice che ottengo è minore di Hr+1. Si discosta al
massimo di 1 dal valore ottimale. Shannon-Fano è buono.
• Primo teorema di Shannon-Fano: cosa succede quando considero l’n-esima estensione di una
sorgente? Ho qn simboli, calcolo l’entropia  Hr(sn)=n Hr(s) quindi Hr(sn)<=Ln< Hr(sn)+1 
nHr(s)<=Ln< n Hr(s)+1, concludo che Hr(s)<=(Ln/n)< Hr(s)+(1/n). Ogni codeword di codifica
usa n-upla di simboli
Mi avvicino all’ottimo ma devo codificare i …… (tagliato)
• Entropia per le sorgenti di Markov: Suppongo di avere una sorgente di markov di ordine
m. La probabilità di Si è P(Si|Si1,Si2,...Sim) cioè la probabilità condizionale. L'entropia della
sorgente è data da H(S|Si1..Sim)=Σs p(Si|si1..Sim) logr 1/(P(Si|si1..Sim)) considero le sorgenti
ergodiche e se considero la probabilitò di trovarmi in Si1,Si2,...Sim, definisco l'entropia come:
Hr(S)=Σs^m p(Si|si1..Sim) H(Si|si1..Sim)= Σs^m+1 p(Si1,Si2..Sim)logr 1/(P(Si|si1..Sim))
• Sistema aggiunto considero una sorgente di markov di ordine 1. definisco le probabilità
marginali come p(Si)= Σj p(Si,Sj) e p(Sj)=Σi p(Si,Sj). p(Sj,Si)= p(Sj) p(Si|Sj). Considero ΣS^2
p(Sj,Si)log2[(p(Si)p(Sj))/p(Sj,Si)] per la legge di Gibbs so che è <=0. [parte di dimostrazione]
Considerando una sorgente S senza memoria ho che H(S)<=H(S). Quindi con gli stessi simboli
una sorgente con memoria offre una minore quantità di informazioni di una sorgente con
memoria. Se, i simboli sono stocasticamente indipendenti ho che H(S)=H(S)
• Canali, CBS e equazioni di canale: Di un canale devo considerare gli alfabeti in ingresso
(A=a1,a2,..aq) e in uscita (B=b1,b2,bs). A deve essere tale per cui A incluso in B, con una
distanza di hammming che ci permette di correggere gli errori. Uso una matrice di transazione
per il rumore, questa matrice è stocastica (le righe sono distribuzioni di probabilità). Suppongo
che il canale non possa creare o distruggere simboli. La matrice di transizione è stazionaria. Le
equazioni di canale ci dicono per ogni bj la probabilità che il bj stesso esca : p(bj)= Σ1q p(ai)p(bj|
ai). Scelgo cioè un qualunque simbolo ai e considero la probabilità che esca bj dopo questa ai.
Faccio il ragionamento x ogni i. Suppongo che nel canale non ci sia rumore, cioè che x ogni i
esiste uno e un solo j tale che p(bp|ai)=1. Se considero un canale completamente rumoroso ho in
uscita un simbolo casuale. Avrebbe quindi senso solo come generatore random:P(bj|ai)=1/S. Se
esce un bj qual'è la probabilità che sia stato inserito un simbolo ai? P(ai|bj)=(P(bj|ai)p(ai))/
(P(bj))=(P(bj|ai)p(ai))/Σ(P(bj|ai)p(ai)). Il canale binario simmetrico CBS è un canale con 0 e 1 in
ingresso e 0 e 1 in uscita. P è la probabilità di avere una trasmissione corretta e Q di avere una
trasmissione errata. La matrice di transazione è:
0 1
p 0 [P Q]
1-p 1[Q P]
le equazioni di canale sono
p(b=0)=pP+(1-p)Q; p(b=1)=pQ+(1-p)P. P(ai|bj): P(0|0)=Pp/(Pp+(1-p)Q); P(1|0)=Q(1-p)/(Pp+(1-
p)Q); P(0|1)=Qp/(Qp+(1-p)P); P(1|1)=P(1-p)/(Qp+(1-p)P); Se il canale è completamente rumoroso
ho che P=1/2 e Q=1/2. se non c'è rumore P=1 e Q=0. Il funzionamento corretto di un canale dipende
anche da come scelgo p e 1-p
• Entropia di un canale: posso misurare l'entropia delle sequenze in ingresso e uscita del
canale: Hr(A)=Σ1q p(ai)logr(1/p(ai)) e Hr(B)=Σ1S p(bj)logr(1/p(bj)). Definisco la quantità media
di informazione su A dopo l'uscita di un simbolo Bj Hr(A|Bj)=Σ1q p(ai|bj)logr(1/p(ai|bj)). Se ho
un qualunque simbolo in uscita avrò che l'entropia vale : Hr(A|B)=Σj=1S Σi=1q p(ai,bj)logr(1/p(ai|
bj))
Se ai e Bj sono stocasticamente indipendenti ho che p(ai,bj)=p(ai)p(bj) e Hr(A,B)=Hr(A)
+Hr(B). Se invece P(ai,bj)=p(ai) p(bj|ai) ho che Hr(A,B)=Hr(A)+Hr(B|A) si chiama
equivocazione è la quantità introdotta dal rumore. Se il canale è completamente rumoroso Hr(B|
A)=Hr(B) ho anche che Hr(A,B)=Hr(B,A)=Hr(B)+Hr(A|B).
• Mutua informazione: siamo nell'ottica di un osservatore all'uscita del canale. La mutua
informazione è data da I(ai,bj)=logr p(ai|bj)/p(bj). Se p(ai|bj)=p(ai)->I(ai, bj)=0 cioè il fatto che
sia uscito bj non ci dice niente sulla distribuzione di probabilità di ai. Questa è la condizione
ottima per la sicurezza. Se invece abbiamo p(ai|bj)>p(ai)->I(ai, bj)>0. I non può mai essere
minore di 0. Ai e bj possono essere scambiati cioè: I(bj,ai)=log(p(bj|ai)/p(bj). Ho che
I(ai;bj)<=I(ai). Per definire la mutua informazione del sistema possiamo calcolare le medie sugli
alfabeti. I(A;B)=I(B;A)= Σi=1qΣj=1S p(ai,bj) log(p(ai,bj)/p(ai)*p(bj). La mutua informazione
condizionata è data da I(ai,B)=Σj=1s p(bj|ai) I(bj;ai). La mutua informazione gode di alcune
proprietà: I(A,B)>=0. I(A;B)=0 Se A e B sono indipendenti . I(A;B)=I(B;A). Se combino la
mutua informazione con l'entropia ho che I(A;B)=H(A)+H(B)-H(A,B) quindi 0<=H(A|
B)<=H(A) 0<=H(B|A)<=H(B)
• Capacità di canale: è la quantità massima di informazione che transita nel canale. Uso la
mutua informazione per definirla. I(A;B)= ΣAΣB p(a,b)*logr p(a,b)/(p(a)p(b)).
Il problema è che le p(a) possono influire sulla mutua informazione, quindi scegliendo male p(a)
sfrutto male il canale. La capacità però non dipende da come usiamo noi il canale. Definisco
quindi la capacità come C=max I(A;B) (per ogni p(a)) cioè considero la mutua informazione per
ogni valore di p(a) con questo metodo però non conosco immediatamente le capacità.
In realtà i canali trattano tutti i simboli nello stesso modo. Se considero l'n-esima estensione di
un canale CBS quindi CBSn posso pensarla come n canali CBS messi in parallelo o in serie.
Canale uniforme:canale la cui matrice ha tutte le righe ricavabili dalle permutazioni della prima
riga. Le probabilità quindi non cambiano. Sono i canali più semplici da trattare.
Se considero un canale senza rumore ho che I(A,B)=Hr(B)=Hr(A). Come calcolo la capacità di
un canale binario simmetrico? Suppongo di avere pacchetti di bit che comprendono ciascuno un
bit di parità. Ho che I(A,B)=Hr(B)-W; W=ΣB P(b|a) logr1/p(b|a) -> I(A;B)=Hr(B)-n Hr(P)
Come calcolo la capacità di un CBS? Devo massimizzare Hr(B). Se indico con x la probabilità
che esca 0 e con 1-x la probabilità che esca 1 ho che per x=1/2 l'entropia ha il valore massimo.
La capacità di un CBS è quindi data da C=1-Hr(P)=1-Hr(Q). Se ho n canali in parallelo C=n
-CCBS=n(1-Hr(P))
• Teorema: calcola la capacità di un canale non simmetrico .
I(A;B)=ΣA p(a) ΣBp(B|A)log(p(b|a)/p(b))=ΣA p(a)I(a|B). Quando le p dei simboli di input mi
permettono di raggiungere la capacità di un canale allora abbiamo che: p(a)|I(A,B)=C->
I(a,B)=C