Alcune osservazioni sulla disuguaglianza di Kraft

Transcript

Alcune osservazioni sulla disuguaglianza di Kraft
Disuguaglianza di Kraft–McMillan
Appunti scritti da Alberto Leporati
e-mail: [email protected]
Dipartimento di Informatica, Sistemistica e Comunicazione (DISCo)
Università degli Studi di Milano — Bicocca
Via Bicocca degli Arcimboldi 8, 20126 Milano
Sul libro di testo [1] vengono enunciati i due teoremi seguenti.
Teorema 1 (Disuguaglianza di Kraft). Sia S una sorgente avente q simboli.
Condizione necessaria e sufficiente affinché esista un codice istantaneo r-ario
avente codeword di lunghezza ℓ1 , ℓ2 , . . . , ℓq è che valga:
q
X
1
≤1
r ℓi
i=1
Teorema 2 (Disuguaglianza di McMillan). Sia S una sorgente avente q simboli. Condizione necessaria e sufficiente affinché esista un codice univocamente
decodificabile r-ario avente codeword di lunghezza ℓ1 , ℓ2 , . . . , ℓq è che valga:
q
X
1
≤1
r ℓi
(1)
i=1
L’interpretazione che sembra scaturire dalla lettura del libro di testo è che la
condizione (1) caratterizza sia i codici istantanei che quelli univocamente decodificabili; detto in altre parole, il primo teorema sembrerebbe dire che un codice
avente codeword di lunghezza ℓ1 , ℓ2 , . . . , ℓq è istantaneo se e solo se vale la (1),
mentre il secondo teorema sembrerebbe dire che un codice avente codeword di
lunghezza ℓ1 , ℓ2 , . . . , ℓq è univocamente decodificabile se e solo se vale la (1).
Poiché esistono codici che sono univocamente decodificabili ma non istantanei,
questa interpretazione lascia sicuramente perplessi. Inoltre, se consideriamo il
seguente codice, con q = 4 e r = 2:
s1 7→ 0,
s2 7→ 01,
s3 7→ 011,
1
s4 7→ 111
si può facilmente verificare che il codice è univocamente decodificabile ma non
istantaneo; la regola da seguire per la decodifica è la seguente: ogni volta che
si legge uno 0 si memorizzano (oppure si contano) gli 1 che lo seguono, e si
decodifica a partire dal fondo della stringa letta. Le lunghezze delle codeword
sono 1, 2, 3, 3 e vale:
1
1
1
K = + 2 +2· 3 =1≤1
2 2
2
Quindi, l’interpretazione data è sicuramente falsa per i codici istantanei.
In realtà, l’interpretazione corretta dei due teoremi enunciati è che la condizione (1) caratterizza l’esistenza sia dei codici istantanei che di quelli univocamente decodificabili (e non l’insieme dei codici istantanei e/o l’insieme dei codici
univocamente decodificabili).
Inoltre, sul libro di testo viene mostrata solo metà della dimostrazione del
primo teorema, ovvero:
per ogni codice istantaneo vale K ≤ 1
ragionando sugli alberi di decodifica, che abbiamo visto essere in corrispondenza
biunivoca con i codici istantanei. Manca quindi la dimostrazione della seguente
proposizione, che sviluppiamo qui di seguito.
P
Proposizione 1. Se K = qi=1 r1ℓi ≤ 1 allora esiste un codice istantaneo r-ario
avente codeword di lunghezza ℓ1 , ℓ2 , . . . , ℓq .
P
Dimostrazione. Supponiamo che valga qi=1 r1ℓi ≤ 1, e sia ℓ = max{ℓ1 , ℓ2 , . . . , ℓq }
la lunghezza della codeword più lunga. Per ogni j ∈ {1, 2, . . . , ℓ}, indichiamo con
tj il numero di codeword di lunghezza j. Allora la disuguaglianza può essere
scritta come:
ℓ
X
1
ti i ≤ 1
r
i=1
Moltiplicando entrambi i membri per r ℓ e risistemando i termini otteniamo:
tℓ ≤ r ℓ − t1 r ℓ−1 − t2 r ℓ−2 − . . . − tℓ−1 r
Dato che tℓ ≥ 0, otteniamo:
0 ≤ r ℓ − t1 r ℓ−1 − t2 r ℓ−2 − . . . − tℓ−1 r
Dividendo per r e risistemando i termini otteniamo:
tℓ−1 ≤ r ℓ−1 − t1 r ℓ−2 − t2 r ℓ−3 − . . . − tℓ−2 r
Continuando allo stesso modo, usando ti ≥ 0, otteniamo:
tℓ−2 ≤ r ℓ−2 − t1 r ℓ−3 − t2 r ℓ−4 − . . . − tℓ−3 r
·········
t2 ≤ r 2 − t1 r
t1 ≤ r
2
Di tali disuguaglianze, l’ultima è ovviamente necessariamente vera, mentre le
altre non sono cosı̀ ovvie.
Costruiamo ora una funzione di codifica f : S → Γ∗ iniziando dalle lunghezze
più corte. Si scelgano anzitutto t1 codeword di lunghezza 1, e si definisca f in
modo che assegni tali codeword a t1 simboli qualsiasi di S. Rimangono r − t1
parole di lunghezza 1 non assegnate, e quindi possiamo formare (r − t1 )r parole
di lunghezza 2 i cui primi caratteri sono diversi da quelli usati per formare le
codeword di lunghezza 1. Questo fatto ci assicura che il codice costruito finora
è istantaneo. Tuttavia dobbiamo formare solo t2 codeword di lunghezza 2 (e
definire f in modo che assegni t2 simboli di S a tali codeword). Le disuguaglianze
di cui sopra ci assicurano che ciò è possibile, dato che:
t2 ≤ r 2 − t1 r
Rimangono (r − t1 )r − t2 codeword di lunghezza 2 non assegnate, e tali che il
primo carattere non codifica alcun simbolo. Quindi ci sono ((r − t1 )r − t2 )r
codeword di lunghezza 3 in cui sia il primo carattere che la prefissa di lunghezza
2 non sono la codifica di alcun simbolo. Ne scegliamo t3 in maniera arbitraria.
Dalla disuguaglianza:
t3 ≤ r 3 − t1 r 2 − t2 r
di cui sopra vediamo che ciò è possibile. Continuando in questo modo riusciamo
a costruire il codice f .
Abbiamo quindi dimostrato il primo teorema. Per quanto riguarda il secondo teorema (disuguaglianza di McMillan) valgono le osservazioni fatte sul libro
di testo. In particolare, la proposizione appena dimostrata implica il seguente
corollario.
Corollario 1. Se K ≤ 1 allora esiste un codice univocamente decodificabile r-ario
avente codeword di lunghezza ℓ1 , ℓ2 , . . . , ℓq .
Dimostrazione. Procedendo come nella dimostrazione della Proposizione 1, a partire dalla disuguaglianza K ≤ 1 si costruisce un codice istantaneo r–ario avente
codeword di lunghezza ℓ1 , ℓ2 , . . . , ℓq . Tale codice è univocamente decodificabile.
Infine, sul libro di testo viene dimostrata la proposizione:
per ogni codice univocamente decodificabile vale K ≤ 1
che completa la dimostrazione del Teorema 2.
La conclusione importante di questo discorso è che non vale la pena di lavorare
con codici univocamente decodificabili, per cui K ≤ 1, che non siano istantanei.
Ad esempio, un codice istantaneo binario per la sorgente di 4 simboli considerata
sopra, avente codeword di lunghezza 1, 2, 3, 3, è il seguente comma code:
s1 7→ 0,
s2 7→ 10,
s3 7→ 110,
3
s4 7→ 111
Quindi, per il Teorema 2 vale K ≤ 1 per il codice univocamente decodificabile
(ma non istantaneo) considerato sopra, mentre per il Teorema 1 esiste un codice
istantaneo che ha le stesse lunghezze di codeword (anche se il teorema non ci dice
come costruirlo).
Riferimenti bibliografici
[1] R. H. Hamming. Coding and Information Theory. Second Edition. Prentice
Hall, Englewood Cliffs, 1986.
4