Def. La lunghezza media L(C) di un codice C per una v.c. X con

Transcript

Def. La lunghezza media L(C) di un codice C per una v.c. X con
Lunghezza media di un codice
Def. La lunghezza media L(C) di un codice C per una v.c.
X con d.d.p. P (x) è data da
L(C) =
X
p (x) · l (x) = E[l(X)]
x∈X
Obiettivo: Codice ottimo rispetto alla lunghezza media
– p. 1/29
Lunghezza media ed Entropia
Esempio.
X v.c. con valori in {1, 2, 3, 4}, D = {0, 1},
P (X = 1) =
1
2
C(1) = 0
L(C) =
1
2
P (X = 2) =
C(2) = 10
C(3) = 110
1
8
P (X = 4) =
1
8
C(4) = 111
X v.c. con valori in {1, 2, 3}, D = {0, 1},
P (X = 1) =
1
3
C(1) = 0
L(C) =
P (X = 3) =
+ 14 2 + 18 3 + 81 3 = 1.75
Esempio.
1
3
1
4
·1+2·
1
3
P (X = 2) =
C(2) = 10
·2 =
5
3
1
3
P (X = 3) =
1
3
C(3) = 11
= 1.66
– p. 2/29
Lunghezza media ed Entropia
La lunghezza media L di un codice D-ario U.D. per v.c. X
soddisfa
L ≥ HD (X).
Uguaglianza vale sse D−l(x) = p(x), ∀x ∈ X .
Dim.
1
1
HD (X) − L = E lgD
− E [l(X)] = E lgD
− lgD Dl(X)
p(X)
p(X)
"
#
#
"
D−l(X)
D−l(X)
= E lgD
≤ lgD E
(Dis. Jensen)
p(X)
p(X)
X
X
D−l(x)
p(x)
D−l(x) ≤0 (Dis. Kraft)
= lgD
= lgD
p(x)
x
x
D−l(x) /p(x)
P
Uguaglianza sse:
= c ∀x e 1 = x D−l(x)
P
P
−l(x)
= x c p(x) = c e p(x) = D−l(x) .
Quindi 1 = x D
– p. 3/29
L = HD (X) sse per ogni x vale p(x) = D−l(x) , ovvero
1
,
l(x) = lgD p(x)
Se lgD
1
p(x)
non tutti interi?
Vediamo quanto la lunghezza media può discostarsi
dall’entropia.
– p. 4/29
Codice di Shannon
Consideriamo X con d.d.p. (p1 , . . . , pm ).
Codice di Shannon D-ario: codice prefisso che assegna al
simbolo
probabilitá pi una parola codice di lunghezza
l di m
li = lgD
1
pi
per i = 1, . . . , m.
Codice di Shannon esiste in quanto le lunghezze l1 , . . . , lm
soddisfano la dis. di Kraft:
X
D
−
l
lgD p1
i
m
≤
X
D
− lgD
i
i
1
pi
=
X
i
D
lgD pi
=
X
pi = 1
i
La lunghezza media è < H(X) + 1:
X X
X 1
1
<
pi lgD + 1 = HD (X) + 1
pi li =
pi lgD
pi
pi
i
i
i
– p. 5/29
Codice di Shannon
Consideriamo X con d.d.p. (p1 , . . . , pm ).
Codice di Shannon D-ario: codice prefisso che assegna al
simbolo
probabilitá pi una parola codice di lunghezza
l di m
li = lgD
1
pi
per i = 1, . . . , m.
Es. D = 2,
1
1
p(x1 ) = 41 p(x2 ) = 41 p(x3 ) = 13 p(x4 ) = 12
p(x5 ) = 12
l1 = 2
l2 = 2
l3 = 2
l4 = 4
l5 = 4
c(x1 ) = 00 c(x2 ) = 01 c(x3 ) = 10 c(x4 ) = 1100 c(x5 ) = 1101
H(X) ≈ 2.13 ≤ L = 2.3 < H(X) + 1 ≈ 3.13
– p. 6/29
Codifica ottimale
∗ le lunghezze delle parole di un
Teorema Siano l1∗ , . . . , lm
codice U.D. ottimo D-ario per v.c. X con d.d.p. (p1 , . . . , pm ).
P ∗
∗
La lunghezza media L = pi li del codice soddisfa
HD (X) ≤ L∗ < HD (X) + 1
Dim.
Ogni codice U.D. soddisfa la prima disuguaglianza.
Seconda disuguaglianza:
Sia C il codice di Shannon D-ario per X : L(C) < HD (X) + 1.
La lunghezza media L∗ del codice ottimale soddisfa
L∗ ≤ L(C) < HD (X) + 1
– p. 7/29
Costruzione Codici prefissi ottimali (binari)
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 bit
– p. 8/29
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 ′ ottenuto da C scambiando la
parola j -esima con la k -esima:
C ′ (j) = C(k)
C ′ (k) = C(j)
– p. 9/29
La lunghezza media di
C′
è
L′
=
P
pi li + pj lk + pk lj .
i6=j,k
La differenza tra L′ e la lunghezza media L di C è
L′ − L =
X
pi li + pj lk + pk lj −
i6=j,k
m
X
pi li
i=1
= pj lk + pk lj − pj lj − pk lk = pj (lk − lj ) + pk (lj − lk )
= (pj − pk ) (lk − lj ) < 0
(Ricorda pj > pk ma lj > lk )
⇒ L′ < L; impossibile
⇒ lj ≤ lk .
– p. 10/29
2. Supponiamo per assurdo che C contenga un’unica
parola di lunghezza massima lmax
⇒ possiamo eliminare l’ultimo bit dalla parola codice di
lunghezza lmax ottenendone una di lunghezza lmax − 1
⇒ otteniamo un codice prefisso con lunghezza media
inferiore ad L (impossibile in quanto C è ottimo).
– p. 11/29
3.
1 e 2 ⇒ lm = lm−1 = max{li : 1 ≤ i ≤ m}
In generale non è vero che codice ottimale soddisfa 3).
Esempio.
– p. 12/29
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. 13/29
Algoritmo di Huffman
Definito ricorsivamente:
1. Si prendano le due probabilitá piú piccole e si assegni a
ciascuna un ultimo bit differente. Si faccia il merge dei
simboli corrispondenti alle due probabilitá piú piccole in
un unico simbolo.
2. ripetere il passo 1 fino ad avere 1 simbolo.
– p. 14/29
Esempio
Vogliamo costruire un codice ottimale per
1
2 3 4
5 X=
.25 .25 .2 .15 .15
– p. 15/29
Si ottiene così l’albero
– p. 16/29
Algoritmo di Huffman
1. Si prendano le due probabilitá piú piccole e si assegni a
ciascuna un ultimo bit differente. Si faccia il merge dei
simboli corrispondenti alle due probabilitá piú piccole in
un unico simbolo.
2. ripetere il passo 1 fino ad avere 1 simbolo.
Formalmente:
Codice Cm per p1 ≥ p2 ≥ . . . ≥ pm è definito a partire da
Cm−1 , il codice per p1 , p2 , . . . , p′m−1 , dove p′m−1 = pm−1 + pm :
Cm (i) = Cm−1 (i) , i = 1, ..., m − 2
Cm (m − 1) = Cm−1 (m − 1) · 0
Cm (m) = Cm−1 (m − 1) · 1
– p. 17/29
Ottimalitá dei Codici di Huffman
Per induzione sul numero m di simboli da codificare
Base dell’induzione:
per m = 2 si ha C2 = {0, 1} che è ovviamente ottimo.
– p. 18/29
Passo induttivo:
m
P
L (Cm ) =
pi li ,
i=1
m−1
P
L (Cm−1 ) =
i=1
p′i li′ =
L (Cm ) − L (Cm−1 )
m−2
P
pi li + (pm−1 + pm ) (lm − 1)
i=1
= pm−1 lm−1 + pm lm − pm−1 lm − pm lm + pm−1 + pm
= pm−1 + pm
L (Cm ) − L (Cm−1 ) indipendente da lunghezze del codice
per cui (sapendo che in codice ottimale lm = lm−1 ≥ . . . ≥ l1 )
Cm−1 ottimo ⇒ Cm ottimo.
– p. 19/29
Nota: Pochè i codici di Huffman sono prefissi e ottimali,
allora la lunghezza di un codice di Huffman C ∗ soddisfa
H(X) ≤ L(C ∗ ) < H(X) + 1.
– p. 20/29
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. 21/29
abbiamo così l’albero
– p. 22/29
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. 23/29
In questo caso aggiungiamo un simbolo con probabilità
zero:
– p. 24/29
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.
– p. 25/29
Gioco delle 20 domande
GIOCO: individuare un oggetto x in un insieme A con
domande del tipo ”x ∈ B ”, B ⊆ A; Risposte: YES/NO
SCOPO: Minimizzare numero di domande
DOMANDE ⇔ CODICE
– DOMANDE ⇒ Sequenze risposte ≡ Codifica bin. oggetti
– CODICE ⇒ i–ma domanda: "E’ bit i–mo=1?”
Sia X = v.c. che rappresenta oggetti
Usando codifica ottimale per X
H(X) ≤ numero atteso domande < H(X) + 1
– p. 26/29
Gioco delle 20 domande
X=
0 1 2 3 4 5 1
4
1
4
1
8
1
8
1
8
1
8
{0, 1, 2, 3, 4, 5}
I bit é 1?
NO
C(0) = 00
C(1) = 01
C(2) = 100
C(3) = 101
C(4) = 110
C(5) = 111
SI
{0, 1}
II bit é 1?
0
1
{2, 3, 4, 5}
II bit é 1?
{2, 3}
III bit é 1?
3
2
Num. atteso domande= H(X) =
{4, 5}
III bit é 1?
4
5
15
8
– p. 27/29
Esercizi
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. 28/29
Esercizi
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 una d.p. per cui
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?
(Sugg. Applicare algoritmo di Huffman)
– p. 29/29