• Aucun résultat trouvé

Examen de théorie de l’information Université Paris-Est Marne-la-Vallée. Master 1 Janvier 2013. Durée 2 heures. Documents autorisés.

N/A
N/A
Protected

Academic year: 2022

Partager "Examen de théorie de l’information Université Paris-Est Marne-la-Vallée. Master 1 Janvier 2013. Durée 2 heures. Documents autorisés."

Copied!
2
0
0

Texte intégral

(1)

Examen de théorie de l’information Université Paris-Est Marne-la-Vallée. Master 1 Janvier 2013. Durée 2 heures. Documents autorisés.

Les exercices sont indépendants.

Exercice 1.— 4 points

a) On considère un motw (qui se termine par$) tel que la transformée de Burrows-Wheeler dew est BWT(w) = AGGGA$CAC. On rappelle que la lettre$ est supposée inférieure à toute autre lettre du mot. Retrouvez le motwet indiquez le calcul effectué pour le retrouver.

b) Trouver un mot qui n’est pas la transformée de Burrows-Wheeler d’un autre mot.

Exercice 2.— 6 points

On considère un codage de convolution de taux de transmission 1 : 2défini de la façon suivante. Chaque bit in est codé par un bloc de deux bits(t(0)n , t(1)n ).

Ces bits sont calculés modulo2 par les formules suivantes t(0)n = in−3+in−2+in−1+in, t(1)n = in−3+ +in.

a) Le codage est-il à fenêtre glissante ? Pourquoi ? Le décodage dans un canal sans bruit est-il à fenêtre glissante ? Pourquoi ?

b) Dessiner le transducteur de codage.

c) Le décodage dans un canal bruité est-il catastrophique ? Pourquoi ? Exercice 3.— 4 points

a) Montrer que l’ensembleX ={b, abb, abbba, bbba, baabb}n’est pas un code.

b) Montrer que l’ensembleY ={abb, abbba, bbba}est un code.

Exercice 4.— 8 points

On considère une alphabet source A pondéré (chaque lettre a ∈ A a un poidsp(a)dansN) et ordonné : on suppose quea < b < c <· · ·. On considère un alphabet B ={0,1} ordonné par 0 < 1. On souhaite coder une séquence source sur l’alphabet Aen une séquence sur l’alphabet B par un codage cqui transforme chaque lettre de Aen un mot de B tel queX ={c(a)|a∈A}est un ensemble préfixe, et tel le codagecsoitordonné: sia < a alorsc(a)< c(a) pour toute lettrea∈A.

Le codage doit permettre de minimise P

a∈A|c(a)| ×p(a), où |c(a)| est la longueur du mot c(a). Il s’agit de la même optimisation que pour le codage de Huffman mais le codage doit être en plus ordonné.

Pour cela, on désire construire un arbre binaire complet où chaque nœud a un poids. Chaque feuille représente un lettreade poidsp(a)et le chemin de la racine à la feuilleareprésente le mot codéc(a). Le poids de la racine est égal à la quantité à optimiser P

a∈A|c(a)|p(a). De plus, la suite des feuilles obtenues en ordre interne (ou infixe) est ordonnée. Un tel arbre est appeléarbre de Huffman ordonné.

Par exemple l’arbre ci-dessous pour la source A = {a, b, c} avec p(a) = p(c) = 1 et p(b) = 4 est un arbre de Huffman ordonné. En effet, la projection des feuilles (l’ordre interne) pour cet arbre est a, b, c.

1

(2)

11

5

a: 1 b: 4 c: 1

a) Montrer que l’algorithme classique de Huffman ne permet pas toujours d’obtenir un arbre de Huffman ordonné.

b) Trouver un algorithme de programmation dynamique permettant de construire un arbre de Huffman ordonné enO(n3)sinest la taille de l’alphabetA.

c) Donner un arbre de Huffman ordonné pour A = {a, b, c, d, e} avec les poids suivants.

a b c d e

poids 25 20 12 10 14

2

Références

Documents relatifs

d) Écrire dans la classe Segment une méthode toString permettant d’afficher les deux points d’un segment. On utilisera la méthode toString de Pixel selon la technique de

pour que le programme lise au clavier une chaîne de caractères puis l’af- fiche en la mettant en majuscule. On trouvera la documentation sur la classe String du packetage java.lang

c) Écrire une classe SegmentTest destinée à tester les classes Segment et Pixel. Elle contiendra une méthode main où on crée un segment s1 avec le premier constructeur et un segment

On définit un classe Polygon qui représente un polygone défini par une suite de points. Les Polygon peuvent avoir un nombre différent de points mais on veut que le nombre maximal

On initialisera le champ author avec &#34;no author&#34; dans ce cas. Comment le compilateur fait-il pour savoir quel constructeur appeler ?. e) Comment faire maintenant pour que

g) Sachant qu’un carnivore à besoin du quart de son poids en viande par semaine, écrire une méthode getMeatForAWeek dans la classe Animal qui renvoit la quantité de viande

— Écrire la méthode void remove(Book b) qui permet de retirer un exemplaire d’un livre. Si le livre apparaît avec un nombre d’exemlaire 0, il sera retiré de la Map.. — Écrire

Ecrire des classes et méthodes pour lire un fichier texte et afficher ensuite un histogramme du texte : la liste des mots présents dans le texte et pour chacun d’eux, leur