Exercice 2. (Arbres, codes pr´efixes et longueur de mots)
Soit A:={a1,...,ak}un alphabet de taille k. On consid`
ere une suite de nombres entiers positifs
s:=(s1,s2,...,sn)
telle que
n
X
i=1
si
ki≤1.(1)
On souhaite montrer de mani`
ere constructive que si la suite sv´
erifie (1), alors on peut construire un code pr´
efixe Cs
sur l’alphabet Aqui contient exactement simots de longueur i.
1. Montrer que c’est possible si pour tout i∈[n], on a si≤k−1.
2. Soit sune suite qui v´
erifie (1) et telle qu’il existe r∈[n] tel que sr≥k. On d´
efinit Θr(s) comme la suite v´
erifiant
Θr(s)i:=
sr−ksi i=r,
sr−1+1 si i=r−1,
sisinon,
pour tout i∈[n]. Montrer que la suite Θr(s) v´
erifie (1).
3. Soit sune suite qui v´
erifie (1) et telle qu’il existe r∈[n] tel que sr≥k. En supposant que l’on dispose d’un
code pr´
efixe CΘr(s), d´
eterminer un moyen de construire Cs.
4. En d´
eduire un algorithme qui, ´
etant donn´
ee une suite sv´
erifiant (1) construit un code pr´
efixe sur Aavec
exactement simots de longueur i.
Exercice 3. (Algorithme de Varn)
L’algorithme de Varn consiste, sur l’entr´
ee d’un alphabet A:={a1,...,ak}, d’une fonction de co ˆ
ut c:A→N\ {0}
et d’un entier nde la forme n=`(k−1) +1 o `
u`est un entier strictement positif, `
a construire un code pr´
efixe de
cardinal nsur l’alphabet A.
Cet algorithme construit un arbre Td’arit´
ekde la mani`
ere suivante :
(1) l’arbre Test initialis´
e en une racine ´
etiquet´
ee par 0 ;
(2) Pour iallant de 1 `
a`:
(a) soit xune feuille de Tavec une plus petite ´
etiquette ;
(b) pour chaque lettre aide A, construire un nœud ´
etiquet´
e par l’´
etiquette de xplus c(ai) et attacher ce nœud
`
axpar une arˆ
ete ´
etiquet´
ee par ai.
1. Expliquer comment, `
a partir d’un arbre Tproduit par l’algorithme de Varn, on obtient un code pr´
efixe XTde
cardinal nsur A.
2. Un code pr´
efixe Xest maximal si pour tout code pr´
efixe Ytel que X⊆Y⊆A∗, on a X=Y. Montrer que tout
code obtenu par l’algorithme de Varn est un code pr´
efixe maximal.
3. Construire un code pr´
efixe de cardinal 7 sur l’alphabet A:={a,b,c,d}o`
u l’on a c(a) :=1, c(b) :=2, c(c) :=3 et
c(d) :=4 en appliquant l’algorithme de Varn.
4. Construire un code pr´
efixe de cardinal 7 sur l’alphabet A:={a,b,c}o`
u l’on a c(a) :=2, c(b) :=4 et c(c) :=5 en
appliquant l’algorithme de Varn.
5. Construire un code pr´
efixe de cardinal 13 sur l’alphabet A:={a,b,c}o`
u l’on a c(a) :=1, c(b) :=3 et c(c) :=4
en appliquant l’algorithme de Varn.
6. Reformuler en d´
etail la description de l’algorithme de Varn en explicitant les structures de donn´
ees utilis´
ees.
´
Evaluer sa complexit´
e en espace et en temps en fonction du cardinal ndu code pr´
efixe construit.
7. Le co ˆ
ut c(X) d’un code pr´
efixe Xsur Aest d´
efini par
c(X) :=X
x∈X
c(x1)+· · · +cx|x|.
Calculer les co ˆ
uts des codes construits pr´
ec´
edemment.
8. Un code pr´
efixe Xde cardinal nsur Aest optimal s’il minimise c(X). D´
emontrer que tout code construit par
l’algorithme de Varn est optimal parmi les codes maximaux.
2