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