Codifica Sorgente
Abbiamo visto che la lunghezza media L∗ di un codice
ottimo soddisfa
H (X) ≤ L∗ < H (X) + 1
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
separamente, codifichiamo sequenze di simboli
sorgente?
. – p.1/36
Notazione
Siano X1 , . . . , Xn n v.c. con alfabeto X .
l(x1 , . . . , xn ) : lunghezza della parola codice associata a
(x1 , . . . , xn )
Ln : lunghezza media per simbolo sorgente, ovvero,
1X
1
Ln =
p(x1 , . . . , xn )l(x1 , . . . , xn ) = E(X1 , . . . , Xn ).
n
n
L∗n : minima lunghezza media per simbolo sorgente
. – p.2/36
Codifica di sequenze sorgente
Teorema La minima lunghezza media per simbolo
sorgente soddisfa
H (X1 , ..., Xn ) 1
H (X1 , ..., Xn )
∗
≤ Ln <
+
n
n
n
Dim. Ciascuna sequenza x1 , . . . , xn può essere vista
come un “supersimbolo” dell’alfabeto X n .
Possiamo quindi considerare la codifica ottimale di X n :
H (X1 , ..., Xn ) ≤ nL∗n < H (X1 , ..., Xn ) + 1
Dividendo per n otteniamo il risultato voluto
. – p.3/36
Osservazioni
Se la sorgente è senza memoria, cioè se X1 , . . . , Xn
sono i.i.d., allora
H(X1 , . . . , Xn ) = nH(X)
⇒
H(X) ≤
L∗n
1
< H(X) +
n
. – p.4/36
Osservazioni
Se la sorgente è senza memoria, cioè se X1 , . . . , Xn
sono i.i.d., allora
H(X1 , . . . , Xn ) = nH(X)
⇒
H(X) ≤
Se la sorgente è stazionaria, cioè
allora
L∗n → H
L∗n
1
< H(X) +
n
H(X1 ,...,Xn )
n
→ H,
. – p.4/36
Osservazioni
Se la sorgente è senza memoria, cioè se X1 , . . . , Xn
sono i.i.d., allora
H(X1 , . . . , Xn ) = nH(X)
⇒
H(X) ≤
Se la sorgente è stazionaria, cioè
allora
L∗n → H
L∗n
1
< H(X) +
n
H(X1 ,...,Xn )
n
→ H,
Con i codici prefissi possiamo ottenere una lunghezza
media per simbolo sorgente arbitrariamente vicina
all’entropia.
. – p.4/36
Distr. di probabilità non esatta
p(x) : funzione massa di probabilità reale (non nota)
q(x) : stima di p(x) ottenuta da rilievi statici.
. – p.5/36
Distr. di probabilità non esatta
p(x) : funzione massa di probabilità reale (non nota)
q(x) : stima di p(x) ottenuta da rilievi statici.
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)?
. – p.5/36
Distr. di probabilità non esatta
p(x) : funzione massa di probabilità reale (non nota)
q(x) : stima di p(x) ottenuta da rilievi statici.
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
Ep [l(X)]: lunghezza media del codice di Shannon con
l
m
1
.
lunghezze l(x) = lg q(x)
Risulta
H(p) + D(p||q) ≤ Ep [l(x)] < H(p) + D(p||q) + 1
. – p.5/36
Distr. di probabilità non esatta
Dim.
Ep [l (X)] =
<
=
=
=
X
1
p (x) lg
q (x)
x
X
1
p (x) lg
+1
q (x)
x
X
X
p (x) 1
p (x) lg
p (x)
+
q (x) p (x)
x
x
X
X
1
p (x)
p (x) lg
p (x) lg
+
+1
p (x)
q (x)
x
x
X
X
1
p (x)
p (x) lg
p (x) lg
+
+1
p (x)
q (x)
x
x
= H (X) + D (p (x) kq (x)) + 1
. – p.6/36
Distr. di probabilità non esatta
Analogamente possiamo dimostrare il limite inferiore.
X
1
Ep [l (X)] =
p (x) lg
q (x)
x
X
1
p (x) lg
≥
q (x)
x
X
p (x) 1
p (x) lg
=
q (x) p (x)
x
X
X
1
p (x)
p (x) lg
p (x) lg
+
=
p (x)
q (x)
x
x
X
X
1
p (x)
+
p (x) lg
p (x) lg
=
p (x)
q (x)
x
x
= H (X) + D (p (x) kq (x) )
. – p.7/36
Distr. di probabilità non esatta
Migliore è la stima q(x)
⇒ minore è la divergenza D (p (x) kq (x) )
⇒ migliore è la lunghezza media.
. – p.8/36
Generazione distr. discreta
codifica ottimale ⇒ sequenza codice “quasi”
non ulteriolmente comprimibile
⇒ entropia pari a circa 1 bit per simbolo
⇒
i bit che compongono la sequenza
codice possono essere viste come
emissioni della
! sorgente
0 1
X=
1 1
2
2
. – p.9/36
Generazione distr. discreta
Consideriamo il problema inverso:
Generare una v.c. X con distribuzione di probabilità
p(x) usando una moneta non truccata.
. – p.10/36
Generazione distr. discreta
a b c
Esempio Vogliamo generare X =
numero medio lanci =
1
2
·1+
1
4
·2+
1
2
1
4
1
4
·2=
1
4
3
2
!
bits = H (X)
. – p.11/36
Generazione distr. discreta
In generale vogliamo generare una v.c.
X=
1 2 ... m
p1 p2 ... pm
!
L’algoritmo può essere descritto da un albero binario:
le foglie sono etichettate con i simboli dell’alfabeto
{1, . . . , m}
i nodi interni corrispondono ai lanci
. – p.12/36
Proprietà dell’albero
L’albero che descrive l’algoritmo per generare X ha le
seguenti proprietà:
l’albero è completo: ogni nodo interno ha 2 figli
la probabilità delle foglie a livello k è 2−k
uno stesso simbolo può essere associato a più foglie
il simbolo xi con probabilità pi = 2−k1 + . . . + 2−kt è
associato a t foglie disposte sui livelli k1 , . . . kt ,.
numero medio di lanci = altezza media dell’albero
. – p.13/36
Generazione distr. discreta
Vogliamo l’algoritmo migliore per generare X
Ci aspettiamo che
randomness dei lanci per generare X ≥ randomness di
X
⇒ numero medio di lanci ≥ H(X)
dal momento che la randomness di ciascun lancio è 1
. – p.14/36
Generazione di una distribuzione disc
Lemma
T : albero completo.
P r{foglia y a livello k(y)} = 2−k(y)
Si ha che
def
altezza media dell’albero = E[T ] = H(Y ),
dove H(Y ) è l’entropia della distribuzione sulle foglie.
Dim.
E [T ] =
X
y
H (Y ) =
X
y
2
−k(y)
· lg
2−k(y) · k (y)
1
2−k(y)
=
X
2−k(y) k (y)
y
. – p.15/36
Teorema Per ogni algoritmo che genera X , il numero
medio di lanci E[T ] soddisfa
E[T ] ≥ H(X)
Dim.
. – p.16/36
Teorema Per ogni algoritmo che genera X , il numero
medio di lanci E[T ] soddisfa
E[T ] ≥ H(X)
Dim.
T : albero binario completo che rappresenta un
algoritmo per generare X
. – p.16/36
Teorema Per ogni algoritmo che genera X , il numero
medio di lanci E[T ] soddisfa
E[T ] ≥ H(X)
Dim.
T : albero binario completo che rappresenta un
algoritmo per generare X
etichettiamo le foglie di T con simboli distinti di un
alfabeto Y
. – p.16/36
Teorema Per ogni algoritmo che genera X , il numero
medio di lanci E[T ] soddisfa
E[T ] ≥ H(X)
Dim.
T : albero binario completo che rappresenta un
algoritmo per generare X
etichettiamo le foglie di T con simboli distinti di un
alfabeto Y
se T è infinito lo è anche Y
. – p.16/36
Teorema Per ogni algoritmo che genera X , il numero
medio di lanci E[T ] soddisfa
E[T ] ≥ H(X)
Dim.
T : albero binario completo che rappresenta un
algoritmo per generare X
etichettiamo le foglie di T con simboli distinti di un
alfabeto Y
se T è infinito lo è anche Y
Y : v.c. con alfabeto Y e distribuzione di probabilità
p(y) = 2−( profondità della foglia y ) .
. – p.16/36
Ciascun simbolo x ∈ X corrisponde ad uno o più simboli di
Y (foglie di T )
. – p.17/36

T soddisfa l’ipotesi del lemma ⇒ E[T] = H(Y)








X è funzione di Y ⇒ H(X) ≤ H(Y)
⇒ E[T ] ≥ H(X)









. – p.18/36
Esempio
X=
1 2
1
4
3
4
!
2
1
1
= 2−2
=
4
2
3
1 1
= +
4
2 4
. – p.19/36
Distribuzioni diadiche
Teorema Se X ha distribuzione diadica (pi = 2−ki ) allora
E[T ] = H(X)
Dim. Costruiamo il codice di Shannon per X :
p(x) = 2−ki ⇒ l(x) = ki
E[L] = H(X)
. – p.20/36
Distribuzioni diadiche
Usiamo albero T associato al codice come algoritmo:
ciascun nodo interno è un lancio
ciascun simbolo x ∈ X corrisponde ad una foglia
numero medio di lanci = E[T ] = H(X)
. – p.21/36
Distribuzioni diadiche
Esempio
X=
1 2 3 4 5
1
4
1
4
1
4
1
8
1
8
!
. – p.22/36
Distribuzioni non diadiche
Esempio
X=
1 2 3
1
3
1
3
1
3
!
2 3
∞ i
X
1
1
1
1
1
+
+ ... =
⇒ albero infinito
= +
3
4
4
4
4
i=1
. – p.23/36
. – p.24/36
Distribuzioni non diadiche
∀i:
1.
trova la più grande potenza di 2 minore di pi :
max k1 t.c. 2k1 < pi
2.
trova la più grande potenza di 2 minore di pi − 2k1 :
max k2 t.c. 2k2 < pi − 2k1
...
t.
trova la più grande potenza di 2 minore di pi −
Pkt−1 kj
k
t
max kt t.c. 2 < pi − j=1 2
Pkt−1
j=1
2 kj :
. – p.25/36
Gli interi kt determinati dall’algoritmo sono t.c.
X
pi =
2−kt
t≥1
In pratica k1 , k2 , . . . definiscono l’espansione binaria di pi :
X (j)
pi =
pi ,
j≥1
(j)
(j)
dove pi = 2−j o pi = 0.
. – p.26/36
Applicazione dell’algoritmo
Esempio
1 2
1
3
1
3
2
3
=
P
i≥1
=
P
i≥1
1 i
4
2·
2
3
!
= 0.01010101...
1 i
4
= 0.1010101...
. – p.27/36
. – p.28/36
Esistenza dell’albero
Ci chiediamo se è sempre possibile costruire l’albero.
X
X X (j)
pi = 1 ⇒
pi = 1
i
i
j
L’albero deve contenere una foglia a livello j sse ∃i t.c.
(j)
pi > 0 per cui
XX
i
⇒
X
foglia y
2
−k(y)
(j)
pi
j
Kraf t
=1 ⇔
=
X
2−k(y)
foglia y
∃ albero con foglie y a livello k(y).
. – p.29/36
Ottimalità dell’algoritmo
L’algoritmo descritto è ottimo. Intuitivamente: ad ogni pi
associa foglie di livello minore possibile.
Nel seguito si dimostra un limite superiore al # medio di
lanci dell’algoritmo ottimo.
Teorema
Dim.
H(X) ≤ E[T ] < H(X) + 2
Il limite inferiore è verificato per ogni algoritmo.
Dimostriamo il limite superiore.
Data la distribuzione (p1 , . . . , pm ), ∀ i consideriamo
l’espansione binaria
(1)
(2)
pi = (pi , pi , . . .)
. – p.30/36
Costruiamo albero:
(j)
pi
>0
(1)
(2)
aggiungiamo una foglia per ciascun
Y = v.c. con distribuzione diadica
(1)
(2)
(1)
(2)
(p1 , p1 , . . . , p2 , p2 , . . . , pm , pm , . . .)
# lanci atteso = E[T ] = H[Y ]
. – p.31/36
X funzione di Y ⇒ H(X, Y ) = H(Y ) + H(X|Y ) = H(Y )
⇒ H(Y ) = H(X, Y ) = H(X) + H(Y |X).
Vogliamo quindi dimostrare che H(Y |X) < 2.
Lo dimostreremo provando un limite superiore su
H (Y ) =
XX
i
j
(j)
pi lg
1
(j)
pi
=
XX
i
j
j · 2−j
. – p.32/36
Per un certo i fissato consideriamo:
X
Ti =
j · 2−j
j
(j)
pi >0
Sia n t.c. 2−n ≤ pi < 2−(n−1) .
(j)
∀ j ≤ n − 1, pi
Quindi
(j)
> 0 ⇒ pi
Ti =
X
j≥n
(j)
pi >0
= 2−j ≥ 2−(n−1) > pi impossibile
j·2
−j
pi =
X
2−j
j≥n
(j)
pi >0
. – p.33/36
Consideriamo Ti + pi lg pi − 2pi
Ti + pi lg pi − 2pi < Ti − pi (n − 1) − 2pi
= Ti − pi (n + 1)
X
X
−j
=
j · 2 − (n + 1)
2−j
j≥n
(j)
pi >0
=
X
j≥n
(j)
pi >0
= 2
−n
j≥n
(j)
pi >0
2−j (j − n − 1)
(−1) +
X
j≥n+2
(j)
pi >0
(j − n − 1)2−j
. – p.34/36
Ti + pi lg pi − 2pi < −2
−n
= −2
−n
X
+
j≥n+2
(j)
pi >0
+
X
(j − n − 1) 2−j
k≥1
(k+n+1)
pi
= −2
k · 2−(k+n+1)
−n
+2
>0
−(n+1)
X
k≥1
k · 2−k
(k+n+1)
>0
pi
≤ −2
−n
+2
−(n+1)
X
k≥1
k · 2−k
= −2−n + 2−(n+1) · 2 = 0
. – p.35/36
Quindi
Ti + pi lg pi − 2pi < 0, ∀i ⇒ Ti < −pi lg pi + 2pi
⇒ E[T ] =
X
i
Ti < −
X
i
pi lg pi + 2
X
pi = H(X) + 2
i
. – p.36/36