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