Th´eorie de l’information et du codage
Travail : Deuxi`eme partie
A rendre pour le 4 novembre
Objectif
L’objectif de cette derni`ere partie du travail est de vous familiariser avec le codage de
source. Diverses notions th´eoriques seront illustr´ees et mises en pratique grˆace `a un cas
concret. Leur bonne compr´ehension sera n´ecessaire `a la r´ealisation du travail.
Celui-ci portera sur di´erentes techniques de compression (sans perte) d’une base de
donn´ees m´edicales contenant des informations sur des patients atteints de pathologie du foie.
Informations pratiques
Le script codage partie2 initialise trois variables :
node sizes : un vecteur comportant la cardinalit´e des 4 variables al´eatoires sexe,trigly,
AST et anti myth.
donnees, une base de donn´ees de 500 patients. Chaque patient est caract´eris´e par
quatre informations : sexe,trigly,AST et anti myth. Chaque enregistrement de cette
base de donn´ees est un nombre de 4 chires, tel quel que chaque chire [de gauche
`a droite] correspond `a la valeur de la variable correspondante [dans l’ordre d´ecrit ci-
dessus].
margT : une table contenant les valeurs associ´ees `a la distribution de probabilit´e
conjointe P(sexe, trigly, AST, anti myth) ayant g´en´er´e la base de donn´ees. L’ordre des
variables dans l’expression pr´ec´edente correspond `a l’ordre des dimensions de la table
(ainsi qu’`a l’ordre dans la base de donn´ees) :
margT (i, j, k, l) := P(sexe =i, trigly =j, AST =k, anti myth =l).
Vous pourriez trouver int´eressantes les fonctions dec2bin et int2str. En eet, une
mani`ere simple de r´ealiser certaines ´etapes de ce travail consiste `a manipuler des chaˆınes
de caract`eres.
Le rapport, accompagn´e des fichiers .m, est `a renvoyer dans un seul fichier d’archive
par email `a [email protected], avec comme objet ![codage]travail - partie 2 ", pour le
dimanche 4 novembre minuit.
Informations th´eoriques
Cette partie du travail demandera principalement l’application de notions vues dans le
chapitre 8 du cours th´eorique. Il vous est conseill´e de revoir en particulier la d´efinition du
probl`eme du codage de source discr`ete, le premier th´eor`eme de Shanon ainsi que le code de
Human.
Questions
1. On souhaite mod´eliser la base de donn´ees comme un message ´emis par une source
stationnaire sans m´emoire. On consid´erera donc que chaque entr´ee (4 variables)
correspondant `a un patient est un symbole ´emis par la source. D’autres possibilit´es
1
de moeliser 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
encoe 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 baesien 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
coe dans un alphabet comportant 10 caract`eres : les 10 chires 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 aect´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´echirable, complet, r´egulier, instantan´e,
sans pr´efixe, absolument optimal ?
8. Ecrivez une fonction result = Hucode(proba), qui re¸coit en entr´ee un vecteur de
longueur Ncontenant les probabilit´es des di´erents symboles, et qui renvoie en sortie
un vecteur contenant le codage (de Human) des symboles, dans un alphabet binaire.
Exemple : Hucode(!0.25 0.50.25 ")renvoie !10 0 11 ".
9. Calculez l’esp´erance du taux de compression obtenu par un codage de Human 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 Human 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´echirable, 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 Human 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
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !