de mod´eliser la base de donn´ees comme une source stationnaire sans m´emoire existent-
elles ? Si oui, donnez un exemple, sinon, justifiez.
2. ´
Ecrivez une fonction result = allsymb(node sizes), qui, `a partir du vecteur
comportant la cardinalit´e de chaque variable, va g´en´erer dans une matrice ligne de
taille N tous les Nsymboles possibles selon la technique d’encodage utilis´ee pour la
base de donn´ees fournie, ordonn´es par ordre croissant.
Exemple : allsymb([2 3]) renvoie !11 12 13 21 22 23 ".
3. Ecrivez une fonction result = proba(symb,margT), qui, `a partir de symb, un vecteur
ligne de longueur Ncontenant des symboles ´emis par la source d´ecrite au point 1 [et
encod´e comme donnees], et de margT , une distribution de probabilit´e conjointe sur
les variables correspondantes, renvoie un vecteur de taille Ncontenant `a l’emplacement
ila probabilit´e du symbole symb[i], donn´ee par le r´eseau bay´esien ayant g´en´er´e margT .
Note : Vous pouvez supposer que la cardinalit´e de chaque variable ne d´epasse pas 9.
4. On supposera que chaque symbole de la source d´ecrite dans la question 1 est `a l’origine
cod´e dans un alphabet comportant 10 caract`eres : les 10 chiffres arabes. Quelle est la
longueur de chaque symbole ´emis par la source ? Ce code v´erifie-t-il l’in´egalit´e de Kraft ?
Est-il complet ? Quelle serait la longueur moyenne optimale d’un symbole ?
5. ´
Ecrivez une fonction result = code1(donnees), qui encode la base de donn´ees en
associant `a chaque symbole un nombre naturel. Les naturels sont affect´es aux symboles
par ordre croissant, `a partir de 1.
Exemple : code1(!13 12 11 21 23 22 ")renvoie !321465".
6. Calculez le taux de compression ainsi obtenu sur la base de donn´ees consid´er´ee ici,
sachant que l’alphabet est identique. Quelle est l’esp´erance de la longueur d’un symbole
´emis par la source, en utilisant l’encodage de code1 ?
7. Ce code v´erifie-t-il l’in´egalit´e de Kraft ? Est-il d´echiffrable, complet, r´egulier, instantan´e,
sans pr´efixe, absolument optimal ?
8. Ecrivez une fonction result = Huffcode(proba), qui re¸coit en entr´ee un vecteur de
longueur Ncontenant les probabilit´es des diff´erents symboles, et qui renvoie en sortie
un vecteur contenant le codage (de Huffman) des symboles, dans un alphabet binaire.
Exemple : Huffcode(!0.25 0.50.25 ")renvoie !10 0 11 ".
9. Calculez l’esp´erance du taux de compression obtenu par un codage de Huffman binaire
appliqu´e au mod`ele de base de donn´ees m´edicales, par rapport `a chacun des deux codes
pr´ec´edents. Quelle est l’esp´erance de la longueur d’un symbole ´emis par la source, en
utilisant un code de Huffman binaire ?
10. Quelle est la longueur moyenne optimale d’un symbole ? Comparez cette valeur par
rapport `a celle trouv´ee `a la question 4 et commentez.
11. Ce code v´erifie-t-il l’in´egalit´e de Kraft ? Est-il d´echiffrable, complet, r´egulier, instantan´e,
sans pr´efixe, absolument optimal ?
12. Ecrivez une fonction result = code2(donnees,old symb,new symb), qui encode la
base de donn´ees en rempla¸cant chaque ancien symbole (dont la liste est contenue dans
le vecteur old symb) par le nouveau symbole correspondant (contenu dans le vecteur
new symb). Cette fonction peut-elle traiter les codes non instantan´es ? Et les codes
incomplets ?
13. Encodez la base de donn´ees selon le code de Huffman obtenu. Quelle est la longueur
moyenne par symbole ainsi obtenue ? Comment expliquez-vous ce r´esultat, par rapport
`a celui obtenu `a la question 9 ?
14. Quelles tailles d’alphabet peuvent ˆetre utilis´ees pour cr´eer un code complet pour cette
source ?
2