3 – PRIMO TEOREMA DI SHANNON
Il problema di determinare la lunghezza media minima per un codice compatto
istantaneo si risolve quando la probabilità dei simboli è del tipo Pi  r
 i
, dove
 i è intero.
Ma se  i  log r (1 / Pi ) non è intero, allora si può porre la congettura che la
miglior lunghezza media sia l’intero maggiorante più vicino a  i .
Sia quindi
log r
1
1
 li  log r
1
Pi
Pi
(3.1)
In effetti vediamo subito che tale li verifica la diseguaglianza di Kraft.
Infatti riscriviamo l’espressione di sinistra come
log r
1
  log r Pi  li
Pi
e poiché per le proprietà dei logaritmi
log 2 Pi 
log r Pi
log r 2
allora
log 2 Pi  log r 2  li
ma ancora per la stessa proprietà log 2 r 
log r r
log r 2
allora
log 2 Pi
log r r
 li
log 2 r
da cui
li  log 2 r  log 2 Pi
e l’espressione al secondo membro è minore di zero: quindi
li  log 2 r  0
ossia
r li  1
che riporta immediatamente alla disuguaglianza di Kraft.
Inoltre, se moltiplichiamo i membri della (3.1) per Pi ed introduciamo la
sommatoria per i che va da 1 a q, otteniamo
H r (S )  L  H r (S )  1
(3.2)
Va osservato che mentre la disuguaglianza (2.3) L  H (S ) / log r  H r (S ) ha un
limite inferiore valido per ogni codice istantaneo, la (3.2) per essere valida
richiede la condizione (2.4)  log r Pi  li .
Siccome la sorgente S è una qualunque sorgente senza memoria, la (3.2) può
essere applicata alla sua estensione n-esima Sn: poiché si ha
H r (S n )  H r (S )  n
si avrà
H r ( S n )  Ln  H r ( S n )  1
dove Ln rappresenta la lunghezza media delle parole del codice dei simboli
dell’estensione n-ma, e Ln/n
rappresenta il numero medio di simboli
dell’alfabeto di codice usati per ogni simboli di sorgente S.
In definitiva si ha
H r (S ) 
Ln
1
 H r (S ) 
n
n
(3.3)
In questo modo il numero medio di simboli di codice usati per ogni simbolo di S
viene reso vicino quanto si vuole ad H r (S ) con la codifica di Sn anziché di S. I
simboli di S vengono codificati in blocchi di n e non uno alla volta.
La (3.3) viene espressa in modo equivalente nell’enunciato del
PRIMO TEOREMA DI SHANNON o TEOREMA DELLA CODIFICA DELLA
SORGENTE:
Ln
 H r (S )
n   n
lim
Il
(3.4)
numero medio di simboli di codice usato per ogni simbolo di
sorgente senza memoria può essere reso piccolo a piacere, purchè non
inferiore al valore dell’entropia della sorgente S misurata in unità r.
Esiste quindi un limite inferiore alla possibilità di compressione dei messaggi
della sorgente senza perdere informazione.
Poiché
H r ( S n )  H r ( S )  n , per
giungere
al miglior
risultato
è
necessario
aumentare la complessità della codifica, a causa della crescita esponenziale dei
simboli dell’estensione n-ma della sorgente, che sono pari a qn.
Il primo teorema di Shannon può essere esteso alle sorgenti di Markov.
CODICI DI HUFFMAN
Nel 1952 Huffman ha affrontato il problema di costruire codici compatti a
partire da un alfabeto di codice di r simboli.
La procedura consiste nel passare da una sorgente con q simboli e probabilità
assegnate a sorgenti più semplici con rispettivamente q-1, q-2,…,2 simboli di
alfabeto.
La sorgente binaria di arrivo è intesa essere quella con alfabeto 0,1 .
Partiamo da una sorgente S con simboli s1,s2,…,sq ordinati in modo che le
probabilità di emissione siano non crescenti:
p1  p 2  ...  p q
.
Considerando gli ultimi due simboli di S, si definisca la sorgente ridotta S1 a q1 simboli in cui gli ultimi due simboli di S siano ridotti ad un solo simbolo, con
probabilità pari alla somma delle probabilità dei due simboli considerati.
Procediamo allo stesso modo riducendo ad un simbolo man mano i due simboli
meno probabili, fino ad arrivare alla sorgente binaria 0,1 .
Facciamo un esempio con sorgente originaria S a 6 simboli:
S
P
Codice
S1
s1
0.4
1
0.4
1
0.4
1
0.4
1
0.4
s2
0.3
00
0.3
00
0.3
00
0.3
00
….0.6
s3
0.1
011
0.1
011
0.1
011
s4
0.1
0100
0.1
0100
s5
0.06
01010
s6
0.04
01011
0.1
S2
0.2
S3
0.3
S4
1
0
01
010
0101
Il codice della terza colonna è ottenuto procedendo da destra verso sinistra
aggiungendo uno 0 e un 1 ai due simboli accorpati, e così via.
Poiché il codice della sorgente binaria finale è istantaneo e compatto, è
intuitivo che anche i codici
ottenuto aggiungendo uno 0 ed un 1 fino ad
ottenere la sorgente originaria sono istantanei e compatti.
Va osservato che esiste una molteplicità di codici compatti, visto che
l’assegnazione di 0 ed 1 alle varie parole è arbitraria.
L’esempio proposto si riferisce al caso r=2, ma si può generalizzare ad un
qualunque numero finito di simboli
di codice. Nel caso binario abbiamo
accorpato in un solo simbolo i due simboli di sorgente meno probabili. Nel caso
di r
qualsiasi, si combinano r simboli per volta in un solo simbolo della
successiva sorgente ridotta, per cui se la sorgente originaria ha q simboli, la
successiva ne avrà q-r+1, e poi q-2r+2: in generale la s-esima sorgente ne
avrà q-s(r-1).
L’ultima sorgente a destra avrà r simboli se si verifica q=r+s(r-1), visto che la
sorgente s-esima ha r simboli se r=q-s(r-1).
Anche nel caso generale è possibile dimostrare che i codici così costruiti sono
istantanei e compatti. La dimostrazione procede dimostrando che se il codice di
una sorgente ridotta è istantaneo e compatto, lo è anche il codice della
sorgente precedente verso sinistra, ottenuto aggiungendo ad ogni parola delle
r meno probabili uno degli r simboli del codice; e così via.
EFFICIENZA E RIDONDANZA DI UN CODICE
Il primo teorema di Shannon fornisce un metodo di misura delle sorgenti di
informazione. Infatti ogni simbolo dell’alfabeto di sorgente S vale in media
H(S) bit o almeno Hr(S) bit in unità r di un alfabeto ad r simboli. Possiamo dire
che questo è il numero di bit necessario in media a rappresentare un simbolo
della sorgente.
Sia L la lunghezza media di un codice ad r simboli di alfabeto relativo alla
sorgente S. Siccome L non può essere inferiore all’entropia Hr(S), definiamo
efficienza del codice la quantità

  H r (S) /L per la quale vale:
H r (S )
1
L
e
lim   1
per la (3.3).
n  
Definiremo allora come ridondanza del codice
  1 
la misura di quanto 
dista dall’efficienza massima.
In Figura 3.1 si vede che l’efficienza  cresce al diminuire di r ed è massima
per valori di r pari a 2 ed a 4 . Infatti in questo caso le probabilità dei simboli
sono del tipo
1
e
2
1
, e si è visto che esistono codici compatti con lunghezza
4
media coincidente con l’entropia e quindi con efficienza uguale ad 1: L=Hr(S)
per li=i .
1.02
1
0.98
0.96

0.94
0.92
0.9
0.88
0.86
0.84
0.82
0
2
4
6
8
r
10
12
14
16
Figura 3.1
TEORIA DELLA DISTORSIONE
Si è visto che l’entropia H della sorgente rappresenta il valor medio minimo del
tasso di bit/messaggio necessario alla rappresentazione della sorgente senza
perdere informazione: non può esistere una compressione ulteriore dei
messaggi.
Tuttavia Shannon sviluppò una teoria della distorsione che giunge a questa
affermazione:
se nella rappresentazione della sorgente si può tollerare una certa distorsione
D (ossia una certa perdita di informazione), detto R la bit rate bit/messaggio
(in binario bit/binit), allora è possibile utilizzare un tasso R(D) bit/messaggio
inferiore ad H. Vediamo come ottenere formalmente queste grandezze.
Sia X la sequenza binaria che rappresenta S con un tasso di informazione di
H() bit/messaggio e Xd la sequenza distorta che la rappresenta con un tasso
inferiore.
Una misura della distorsione è fornita utilizzando la distanza di Hamming:
0 se x  xd

d H ( x, x d )  
1 se x  x
d

(3.5)
Quindi la distorsione fra due sequenze x n e x dn di n digit di X e Xd sarà misurata
in base alla distanza
d ( x n , xdn ) 
1
n
d
H
(3.5a)
( xi , xdi )
Che ci dà la media della distorsione calcolata digit a digit.
Definiamo quindi distorsione
D   P( x n )d ( x n , xdn )
la misura del valore atteso (media) della distorsione rispetto alla probabilità di
quella n-pla, in cui la somma è estesa a tutte le n-ple.
Con queste premesse, definiamo funzione di distorsione R(D) il minimo dei
tassi di informazione in grado di conseguire la assegnata distorsione D.
Nel caso di sorgente binaria, il tipico andamento di R(D) è riportato in Figura
3.2. Data una certa D sono possibili valori di R inferiori ad H() nella regione
sopra la curva. Il loro valore minimo è rappresentato da R(D), che giace sulla
curva e si annulla per D   .
Per una sorgente binaria, con   1 / 2 , si trova
H ( )  H ( D)

R( D)  

0

per
D 
(3.6)
per
D 
Figura 3.2
Nota.
L’espressione di H in (2.1), ossia
H ( S )   P( si ) log[ 1 / P(si )]   P( si ) I (si ) , i  1,2,..., q.
è dovuta a Shannon, ma non è nata con il nome di entropia. Fu J. von
Neumann a consigliare a Shannon questo nome, perché aveva le stesse
caratteristiche globali dell’entropia termodinamica.
In effetti il teorema di Boltzmann (1872) dimostrava che l’entropia S di un gas
costituito da n molecole in un volume V a pressione P e temperatura T può
essere espressa come
S=k·H
dove k=1.38·10-23 joule/°K è la costante di Boltzmann, mentre H è espressa
come la (2.1). anche se in logaritmi naturali. In questo caso
Pi 
ni
n
rappresenta la probabilità di trovare una molecola nella i-esima delle t celle
(aventi le più piccole dimensioni rilevabili sperimentalmente) in cui si può
suddividere il volume V. Si trova che il numero dei microstati che possono dare
origine allo stato definito da (P,V,T) è
N
n!
.
n1! n 2 !...nt !
Quindi lo stato più probabile è quello cui corrispondono il maggior numero di
microstati, e ciò avviene quando ni è costante e pari a n/t, ossia quando si ha
la massima uniformità della densità del gas con tutte le celle occupane dallo
stesso numero di molecole. In questo caso S, che è proporzionale a ln N
attraverso H, assume valore massimo.
Dunque questo stato in equilibrio termodinamico corrisponde al valore di
massima entropia.
Dal punto di vista informativo, H rappresenta l’informazione media ricevuta
quando si conosce in quale cella sta la molecola, ossia l’incertezza media a
priori su quale cella ospiti una molecola: quando la densità è uniforme S ed H
sono massime, e l’informazione media relativa alla cella in cui c’è la molecola
sarebbe massima.
Se viceversa tutte le n molecole stessero in una cella, l’entropia sarebbe nulla
(tutte le Pi=0 tranne una che vale 1), e conoscendo la localizzazione di una
molecola non si avrebbe nessuna informazione e nessuna incertezza a priori,
dato che già sappiamo che una cella contiene tutte le molecole e le altre celle
sono vuote.
In questo senso il sistema termodinamico può essere visto come sorgente di
informazione.
D’altra parte un sistema isolato non in equilibrio evolverà verso lo stato più
probabile, che è quello dell’equilibrio termodinamico con tutte le celle occupate
dallo stesso numero di molecole.
Sia allora S l’entropia dello stato ed SM quella massima dello stato di equilibrio.
Chiamiamo neghentropia N la quantità (sempre positiva) N=SM - S .
Se si misura la neghentropia con la stessa unità dell’informazione I del sistema
isolato, si trova che
(v.
H ( S )   P( s i ) I ( s i )
dove I  lg
1
P( si )
)
I  N  S
che è interpretabile come enunciato del secondo principio della termodinamica.
Il segno uguale vale nel caso la trasformazione sia reversibile.
La formula si legge dicendo che ogni volta che, ogni volta che si ricava
informazione dal sistema isolato, si produce un incremento della sua entropia
fino a che questa, all’equilibrio termodinamico, raggiunge il suo valore
massimo. A questo punto non si può ricavare altra informazione dal sistema.
Quindi l’informazione ha come prezzo l’innalzamento dell’entropia del sistema
e la quantità N si dice entropia negativa perché rappresenta il limite superiore
dell’informazione ricavabile dal sistema.
D’altra parte se I è negativa, ossia se introduciamo informazione nel sistema,
anche S
è negativa cioè diminuisce la sua entropia.
Se passiamo in base 2 ed esprimiamo quindi H in bit, vediamo che quando
H=1 bit si ha
S  k ln 2  2.2  10 24 cal /  K
entropia termodinamica corrispondente ad 1 bit di informazione.
In altri termini, ogni volta che otteniamo 1 bit di informazione da un sistema
paghiamo un costo degradandone l’energia di questa quantità, mentre ogni
volta che introduciamo nel sistema 1 bit di informazione dall’esterno la
“rigradiamo” della stessa quantità.
UN ESEMPIO: GENERAZIONE DI SORGENTI DISCRETE CON LA MONETA
PERFETTA
E’ possibile generare sorgenti discrete S  s1 ,..., s q  in cui i messaggi sono
emessi con probabilità P  P1 ,..., Pq  mediante la sorgente binaria (moneta
perfetta) in cui P(0)  P(1)  1 / 2 .
Dal punto di vista matematico ciascuna Pi può essere espressa in una serie
1
(*)
2k
geometrica di ragione
Ad esempio, applichiamo la formula della somma di una serie geometrica di
ragione 1/4 con k=2:
n
qk 
k
1  q n1
1 q
Ma se | q | 1
n
(1  q ) q k  1  q n 1
e
k
si ha
q
Quindi se abbiamo q 
k
1
,
4

1
-1
1 q
1
(q)
k
k

1 1
  ... 
4 16
1
1
1
4
1 
1
.
3
Quindi la probabilità 1/3 può essere generata come somma di probabilità di
eventi legati ai lanci della moneta non truccata, 1/4, 1/16, 1/64,….
Lo stesso varrà per qualsiasi probabilità 1/k.
___________
(*)
Una v.a. discreta X segue la distribuzione geometrica se P( X  r )  (1  p) r 1  p
(es. se X=2, P(X=2)=(1-p)p ) , caso di due possibili risultati, prove indipendenti).
X è il numero di prove necessarie per avere il primo successo.
Si tratta di infiniti eventi la cui somma di probabilità è 1/k, ma la cui scelta non
è univoca.
Siccome ciascun lancio di moneta perfetto porta H(1/2)=1 bit di informazione,
ciò corrisponde a misurare in bit l’informazione condotta dal messaggio.
In particolare, se H(S) è l’entropia della sorgente da generare, ovvero
l’informazione media condotta da ciascun messaggio e misurata in bit, è
intuitivo che occorreranno almeno H(S) lanci della moneta per generare S.
ESEMPIO.
Generiamo la sorgente
S  a, b, c con P(a)=1/2, P(b)=1/3, P(c)=1/6 con una
moneta perfetta e rappresentiamo la generazione con una struttura ad albero.
Soluzione. Come abbiamo visto, gli eventi si possono rappresentare con una
struttura ad albero come quella riprodotta in figura. La struttura non è univoca.
Cosniste in un albero con due rami, il primo dei quali coincide con l’unica foglia
corrispondente all’uscita dello zero al primo lancio e rappresenta l’evento a con
probabilità 1/2.
Se al primo lancio esce 1, bisogna lanciare nuovamente la moneta: se esce 0
avremo una foglia rappresentante b , corrispondente alla coppia 01 di
probabilità 1/4 appartenente alla serie di somma 1/3, probabilità assegnata a
b.
Se esce 1 si arriva al secondo nodo: si potrà avere l’uscita successiva 0, con
terna 110 di probabilità 1/8, appartenente alla serie con somma 1/6
terminante con una foglia che rappresenta l’evento c.
E così via fino al completamente dell’albero.
e