Lunghezza media
Transcript
Lunghezza media
Lunghezza media Teorema Codice D-ario prefisso per v.c. X soddisfa L ≥ HD (X). Uguaglianza vale sse D −li = pi . . – p.1/27 Lunghezza media Teorema Codice D-ario prefisso per v.c. X soddisfa L ≥ HD (X). Uguaglianza vale sse D −li = pi . Dim. HD (X) − L = = m X i=1 m X i=1 ≤ lgD = lgD m 1 X pi · lgD − p i li pi i=1 1 pi · lgD pi D li m X i=1 m X i=1 1 pi · diseg. Jensen l i pi D D−li ≤ lgD 1 = 0 diseg. Kraft . – p.1/27 Uguaglianza Dis. di Jensen vale con l’uguaglianza ⇔ Pm D−li Pm ⇔ i=1 c = i=1 pi = 1. D−li pi Dis. di Kraft vale con l’uguaglianza ⇔ 1 = ⇔c=1 = costante c Pm D−li i=1 c = 1/c Quindi l’uguaglianza vale ⇔ pi D−l1 = 1 ⇔ pi = D−li . . – p.2/27 L = HD (X) sse pi = D−li per ogni i, ovvero li = lgD Se lgD 1 pi 1 pi , non interi? Vediamo quanto la lunghezza media può discostarsi dall’entropia. . – p.3/27 Codifica ottimale ∗ le lunghezze delle parole di Teorema Siano l1∗ , . . . , lm un codice ottimale D-ario per una sorgente X con p(x). La lunghezza media del codice ottimale d.d.p.P L∗ = pi li∗ soddisfa HD (X) ≤ L∗ < HD (X) + 1 . – p.4/27 Codifica ottimale ∗ le lunghezze delle parole di Teorema Siano l1∗ , . . . , lm un codice ottimale D-ario per una sorgente X con p(x). La lunghezza media del codice ottimale d.d.p.P L∗ = pi li∗ soddisfa HD (X) ≤ L∗ < HD (X) + 1 Dim. Dobbiamo mostrare la seconda disuguaglianza. l m Consideriamo le lunghezze li = lgD i = 1, . . . , m. 1 pi per . – p.4/27 Codice esiste in quanto le lunghezze l1 , . . . , lm soddisfano la dis. di Kraft: X i D −li = X i D l − lgD 1 pi m ≤ X i D − lgD 1 pi = X i D lgD pi = X pi = 1 i La lunghezza media è X X X 1 1 p i li = pi lgD pi lgD + 1 = H(X) + 1 < pi pi i i i La lunghezza media L∗ del codice ottimale non è maggiore Red⇒ L∗ < HD (X) + 1. . – p.5/27 La ricerca dei codici ottimali U.D. puó essere limitata ai codici prefissi. . – p.6/27 La ricerca dei codici ottimali U.D. puó essere limitata ai codici prefissi. Teorema (McMillan) Le lunghezze di un codice univocamente decodificabile soddisfano la disuguaglianza di Kraft. . – p.6/27 La ricerca dei codici ottimali U.D. puó essere limitata ai codici prefissi. Teorema (McMillan) Le lunghezze di un codice univocamente decodificabile soddisfano la disuguaglianza di Kraft. Dim. Siano: C codice U.D., l(x): lunghezza della parola codice assegnata a x ∈ X , C k : k -esima estensione di C , C U.D. ⇒ C k è non singolare. . – p.6/27 Consideriamo !k X D−l(x) = x∈X = X D −l(x1 ) x1 ∈X X X x2 ∈X ... x1 ∈X x2 ∈X = X X X D −l(x2 ) ... X D−l(xk ) xk ∈X D−[l(x1 )+...+l(xk )] xk ∈X D−[l(x1 )+...+l(xk )] x1 ...xk ∈X k = X D−l(x) x∈X k . – p.7/27 α(i) = # sequenze lunghe k codificate con sequenze lunghe i. . – p.8/27 α(i) = # sequenze lunghe k codificate con sequenze lunghe i. C k non singolare ⇒ α (i) ≤ D i . X D−l(x) = k·l max X i=1 x∈X k ≤ k·l max X i=1 α (i) D −i (in quanto 1 ≤ li ≤ lmax ) Di D−i = k·l max X i=1 1 = k · lmax . – p.8/27 α(i) = # sequenze lunghe k codificate con sequenze lunghe i. C k non singolare ⇒ α (i) ≤ D i . X D−l(x) = i=1 x∈X k ≤ ⇒ P k·l max X x∈X D−l(x) k·l max X α (i) D −i (in quanto 1 ≤ li ≤ lmax ) Di D−i = i=1 k·l max X i=1 1 k ≤ (k · lmax ) , 1 = k · lmax ∀k . – p.8/27 α(i) = # sequenze lunghe k codificate con sequenze lunghe i. C k non singolare ⇒ α (i) ≤ D i . X D−l(x) = i=1 x∈X k ≤ ⇒ P k·l max X D−l(x) k·l max X α (i) D −i (in quanto 1 ≤ li ≤ lmax ) Di D−i = i=1 k·l max X i=1 1 = k · lmax 1 k ≤ (k · lmax ) , ∀k P 1 −l(x) ≤ 1. (k · lmax ) k →k→∞ 1 ⇒ D x∈X x∈X . – p.8/27 Codici di Huffman 1 2 3 4 5 Esempio. X = Vogliamo .25 .25 .2 .15 .15 costruire un codice ottimale per X . Associamo ai 2 simboli meno probabili, le 2 parole di codice più lunghe. Le 2 parole più lunghe hanno uguale lunghezza: se così non fosse potremmo eliminare l’ultimo bit dalla più lunga. Idea 1. L’albero che rappresenta il codice è pieno: se così non fosse potremmo spostare delle foglie su livelli inferiori e quindi accorciare le parole ad esse associate. Idea 2. . – p.9/27 Le parole associate ai simboli 4 e 5 devono differire solo nell’ultimo bit ⇒ possiamo combinare 4 e 5 nell’unico simbolo 40 con prob. 0.15 + 0.15 = 0.3 e porre c(4) = c(40 ) · 0, c(5) = c(40 ) · 1 (“·” indica l’operatore di concatenazione). Iterando questo procedimento sulle nuove probabilità: . – p.10/27 Si ottiene così l’albero . – p.11/27 Discorso analogo si può fare per un codice D-rio qualsiasi. Se D = 3 possiamo determinare il codice ternario scegliendo ad ogni passo le tre probabilità più piccole. . – p.12/27 abbiamo così l’albero . – p.13/27 Non sempre è possibile raggruppare le probabilità in gruppi di D. 1 2 3 4 5 6 Esempio. X = .25 .25 .2 .1 .1 .1 . – p.14/27 In questo caso aggiungiamo un simbolo con probabilità zero: . – p.15/27 Un albero D-ario pieno ha 1 + k(D − 1) nodi. Se |X | non è della forma 1 + k(D − 1) aggiungiamo simboli fino ad arrivare all’ intero più vicino ad |X | di questa forma. Se il codice non è basato su un albero D-ario pieno il codice non è ottimale perchè possiamo prendere una delle foglie a un livello più basso e spostarlo nella posizione vuota che si trova più in alto. . – p.16/27 Ottimalità dei codici di Huffman Lemma Per ogni d.d.p. p esiste un codice prefisso ottimo tale che 1. se pj > pk allora lj ≤ lk 2. le due parole più lunghe hanno la stessa lunghezza 3. le due parole più lunghe differiscono solo nell’ultimo simbolo . – p.17/27 Dim. Siano p1 ≥ p2 ≥ . . . ≥ pm Sia C un codice ottimo con lunghezze l1 , . . . , lm 1. Supponiamo per assurdo che pj > pk e lj > lk : Consideriamo il codice C 0 ottenuto da C scambiando la parola j -esima con la k -esima: C 0 (j) = C(k) C 0 (k) = C(j) . – p.18/27 La lunghezza media di C0 è L0 = P p i li + p j lk + p k lj . i6=j,k La differenza tra L0 e la lunghezza media L di C è L0 − L = X i6=j,k p i li + p j lk + p k lj − m X p i li i=1 = pj lk + pk lj − pj lj − pk lk = pj (lk − lj ) + pk (lj − lk ) = (pj − pk ) (lk − lj ) < 0 . – p.19/27 La lunghezza media di C0 è L0 = P p i li + p j lk + p k lj . i6=j,k La differenza tra L0 e la lunghezza media L di C è L0 − L = X i6=j,k p i li + p j lk + p k lj − m X p i li i=1 = pj lk + pk lj − pj lj − pk lk = pj (lk − lj ) + pk (lj − lk ) = (pj − pk ) (lk − lj ) < 0 ⇒ L0 < L; impossibile . – p.19/27 La lunghezza media di C0 è L0 = P p i li + p j lk + p k lj . i6=j,k La differenza tra L0 e la lunghezza media L di C è L0 − L = X i6=j,k p i li + p j lk + p k lj − m X p i li i=1 = pj lk + pk lj − pj lj − pk lk = pj (lk − lj ) + pk (lj − lk ) = (pj − pk ) (lk − lj ) < 0 ⇒ L0 < L; impossibile ⇒ l j ≤ lk . . – p.19/27 2. Supponiamo per assurdo che il codice contenga un’unica parola di lunghezza massima lmax ⇒ la parola più lunga è associata all’unica foglia di profondità lmax ⇒ possiamo eliminare l’ultimo bit dalla parola codice di lunghezza lmax (eliminiamo l’unica foglia di profondità lmax ottenendone una di profondità lmax − 1) ⇒ otteniamo un codice con lunghezza media inferiore ad L (impossibile in quanto Cm è ottimo). . – p.20/27 3. 1 e 2 ⇒ lm = lm−1 = max{li : 1 ≤ i ≤ m} In generale non è vero che codice ottimale soddisfa 3). Esempio. . – p.21/27 Supponiamo che C(m − 1) e C(m) non differiscano solo nell’ultimo bit ⇒ I nodi associati a C(m − 1) e C(m) non sono fratelli ⇒ C(m) ha fratello C(j) con j ≤ m − 2 ⇒ lj = lm = lm−1 Possiamo quindi scambiare C(j) e C(m) ottenendo un codice con lunghezza uguale a quella di C . . – p.22/27 Ottimalità codici di Huffman Algoritmo di Huffman Il codice ottimo Cm per p1 ≥ p2 ≥ . . . ≥ pm è definito ricorsivamente: Sia Cm−1 il codice ottimo per p1 , p2 , . . . , p0m−1 , dove p0m−1 = pm−1 + pm . Definiamo Cm (i) = Cm−1 (i) , i = 1, ..., m − 2 Cm (m − 1) = Cm−1 (m − 1) · 0 Cm (m) = Cm−1 (m − 1) · 1 L (Cm ) = m P p i li i=1 m−2 P L (Cm−1 ) = i=1 pi li + (pm−1 + pm ) (lm − 1) . . – p.23/27 L (Cm ) − L (Cm−1 ) = pm−1 lm−1 + pm lm − pm−1 lm − pm lm + pm−1 + pm = pm−1 + pm L (Cm ) − L (Cm−1 ) non dipende dalle lunghezze del codice per cui Cm−1 ottimo ⇒ Cm ottimo. Possiamo usare questo risultato come passo induttivo nella dimostrazione per induzione dell’ottimalità dei codici di Huffman. Base dell’induzione: per m = 2 si ha C2 = {0, 1} che è ovviamente ottimo. . – p.24/27 La dimostrazione per il caso D ≥ 3 è simile a quella per il caso binario. Nota: Pochè i codici di Huffman sono prefssi e ottimali, allora la lunghezza di un codice di Huffman C ∗ soddisfa H (X) ≤ L (C ∗ ) < H (X) + 1. . – p.25/27 Gioco delle 20 domande GIOCO: individuare un oggetto in un insieme con domande Yes/No SCOPO: Minimizzare numero di domande . – p.26/27 Gioco delle 20 domande GIOCO: individuare un oggetto in un insieme con domande Yes/No SCOPO: Minimizzare numero di domande DOMANDE ⇔ CODICE DOMANDE ⇒ Sequenze risposte ≡ CODIFICA binaria oggetti CODICE ⇒ i–ma domanda: "E’ bit i–mo=1” . – p.26/27 Gioco delle 20 domande GIOCO: individuare un oggetto in un insieme con domande Yes/No SCOPO: Minimizzare numero di domande DOMANDE ⇔ CODICE DOMANDE ⇒ Sequenze risposte ≡ CODIFICA binaria oggetti CODICE ⇒ i–ma domanda: "E’ bit i–mo=1” X = v.c. che rappresenta oggetti Usando codifica ottimale per X H(X) ≤ numero atteso domande < H(X) + 1 . – p.26/27 Esercizio 1 Mostrare che se un codice D-rio soddisfa la disuguaglianza di Kraft stretta allora esiste y ∈ D ∗ che non corrisponde a una sequenza di parole di codice. . – p.27/27 Esercizio 1 Mostrare che se un codice D-rio soddisfa la disuguaglianza di Kraft stretta allora esiste y ∈ D ∗ che non corrisponde a una sequenza di parole di codice. Esercizio 2 Una sorgente emette 7 simboli 1, . . . , 7 con probabilità, rispettivamente, 0.49, 0.26, 0.12, 0.04, 0.04, 0.03, 0.02 – determinare il codice di Huffman binario – valutare la lunghezza media – trovare il codice di Huffman ternario . – p.27/27 Esercizio 3 Fornire un esempio di v.c. X per cui il codice ottimo ha lunghezza media arbitrariamente prossima ad H(X) + 1 (cioè per ogni > 0, esibire per una d.p. per cui la lunghezza media di un codice ottimo risulta L > H(X) + 1 − ). . – p.28/27 Esercizio 3 Fornire un esempio di v.c. X per cui il codice ottimo ha lunghezza media arbitrariamente prossima ad H(X) + 1 (cioè per ogni > 0, esibire per una d.p. per cui la lunghezza media di un codice ottimo risulta L > H(X) + 1 − ). Esercizio 4 Data la d.p. uniforme su m elementi, cosa si può dire rispetto alle lunghezze di un codice di binario ottimo? . – p.28/27