Salta al contenuto
Note per Studenti Esercizio - Huffman, Elias ed entropia con probabilità dipendenti dalla matricola (secondo compitino dell'8 gennaio 2021, es. 118)

Esercizio - Huffman, Elias ed entropia con probabilità dipendenti dalla matricola (secondo compitino dell'8 gennaio 2021, es. 118)

Esame
In questa pagina 6

Testo (secondo compitino dell'8 gennaio 2021, esercizio 118). Sia AA l'ultima cifra del suo numero di matricola e N={0,05se A=1 oppure 20,10se A=3 oppure 40,15se A=5 oppure 60,20se A=7 oppure 80,25se A=9 oppure 0.N=\begin{cases}0{,}05&\text{se }A=1\text{ oppure }2\\0{,}10&\text{se }A=3\text{ oppure }4\\0{,}15&\text{se }A=5\text{ oppure }6\\0{,}20&\text{se }A=7\text{ oppure }8\\0{,}25&\text{se }A=9\text{ oppure }0.\end{cases} Si consideri una sorgente XX che genera simboli indipendenti e identicamente distribuiti. Ciascun simbolo viene codificato con un codice di sorgente con alfabeto di uscita binario. L'alfabeto di XX è {1,2,3,4}\{1,2,3,4\} e la sua densità di probabilità è p(1)=p(2)=Np(1)=p(2)=N, p(3)=0,2p(3)=0{,}2.

  1. Calcolare la lunghezza media delle parole di codice per una codifica a prefisso ottima.
  2. Dire se il codice trovato al punto 1 è un codice di Shannon per la sorgente, giustificando la risposta.
  3. Trovare la parola del codice di Elias relativa al simbolo 11, con le lettere dell'alfabeto di ingresso ordinate come numeri naturali (1,2,3,41,2,3,4).
  4. Si consideri ora una diversa densità di probabilità della sorgente, con p(1)=p(3)p(1)=p(3) e p(2)=p(4)p(2)=p(4). Sia anche ZZ una variabile aleatoria con entropie condizionate H(Z∣X)=N+32N2,H(Z∣X=1)=H(Z∣X=3)=2N,H(Z∣X=2)=H(Z∣X=4)=N.H(Z|X)=N+\frac32N^2,\qquad H(Z|X=1)=H(Z|X=3)=2N,\qquad H(Z|X=2)=H(Z|X=4)=N. Calcolare l'entropia di XX.
  5. Si assuma di non sapere né la cardinalità dell'alfabeto di XX né la sua densità di probabilità. Si sa però che H(X)=0,1H(X)=0{,}1 bit. I bit in uscita del codificatore di sorgente vengono salvati in una memoria da cui vengono prelevati con velocità costante R=Ly/2R=L_y/2 bit/s, con LyL_y la lunghezza media delle parole del codice di sorgente (si ignorino i casi di memoria vuota o completamente piena). I bit prelevati dal buffer vengono codificati con un codice di canale prima essere trasmessi su un canale con capacità 0,60{,}6 bit/s. Dire se esistono codici di sorgente e di canale che garantiscono una probabilità di errore al ricevitore piccola a piacere.

Teoria usata: Codici di Shannon, Huffman ed Elias e codifica aritmeticaIl codice di Shannon(-Fano) assegna alla parola $i$ lunghezza $l_i=\lceil-\log_{M_y}p_i\rceil$, soddisfa Kraft-McMillan e ha $H\le L_y<H+1$; è ottimo solo se le probabilità sono potenze di $\frac1{M_y}$. Il codice ottimo (lunghezza media minima) dà parole più lunghe ai simboli meno probabili e ha almeno due parole di lunghezza massima che differiscono solo nell'ultimo simbolo: lo costruisce la procedura di Huffman, che unisce a ogni passo i due nodi meno probabili. Il codice di Elias prende le prime $l_i=\lceil-\log_2p_i\rceil+1$ cifre del punto medio dell'intervallo di ampiezza $p_i$ in $[0,1)$: è a prefisso ma subottimo ($H+1\le L_y<H+2$), e si adatta alla codifica aritmetica adattativa.Codici di Shannon, Huffman ed Elias e codifica aritmetica → (punti 1-3), Entropia - informazione di un evento, disuguaglianza di Jensen e valore massimoL'informazione di un evento di probabilità $P$ è $i=\log_2\frac1P$ bit (zero per l'evento certo, additiva per eventi indipendenti). L'entropia di una variabile aleatoria discreta è l'informazione media, $H(x)=E[i_x(x)]=\sum_aP_x(a)\log_2\frac1{P_x(a)}$; vale $0\le H(x)\le\log_2M$ con $M$ cardinalità dell'alfabeto, e il massimo $\log_2M$ si raggiunge se e solo se i simboli sono equiprobabili (dimostrazione con la disuguaglianza di Jensen, perché il logaritmo è strettamente concavo).Entropia - informazione di un evento, disuguaglianza di Jensen e valore massimo → e Entropia congiunta e condizionata e informazione mutuaPer due variabili aleatorie discrete $x,y$ l'entropia congiunta è $H(x,y)=E\left[\log_2\frac1{P_{x,y}(x,y)}\right]$ e vale $\max{H(x),H(y)}\le H(x,y)\le H(x)+H(y)$, con l'uguaglianza a destra se e solo se $x$ e $y$ sono indipendenti e $H(x,y)=H(x)$ se $y=f(x)$. L'entropia condizionata $H(x|y)=E_y[H(x|y=y)]$ soddisfa la regola della catena $H(x,y)=H(x|y)+H(y)=H(y|x)+H(x)$. L'informazione mutua $I(x;y)=H(x)+H(y)-H(x,y)=H(x)-H(x|y)=H(y)-H(y|x)$ è simmetrica, $0\le I\le\min{H(x),H(y)}$, nulla per variabili indipendenti.Entropia congiunta e condizionata e informazione mutua → (punto 4), Codici a prefisso - Kraft-McMillan e limiti di Shannon sulla lunghezza mediaLa codifica di sorgente senza perdite associa a ogni parola emessa dalla sorgente una parola di codice binaria (o $M_y$-aria) di lunghezza variabile, in modo invertibile; la qualità si misura con la lunghezza media $L_y=\sum p_{\underline x}(\underline a),l(\underline a)$. In un codice a prefisso nessuna parola è l'inizio di un'altra, quindi la decodifica è istantanea. Kraft-McMillan: ogni codice decodificabile ha $\sum M_y^{-l_i}\le1$, e se interi $l_i$ la soddisfano esiste un codice a prefisso con quelle lunghezze. Shannon: $\frac{H(\underline x)}{\log_2M_y}\le L_y<\frac{H(\underline x)}{\log_2M_y}+1$ per il codice a prefisso ottimo, con $L_y=\frac{H}{\log_2M_y}$ solo se le probabilità sono potenze di $\frac1{M_y}$.Codici a prefisso - Kraft-McMillan e limiti di Shannon sulla lunghezza media → e Tasso d'informazione, capacità di canale e teorema di ShannonUna sorgente che emette un simbolo ogni $T$ secondi ha tasso d'informazione $R=\frac{H_s}T$ [bit/s] ($H_s$ entropia per simbolo); un canale ha tasso $R(g)=\frac{I_s(x;y)}T\le R(x)$. La capacità è il massimo del tasso del canale su tutte le statistiche d'ingresso, $C=\max_{p_x}\frac{I(x;y)}T$ per un canale senza memoria. Teorema di Shannon: se il tasso nominale della sorgente è $R\le C$ esiste un codice di canale con probabilità d'errore piccola a piacere, se $R>C$ no. Capacità: BSC $C=\frac1T[1-h(P_{bit})]$, canale a cancellazione $C=\frac{1-\alpha}T$, AWGN reale $C=\frac1{2T}\log_2\left(1+\frac{E_s}{\sigma^2}\right)$; canali in parallelo sommano le capacità.Tasso d'informazione, capacità di canale e teorema di Shannon → (punto 5).

Il testo dipende dalla matricola: si risolve per ciascuno dei cinque valori di NN. La probabilità del quarto simbolo si ricava dalla normalizzazione: p(4)=1−2N−0,2=0,8−2Np(4)=1-2N-0{,}2=0{,}8-2N.

NN p(1),p(2)p(1),p(2) p(3)p(3) p(4)=0,8−2Np(4)=0{,}8-2N
0,050{,}05 0,050{,}05 0,20{,}2 0,70{,}7
0,100{,}10 0,100{,}10 0,20{,}2 0,60{,}6
0,150{,}15 0,150{,}15 0,20{,}2 0,50{,}5
0,200{,}20 0,200{,}20 0,20{,}2 0,40{,}4
0,250{,}25 0,250{,}25 0,20{,}2 0,30{,}3

(1) Codice di Huffman e lunghezza media

Per N=0,05, 0,10, 0,15N=0{,}05,\ 0{,}10,\ 0{,}15 il simbolo 44 è il più probabile e i simboli 1,21,2 i meno probabili. Passi: (i) si uniscono 11 e 22 in un nodo da 2N2N; (ii) si unisce 33 (0,20{,}2) con quel nodo (2N≤0,32N\le0{,}3) in un nodo da 0,2+2N0{,}2+2N; (iii) radice con il simbolo 44. Le lunghezze sono 3,3,2,13,3,2,1 per i simboli 1,2,3,41,2,3,4 (per esempio 1→0001\to000, 2→0012\to001, 3→013\to01, 4→14\to1 per N=0,05N=0{,}05) e Ly=3N+3N+2⋅0,2+1⋅(0,8−2N)=4N+1,2.L_y=3N+3N+2\cdot0{,}2+1\cdot(0{,}8-2N)=4N+1{,}2. Controllo con i nodi interni: 2N+(0,2+2N)+1=4N+1,22N+(0{,}2+2N)+1=4N+1{,}2 ✓.

Per N=0,20N=0{,}20 le probabilità sono (0,2;0,2;0,2;0,4)(0{,}2;0{,}2;0{,}2;0{,}4) e al primo passo c'è un pareggio tra tre simboli da 0,20{,}2. Unendo 1+2=0,41+2=0{,}4 si hanno i nodi 0,4;0,4;0,20{,}4;0{,}4;0{,}2: si unisce 33 (0,20{,}2) con il simbolo 44 (0,40{,}4) in un nodo da 0,60{,}6, poi la radice. Le lunghezze sono 2,2,2,22,2,2,2 e Ly=2,0L_y=2{,}0. Un'altra scelta dei pareggi dà le lunghezze 3,3,2,13,3,2,1 e di nuovo Ly=0,2⋅3+0,2⋅3+0,2⋅2+0,4⋅1=2,0L_y=0{,}2\cdot3+0{,}2\cdot3+0{,}2\cdot2+0{,}4\cdot1=2{,}0.

Per N=0,25N=0{,}25 le probabilità sono (0,25;0,25;0,2;0,3)(0{,}25;0{,}25;0{,}2;0{,}3): si uniscono i due meno probabili, 33 (0,20{,}2) e un simbolo da 0,250{,}25, in 0,450{,}45; poi l'altro 0,250{,}25 con 0,30{,}3 in 0,550{,}55; poi la radice. Lunghezze 2,2,2,22,2,2,2, Ly=2L_y=2 bit.

NN Lunghezze Huffman (1,2,3,4)(1,2,3,4) LyL_y [bit] H(X)H(X) [bit]
0,050{,}05 3,3,2,13,3,2,1 1,41{,}4 1,2571{,}257
0,100{,}10 3,3,2,13,3,2,1 1,61{,}6 1,5711{,}571
0,150{,}15 3,3,2,13,3,2,1 1,81{,}8 1,7851{,}785
0,200{,}20 2,2,2,22,2,2,2 2,02{,}0 1,9221{,}922
0,250{,}25 2,2,2,22,2,2,2 2,02{,}0 1,9851{,}985

In ogni caso H(X)≤Ly<H(X)+1H(X)\le L_y<H(X)+1 ✓ (la somma dei nodi interni coincide con LyL_y).

(2) È un codice di Shannon?

Il codice di Shannon ha lunghezze li=⌈−log⁡2p(i)⌉l_i=\lceil-\log_2p(i)\rceil. Si confrontano con quelle di Huffman del punto 1:

NN Shannon (1,2,3,4)(1,2,3,4) Huffman (1,2,3,4)(1,2,3,4) Uguali?
0,050{,}05 5,5,3,15,5,3,1 3,3,2,13,3,2,1 no
0,100{,}10 4,4,3,14,4,3,1 3,3,2,13,3,2,1 no
0,150{,}15 3,3,3,13,3,3,1 3,3,2,13,3,2,1 no (simbolo 33)
0,200{,}20 3,3,3,23,3,3,2 2,2,2,22,2,2,2 no
0,250{,}25 2,2,3,22,2,3,2 2,2,2,22,2,2,2 no (simbolo 33)

No, per nessun valore di NN. Le probabilità non sono mai tutte potenze di 12\frac12 (condizione per cui il codice di Shannon è ottimo): p(3)=0,2p(3)=0{,}2 non lo è mai, e quindi il codice di Shannon ha almeno una parola più lunga di quella ottima, per esempio ⌈−log⁡20,2⌉=3\lceil-\log_20{,}2\rceil=3 contro 22.

(3) Parola di Elias per il simbolo 11

Con l'ordine naturale il simbolo 11 occupa il primo intervallo [0,N)[0,N), con punto medio m=N2m=\frac N2 e lunghezza l=⌈−log⁡2N⌉+1l=\lceil-\log_2N\rceil+1. La parola è formata dalle prime ll cifre binarie di mm (Codici di Shannon, Huffman ed Elias e codifica aritmeticaIl codice di Shannon(-Fano) assegna alla parola $i$ lunghezza $l_i=\lceil-\log_{M_y}p_i\rceil$, soddisfa Kraft-McMillan e ha $H\le L_y<H+1$; è ottimo solo se le probabilità sono potenze di $\frac1{M_y}$. Il codice ottimo (lunghezza media minima) dà parole più lunghe ai simboli meno probabili e ha almeno due parole di lunghezza massima che differiscono solo nell'ultimo simbolo: lo costruisce la procedura di Huffman, che unisce a ogni passo i due nodi meno probabili. Il codice di Elias prende le prime $l_i=\lceil-\log_2p_i\rceil+1$ cifre del punto medio dell'intervallo di ampiezza $p_i$ in $[0,1)$: è a prefisso ma subottimo ($H+1\le L_y<H+2$), e si adatta alla codifica aritmetica adattativa.Codici di Shannon, Huffman ed Elias e codifica aritmetica →).

NN m=N2m=\frac N2 ⌈−log⁡2N⌉+1\lceil-\log_2N\rceil+1 mm in binario Parola
0,050{,}05 0,0250{,}025 5+1=65+1=6 0,000001100110…0{,}000001100110\dots 000001000001
0,100{,}10 0,050{,}05 4+1=54+1=5 0,000011001100…0{,}000011001100\dots 0000100001
0,150{,}15 0,0750{,}075 3+1=43+1=4 0,000100110011…0{,}000100110011\dots 00010001
0,200{,}20 0,100{,}10 3+1=43+1=4 0,000110011001…0{,}000110011001\dots 00010001
0,250{,}25 0,1250{,}125 2+1=32+1=3 0,0010{,}001 001001

Esempio di conversione (N=0,05N=0{,}05): 0,025⋅2=0,05→00{,}025\cdot2=0{,}05\to0; 0,1→00{,}1\to0; 0,2→00{,}2\to0; 0,4→00{,}4\to0; 0,8→00{,}8\to0; 1,6→11{,}6\to1, e le prime 66 cifre sono 000001000001. (La soluzione del corso riporta 00010001 anche per N=0,25N=0{,}25, ma con l=3l=3 la parola è 001001: la sua lunghezza deve essere 33.)

(4) Entropia di XX con p(1)=p(3)p(1)=p(3) e p(2)=p(4)p(2)=p(4)

Siano p1=p(1)=p(3)p_1=p(1)=p(3) e p2=p(2)=p(4)p_2=p(2)=p(4). La normalizzazione dà 2p1+2p2=12p_1+2p_2=1, cioè p2=12−p1p_2=\frac12-p_1. L'entropia condizionata H(Z∣X)H(Z|X) è la media delle entropie condizionate ai valori di XX, pesate con p(x)p(x) (Entropia congiunta e condizionata e informazione mutuaPer due variabili aleatorie discrete $x,y$ l'entropia congiunta è $H(x,y)=E\left[\log_2\frac1{P_{x,y}(x,y)}\right]$ e vale $\max{H(x),H(y)}\le H(x,y)\le H(x)+H(y)$, con l'uguaglianza a destra se e solo se $x$ e $y$ sono indipendenti e $H(x,y)=H(x)$ se $y=f(x)$. L'entropia condizionata $H(x|y)=E_y[H(x|y=y)]$ soddisfa la regola della catena $H(x,y)=H(x|y)+H(y)=H(y|x)+H(x)$. L'informazione mutua $I(x;y)=H(x)+H(y)-H(x,y)=H(x)-H(x|y)=H(y)-H(y|x)$ è simmetrica, $0\le I\le\min{H(x),H(y)}$, nulla per variabili indipendenti.Entropia congiunta e condizionata e informazione mutua →): H(Z∣X)=p1⋅2N+p2⋅N+p1⋅2N+p2⋅N=4Np1+2Np2=4Np1+2N(12−p1)=2Np1+N.H(Z|X)=p_1\cdot2N+p_2\cdot N+p_1\cdot2N+p_2\cdot N=4Np_1+2Np_2=4Np_1+2N\left(\tfrac12-p_1\right)=2Np_1+N. Il testo dà H(Z∣X)=N+32N2H(Z|X)=N+\frac32N^2, quindi 2Np1=32N22Np_1=\frac32N^2, cioè p1=34N,p2=12−34N.p_1=\frac34N,\qquad p_2=\frac12-\frac34N. L'entropia di XX è H(X)=2p1log⁡21p1+2p2log⁡21p2.H(X)=2p_1\log_2\frac1{p_1}+2p_2\log_2\frac1{p_2}.

NN p1p_1 p2p_2 H(X)H(X) [bit]
0,050{,}05 0,03750{,}0375 0,46250{,}4625 1,3841{,}384
0,100{,}10 0,0750{,}075 0,4250{,}425 1,6101{,}610
0,150{,}15 0,11250{,}1125 0,38750{,}3875 1,7691{,}769
0,200{,}20 0,150{,}15 0,350{,}35 1,8811{,}881
0,250{,}25 0,18750{,}1875 0,31250{,}3125 1,9541{,}954

(Esempio per N=0,05N=0{,}05: 2⋅0,0375log⁡210,0375=0,075⋅4,737=0,35532\cdot0{,}0375\log_2\frac1{0{,}0375}=0{,}075\cdot4{,}737=0{,}3553 e 2⋅0,4625log⁡210,4625=0,925⋅1,1125=1,02902\cdot0{,}4625\log_2\frac1{0{,}4625}=0{,}925\cdot1{,}1125=1{,}0290; la somma è 1,3841{,}384. Si noti che sono tutti sotto log⁡24=2\log_24=2 bit.)

(5) Esistono codici di sorgente e di canale con errore piccolo a piacere?

La velocità di prelievo dal buffer è R=Ly2R=\frac{L_y}2 bit/s, quella dei bit che entrano nel codificatore di canale. Per il teorema di Shannon sulla codifica di canale (Tasso d'informazione, capacità di canale e teorema di ShannonUna sorgente che emette un simbolo ogni $T$ secondi ha tasso d'informazione $R=\frac{H_s}T$ [bit/s] ($H_s$ entropia per simbolo); un canale ha tasso $R(g)=\frac{I_s(x;y)}T\le R(x)$. La capacità è il massimo del tasso del canale su tutte le statistiche d'ingresso, $C=\max_{p_x}\frac{I(x;y)}T$ per un canale senza memoria. Teorema di Shannon: se il tasso nominale della sorgente è $R\le C$ esiste un codice di canale con probabilità d'errore piccola a piacere, se $R>C$ no. Capacità: BSC $C=\frac1T[1-h(P_{bit})]$, canale a cancellazione $C=\frac{1-\alpha}T$, AWGN reale $C=\frac1{2T}\log_2\left(1+\frac{E_s}{\sigma^2}\right)$; canali in parallelo sommano le capacità.Tasso d'informazione, capacità di canale e teorema di Shannon →) una codifica con errore piccolo a piacere esiste se R≤CR\le C (R<CR<C per sicurezza): Ly2<0,6 bit/s ⇒ Ly<1,2 bit.\frac{L_y}2<0{,}6\ \text{bit/s}\ \Rightarrow\ L_y<1{,}2\ \text{bit}. Per il teorema di Shannon sulla codifica di sorgente esiste un codice a prefisso con Ly<H(X)+1=0,1+1=1,1L_y<H(X)+1=0{,}1+1=1{,}1 bit (Codici a prefisso - Kraft-McMillan e limiti di Shannon sulla lunghezza mediaLa codifica di sorgente senza perdite associa a ogni parola emessa dalla sorgente una parola di codice binaria (o $M_y$-aria) di lunghezza variabile, in modo invertibile; la qualità si misura con la lunghezza media $L_y=\sum p_{\underline x}(\underline a),l(\underline a)$. In un codice a prefisso nessuna parola è l'inizio di un'altra, quindi la decodifica è istantanea. Kraft-McMillan: ogni codice decodificabile ha $\sum M_y^{-l_i}\le1$, e se interi $l_i$ la soddisfano esiste un codice a prefisso con quelle lunghezze. Shannon: $\frac{H(\underline x)}{\log_2M_y}\le L_y<\frac{H(\underline x)}{\log_2M_y}+1$ per il codice a prefisso ottimo, con $L_y=\frac{H}{\log_2M_y}$ solo se le probabilità sono potenze di $\frac1{M_y}$.Codici a prefisso - Kraft-McMillan e limiti di Shannon sulla lunghezza media →), senza bisogno di conoscere cardinalità e densità. Poiché 1,1<1,21{,}1<1{,}2, esiste un codice di sorgente con Ly<1,1L_y<1{,}1, quindi con R<0,55<0,6=CR<0{,}55<0{,}6=C: il codice di canale esiste per il teorema di Shannon. La risposta è sì.

(Nota: Ly≥H(X)=0,1L_y\ge H(X)=0{,}1 per ogni codice di sorgente, quindi l'intervallo [0,1; 1,1)[0{,}1;\ 1{,}1) è non vuoto; un'entropia così piccola indica una sorgente quasi deterministica, che si può comprimere molto raggruppando più simboli.)

(Verificato con Python: Huffman per i cinque valori di NN, Ly=1,4; 1,6; 1,8; 2,0; 2,0L_y=1{,}4;\,1{,}6;\,1{,}8;\,2{,}0;\,2{,}0 con somma dei nodi uguale; Shannon e Huffman mai uguali; punti medi di Elias e loro cifre; p1=34Np_1=\frac34N e H(X)=1,3843; 1,6098; 1,7692; 1,8813; 1,9544H(X)=1{,}3843;\,1{,}6098;\,1{,}7692;\,1{,}8813;\,1{,}9544.)

Errori comuni

  • Dimenticare di ricavare p(4)p(4) dalla normalizzazione.
  • Scrivere le lunghezze di Huffman senza controllare che i pareggi (N=0,10N=0{,}10, N=0,20N=0{,}20) non cambino LyL_y: cambiano il codice, non la lunghezza media.
  • Per il punto 2, dire "è Shannon se le lunghezze sono uguali a quelle ottime": va verificato il confronto con ⌈−log⁡2p⌉\lceil-\log_2p\rceil per ogni simbolo.
  • In Elias, prendere m=Nm=N (estremo) al posto del punto medio N2\frac N2, o dimenticare il +1+1.
  • Al punto 4, mediare H(Z∣X=x)H(Z|X=x) con pesi uguali invece che con p(x)p(x).
  • Al punto 5, usare Ly≥HL_y\ge H come se fosse Ly<HL_y<H: per l'esistenza serve il limite superiore Ly<H+1L_y<H+1.

Versione ripasso

Testo. p=(N,N,0,2,0,8−2N)p=(N,N,0{,}2,0{,}8-2N) con N=0,05,…,0,25N=0{,}05,\dots,0{,}25 (da matricola). Huffman e LyL_y; è Shannon?; Elias del simbolo 11; p(1)=p(3)p(1)=p(3), p(2)=p(4)p(2)=p(4) con H(Z∣X)=N+32N2H(Z|X)=N+\frac32N^2 (H(Z∣X=1,3)=2NH(Z|X=1,3)=2N, H(Z∣X=2,4)=NH(Z|X=2,4)=N): H(X)H(X); H(X)=0,1H(X)=0{,}1, R=Ly/2R=L_y/2, canale con C=0,6C=0{,}6: esistono codici?

Teoria collegata