Salta al contenuto
Note per Studenti Esercizio - codice di Elias, Huffman sulla coppia di sorgenti e informazione mutua (compito del 22 gennaio 2019, es. 92)

Esercizio - codice di Elias, Huffman sulla coppia di sorgenti e informazione mutua (compito del 22 gennaio 2019, es. 92)

In questa pagina 6

Testo (compito del 22 gennaio 2019, esercizio 92). Si consideri una sorgente X(n)X(n) che genera simboli identicamente distribuiti con alfabeto AX={0,1,2}\mathcal A_X=\{0,1,2\} e densità di probabilità discreta pX(0)=12p_X(0)=\frac12, pX(1)=14p_X(1)=\frac14, pX(2)=14p_X(2)=\frac14. Si consideri anche una seconda sorgente Y(n)Y(n) definita a partire da {X(n)}\{X(n)\}. In particolare, Y(n)Y(n) o è uguale a X(n)X(n), o è uguale a (X(n)+1) mod 3(X(n)+1)\bmod3. Per ogni nn i due valori sono assunti in maniera aleatoria (e indipendente per i vari valori di nn), per cui P[Y(n)=X(n)]=0,3P[Y(n)=X(n)]=0{,}3, P[Y(n)=(X(n)+1) mod 3]=0,7P[Y(n)=(X(n)+1)\bmod3]=0{,}7. (a mod 3a\bmod3 indica il resto della divisione per 33 di aa.)

  1. (3p) Trovare un codice di sorgente di Elias per la sorgente X(n)X(n), considerando parole di ingresso di un solo simbolo. Specificare la rappresentazione binaria dei punti medi di ciascun segmento usato per la costruzione del codice, il numero di bit per ciascuna parola di codice e la lunghezza media delle parole di codice.
  2. (2p) Senza fare ulteriori calcoli, dire se il codice trovato al punto 1) è il codice di Shannon per la sorgente X(n)X(n) e se raggiunge il limite inferiore del teorema di Shannon per la codifica di sorgente.
  3. (2p) Trovare un codice di sorgente binario ottimo per le parole [X(n),Y(n)][X(n),Y(n)] e calcolare la lunghezza media delle parole di codice.
  4. (2p) Calcolare l'entropia di X(n)X(n) e l'entropia di Y(n)Y(n), e dire se l'entropia media per simbolo delle parole [X(n),Y(n)][X(n),Y(n)] è uguale, maggiore, strettamente maggiore, minore o strettamente minore all'entropia di X(n)X(n). Giustificare la risposta.
  5. (2p) Calcolare l'informazione mutua tra X(n)X(n) e Y(n)Y(n).

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), 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 → (punto 2), 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 → (punti 4 e 5), 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 →.

(1) Codice di Elias per X(n)X(n)

Si ordinano i simboli come numeri naturali (0,1,20,1,2) e si divide [0,1)[0,1) in tre intervalli di ampiezza pX(0),pX(1),pX(2)p_X(0),p_X(1),p_X(2) (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 →). Per ogni simbolo si calcolano il punto medio mm e la lunghezza l=⌈−log⁡2p⌉+1l=\lceil-\log_2p\rceil+1.

Simbolo pp Intervallo mm mm in binario l=⌈−log⁡2p⌉+1l=\lceil-\log_2p\rceil+1 Parola
00 12\frac12 [0,12)\left[0,\tfrac12\right) 14\tfrac14 0,010{,}01 ⌈1⌉+1=2\lceil1\rceil+1=2 0101
11 14\frac14 [12,34)\left[\tfrac12,\tfrac34\right) 12+18=58\tfrac12+\tfrac18=\tfrac58 0,1010{,}101 ⌈2⌉+1=3\lceil2\rceil+1=3 101101
22 14\frac14 [34,1)\left[\tfrac34,1\right) 34+18=78\tfrac34+\tfrac18=\tfrac78 0,1110{,}111 ⌈2⌉+1=3\lceil2\rceil+1=3 111111

Le rappresentazioni binarie: 14=0,012\frac14=0{,}01_2; 58=12+18=0,1012\frac58=\frac12+\frac18=0{,}101_2 (pesi 2−12^{-1} e 2−32^{-3}); 78=12+14+18=0,1112\frac78=\frac12+\frac14+\frac18=0{,}111_2. Hanno già esattamente ll cifre: non c'è nulla da troncare. Il codice {01, 101, 111}\{01,\ 101,\ 111\} è a prefisso ✓. La lunghezza media è Ly=12⋅2+14⋅3+14⋅3=1+0,75+0,75=2,5 bit.L_y=\frac12\cdot2+\frac14\cdot3+\frac14\cdot3=1+0{,}75+0{,}75=2{,}5\ \text{bit}.

(2) È il codice di Shannon? Raggiunge il limite inferiore?

Le lunghezze del codice di Elias sono ⌈iX(x)⌉+1\lceil i_X(x)\rceil+1, quelle del codice di Shannon sono ⌈iX(x)⌉\lceil i_X(x)\rceil (iX=−log⁡2pi_X=-\log_2p). Il codice del punto 1 ha una cifra in più per ogni parola, quindi non è il codice di Shannon (quello avrebbe lunghezze 1,2,21,2,2). Per lo stesso motivo la lunghezza media di Elias è sempre maggiore di quella di Shannon, che è a sua volta ≥H(X)\ge H(X) (limite inferiore del teorema di Shannon): quindi non raggiunge il limite inferiore. Il confronto numerico: H(X)=12⋅1+14⋅2+14⋅2=1,5H(X)=\frac12\cdot1+\frac14\cdot2+\frac14\cdot2=1{,}5 bit contro Ly=2,5L_y=2{,}5 bit (la differenza è esattamente 11 bit, perché le probabilità sono potenze di 12\frac12 e ⌈i⌉=i\lceil i\rceil=i). Il codice di Shannon, con lunghezze 1,2,21,2,2, avrebbe Ly=1,5=HL_y=1{,}5=H e raggiungerebbe il limite.

(3) Codice ottimo per le parole [X(n),Y(n)][X(n),Y(n)]

Per ogni XX si hanno due valori possibili di YY: Y=XY=X con probabilità 0,30{,}3 e Y=X+1 mod 3Y=X+1\bmod3 con probabilità 0,70{,}7. Le coppie hanno probabilità P(x,y)=pX(x)P(y∣x)P(x,y)=p_X(x)P(y|x):

Coppia (x,y)(x,y) Calcolo PP
(0,0)(0,0) 0,5⋅0,30{,}5\cdot0{,}3 0,150{,}15
(0,1)(0,1) 0,5⋅0,70{,}5\cdot0{,}7 0,350{,}35
(1,1)(1,1) 0,25⋅0,30{,}25\cdot0{,}3 0,0750{,}075
(1,2)(1,2) 0,25⋅0,70{,}25\cdot0{,}7 0,1750{,}175
(2,2)(2,2) 0,25⋅0,30{,}25\cdot0{,}3 0,0750{,}075
(2,0)(2,0) 0,25⋅0,70{,}25\cdot0{,}7 0,1750{,}175

La somma è 0,15+0,35+0,075+0,175+0,075+0,175=10{,}15+0{,}35+0{,}075+0{,}175+0{,}075+0{,}175=1 ✓ (le altre 33 coppie hanno probabilità 00 e non sono nel dizionario). Huffman:

Passo Nodi disponibili Unione
1 0,35; 0,175×2; 0,15; 0,075×20{,}35;\ 0{,}175^{\times2};\ 0{,}15;\ 0{,}075^{\times2} (1,1)+(2,2)=0,15(1,1)+(2,2)=0{,}15
2 0,35; 0,175×2; 0,15 (0,0); 0,15 (nodo)0{,}35;\ 0{,}175^{\times2};\ 0{,}15\,(0,0);\ 0{,}15\,(\text{nodo}) (0,0)+nodo=0,30(0,0)+\text{nodo}=0{,}30
3 0,35 (0,1); 0,30; 0,175×20{,}35\,(0,1);\ 0{,}30;\ 0{,}175^{\times2} (1,2)+(2,0)=0,35(1,2)+(2,0)=0{,}35
4 0,35 (0,1); 0,35 (nodo); 0,300{,}35\,(0,1);\ 0{,}35\,(\text{nodo});\ 0{,}30 0,30+0,35=0,650{,}30+0{,}35=0{,}65
5 0,65; 0,350{,}65;\ 0{,}35 radice =1=1

Un codice risultante: (1,2)→00(1,2)\to00, (2,0)→01(2,0)\to01, (0,0)→100(0,0)\to100, (0,1)→11(0,1)\to11, (1,1)→1010(1,1)\to1010, (2,2)→1011(2,2)\to1011 (lunghezze 2,2,3,2,4,42,2,3,2,4,4). Lunghezza media con controllo dei nodi interni: Ly=0,175⋅2⋅2+0,15⋅3+0,35⋅2+0,075⋅4⋅2=0,70+0,45+0,70+0,60=2,45 bit,L_y=0{,}175\cdot2\cdot2+0{,}15\cdot3+0{,}35\cdot2+0{,}075\cdot4\cdot2=0{,}70+0{,}45+0{,}70+0{,}60=2{,}45\ \text{bit}, 0,15+0,30+0,35+0,65+1=2,45 ✓.0{,}15+0{,}30+0{,}35+0{,}65+1=2{,}45\ \checkmark. Un altro assegnamento delle etichette o dei pareggi (la soluzione del corso usa (0,0)→110(0,0)\to110, (0,1)→0(0,1)\to0, (1,1)→1110(1,1)\to1110, (1,2)→101(1,2)\to101, (2,2)→1111(2,2)\to1111, (2,0)→100(2,0)\to100) dà la stessa Ly=2,45L_y=2{,}45 bit. Limite: H(X,Y)=2,381≤2,45<3,381H(X,Y)=2{,}381\le2{,}45<3{,}381 ✓ (per coppia di simboli).

(4) Entropie e confronto

Confronto con H(X)H(X). La risposta dipende da come si legge "entropia media per simbolo":

Se il testo chiede l'entropia per simbolo con la definizione del corso la risposta è "strettamente minore"; la soluzione del corso risponde "strettamente maggiore" confrontando l'entropia della parola (non divisa per 22) con H(X)H(X).

(5) Informazione mutua I(X;Y)I(X;Y)

Per la regola della catena I(X;Y)=H(Y)−H(Y∣X)I(X;Y)=H(Y)-H(Y|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 →): I(X;Y)=H(Y)−H(Y∣X)=1,5516−0,8813=0,6703 bit.I(X;Y)=H(Y)-H(Y|X)=1{,}5516-0{,}8813=0{,}6703\ \text{bit}. Controllo con la formula simmetrica: H(X)+H(Y)−H(X,Y)=1,5+1,5516−2,3813=0,6703H(X)+H(Y)-H(X,Y)=1{,}5+1{,}5516-2{,}3813=0{,}6703 ✓. (Nel testo della soluzione del corso c'è un refuso, "(a+1) mod 4(a+1)\bmod4" al posto di  mod 3\bmod3, ma il valore usato, H(Y∣X)=0,88H(Y|X)=0{,}88 e I=0,67I=0{,}67, è quello giusto.)

(Verificato con Python: Elias 01,101,11101,101,111 con Ly=2,5L_y=2{,}5, Huffman delle coppie Ly=2,45L_y=2{,}45 con somma dei nodi uguale, H(X)=1,5H(X)=1{,}5, H(Y)=1,55163H(Y)=1{,}55163, H(X,Y)=2,38129H(X,Y)=2{,}38129, I=0,67034I=0{,}67034.)

Errori comuni

  • Dimenticare di mettere in ordine i simboli nel codice di Elias: i punti medi dipendono dall'ordine (ma qualunque ordine fisso funziona).
  • Usare l=⌈−log⁡2p⌉l=\lceil-\log_2p\rceil (Shannon) per Elias: serve il +1+1.
  • Credere che un codice con probabilità diadiche sia ottimo anche se è di Elias: lo è solo quello di Shannon.
  • Per le coppie, assegnare probabilità a tutte le 99 combinazioni: solo 66 hanno probabilità non nulla.
  • Per H(Y)H(Y), calcolarla da P(Y=X)P(Y=X) e P(Y=X+1)P(Y=X+1) senza sommare le coppie con lo stesso yy.
  • Confrontare l'entropia della parola con quella del singolo simbolo senza dividere per la lunghezza (e viceversa).

Versione ripasso

Testo. X∈{0,1,2}X\in\{0,1,2\} con 12,14,14\frac12,\frac14,\frac14; Y=XY=X con prob. 0,30{,}3, Y=X+1 mod 3Y=X+1\bmod3 con prob. 0,70{,}7. Elias per XX; è Shannon? raggiunge il limite?; Huffman per [X,Y][X,Y]; H(X)H(X), H(Y)H(Y) e confronto con l'entropia per simbolo della coppia; I(X;Y)I(X;Y).

Teoria collegata