J-0
00m
00j
00h
00min
00s

Version interactive avec LaTeX compilé

CCINP Option Informatique MP 2018

Notez ce sujet en cliquant sur l'étoile
0.0(0 votes)
Logo ccinp
2025_08_29_d10610a8fef44263da40g

ÉPREUVE SPÉCIFIQUE - FILIÈRE MP

INFORMATIQUE

Jeudi 3 mai : 14 h - 18 h
N.B. : le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut lui sembler être une erreur d'énoncé, il le signalera sur sa copie et devra poursuivre sa composition en expliquant les raisons des initiatives qu'il a été amené à prendre.

Les calculatrices sont interdites

Le sujet est composé de trois parties, toutes indépendantes.

Partie I - Logique et calcul des propositions

Vous avez été sélectionné(e) pour participer au jeu "Cherchez les Clés du Paradis (CCP)". Le jeu se déroule en trois épreuves, au cours desquelles vous devez collecter des clés vertes. À l'issue de chacune d'entre elles, vous passez à l'épreuve suivante en cas de succès et êtes éliminé(e) en cas d'échec.

I. 1 - Première épreuve

Jean-Pierre Pendule, le célèbre animateur, vous accueille pour la première épreuve. Il vous explique la règle du jeu. Devant vous, deux boîtes et sur chacune d'entre elles une inscription. Chacune des boîtes contient soit une clé verte, soit une clé rouge. Vous devez choisir l'une des boîtes : si le résultat est une clé rouge, alors vous quittez le jeu, si c'est une clé verte vous êtes qualifié(e) pour l'épreuve suivante.
Jean-Pierre Pendule dévoile les inscriptions sur chacune des boîtes et vous affirme qu'elles sont soit vraies toutes les deux, soit fausses toutes les deux :
  • sur la boîte 1, il est écrit : "Une au moins des deux boîtes contient une clé verte" ;
  • sur la boîte 2, il est écrit : "Il y a une clé rouge dans l'autre boîte".
Dans toute cette partie, on note la proposition affirmant qu'il y a une clé verte dans la boîte .
Q1. Donner une formule de la logique des propositions représentant la phrase écrite sur la boîte 1.
Q2. Donner de même une formule de la logique des propositions pour l'inscription de la boîte 2.
Q3. Donner une formule représentant l'affirmation de l'animateur. Simplifier cette formule de sorte à n'obtenir qu'une seule occurrence de chaque .
Q4. Quel choix devez-vous faire pour continuer le jeu à coup sûr?

I. 2 - Deuxième épreuve

Bravo, vous avez obtenu la première clé verte. Jean-Pierre Pendule vous félicite et vous annonce que cette première épreuve n'était qu'une mise en jambe. Avec les mêmes règles du jeu, l'animateur vous propose alors deux nouvelles boîtes portant les inscriptions suivantes :
  • sur la boîte 1, il est écrit : "Il y a une clé rouge dans cette boîte, ou bien il y a une clé verte dans la boîte 2";
  • sur la boîte 2, il est écrit : "Il y a une clé verte dans la boîte 1 ".
Q5. Donner une formule de la logique des propositions pour chaque affirmation.
Q6. Sachant qu'encore une fois les deux affirmations sont soit vraies toutes les deux, soit fausses toutes les deux, donner le contenu de chaque boîte. En déduire votre choix pour remporter la deuxième clé verte.

I. 3 - Troisième épreuve

Le suspens est à son comble, vous voici arrivé(e) à la dernière épreuve. À votre grande surprise, Jean-Pierre Pendule vous dévoile une troisième boîte et vous explique les règles du jeu. Dans une des boîtes se cache la clé verte qui vous permet de remporter la victoire finale. Dans une autre boîte se cache une clé rouge qui vous fait tout perdre. La dernière boîte est vide. Encore une fois, chacune des boîtes porte une inscription :
  • sur la boîte 1, il est écrit : "La boîte 3 est vide" ;
  • sur la boîte 2, il est écrit : "La clé rouge est dans la boîte 1" ;
    — sur la boîte 3, il est écrit : "Cette boîte est vide".
    L'animateur affirme que l'inscription portée sur la boîte contenant la clé verte est vraie, celle portée par la boîte contenant la clé rouge est fausse. L'inscription affichée sur la boîte vide est aussi vraie.
Q7. Donner une formule de logique des propositions pour chaque inscription.
Q8. Donner une formule de logique des propositions synthétisant l'information que vous a apportée l'animateur.
Q9. En supposant que la clé verte est dans la boîte 2, montrer par l'absurde que l'on aboutit à une incohérence.
Q10. Donner alors la composition des trois boîtes.

Partie II - Automates

Un langage est régulier si et seulement si il est accepté par un automate fini (en particulier déterministe). Cependant, plusieurs automates peuvent accepter le même langage. L'objectif de cette partie est de montrer que tout langage reconnaissable est reconnu par un unique (au renommage près des états) automate déterministe, tel que tout automate déterministe reconnaissant a au moins autant d'états que lui. Cet unique automate est appelé automate minimal reconnaissant .

II. 1 - Définitions

Définition 1. Automate déterministe
Un automate déterministe est un quintuplet , avec :
  • un ensemble d'états,
    un alphabet,
  • l'état initial,
  • un ensemble d'états finaux,
  • une application de transition définie sur tout entier.
Définition 2. Soit un alphabet. est l'ensemble des mots construits à partir de le mot vide et le nombre d'occurrences de la lettre dans le mot .
Définition 3. Résiduel d'un langage par rapport à un mot
Soient un alphabet, un langage et . Le résiduel à gauche de par rapport à est le langage :
Q11. Pour , donner le résiduel de par rapport à .
Définissons alors une relation sur , dite congruence de Nerode, de la manière suivante : pour tous :
Q12. Montrer que est une relation d'équivalence et que : .
Q13. Posons le langage basé sur , composé des mots de ayant un nombre de multiple de 3 . Pour chacun des cas suivants, déterminer si les deux mots sont équivalents par :
(i). et ,
(ii). et ,
(iii). abbaba et aaa.
Définition 4. Soit un automate déterministe. La fonction de transition étendue aux mots est définie de manière récursive par :
,
  • .
Définition 5. Soit un automate déterministe. Pour et , on note :
est donc l'ensemble des mots qui correspondent à des chemins débutant en et aboutissant dans un état de .
Une relation d'équivalence est également définie sur par :
Si est un automate déterministe acceptant un langage et si et sont tels que alors on peut montrer que . Ainsi, la congruence de Nerode peut être utilisée pour définir un automate particulier, appelé automate minimal de .
Définition 6. Automate minimal
Soit un langage. L'automate minimal de est défini par le quintuplet , avec:
  • ,
  • ,
  • ,
    .
    On admettra qu'un automate minimal définit bien un automate.
    Q14. Montrer que l'automate minimal d'un langage régulier est un automate fini, c'est-à-dire un automate possédant un nombre fini d'états.
Définition 7. Automate accessible
Un automate déterministe est accessible si pour tout , il existe , tel que .
Définition 8. Automate réduit
Un automate déterministe est réduit si pour tous . est donc réduit si les langages acceptés depuis deux états distincts sont distincts, ou encore si chaque classe d'équivalence pour la relation sur est un singleton.
Pour , il est possible de montrer que l'automate minimal de est accessible et réduit. Le paragraphe suivant s'intéresse à la construction de l'automate minimal d'un automate donné, exploitant cette propriété.

II. 2 - Construction de l'automate minimal

Soit un automate déterministe acceptant le langage . Trouver l'automate minimal de revient à trouver un automate fini déterministe accessible et réduit équivalent. Pour trouver un automate accessible, il suffit par exemple de visiter les états qui peuvent être atteints par depuis et d'éliminer les autres états. Il reste donc à trouver une méthode pour rendre réduit. Par définition de la relation sur est réduit si pour tout couple , avec .
En particulier, s'il existe , tel que et ou et . On dit alors que distingue et ou que le couple ( ) est distingué par .
L'algorithme 1 est un algorithme de réduction d'un automate utilisant ces notions. Dans la suite, désigne l'ensemble des couples d'états de qui sont distingués par un mot de longueur et qui ne sont distingués par aucun autre mot plus court.
Algorithme 1: Algorithme de recherche des états équivalents
Entrée : un automate déterministe $A=\left(Q, \Sigma, q_{0}, F, \delta\right)$
Sortie : les ensembles d'états équivalents
$k \leftarrow 0$
************ Initialisation ************
$N_{0} \leftarrow \emptyset$
pour tous $p \in F$ et $q \in Q \backslash F$ faire
    ***La paire (p,q) est distinguée.***
    $N_{0} \leftarrow N_{0} \cup\{(p, q)\}$
tant que $N_{k} \neq \emptyset$ faire
    ****Construction de $N_{k+1}{ }^{* * * *}$
    $N_{k+1} \leftarrow \emptyset$
    pour chaque paire $(p, q) \in N_{k}$ faire
        pour chaque a $\in \Sigma$ faire
            pour chaque $(r, s) \in Q^{2}$ tel que $\delta(r, a)=p, \delta(s, a)=q$ faire
                si $(r, s) \notin \bigcup_{i=0}^{k} N_{i}$ alors
                    i
                    $N_{k+1} \leftarrow N_{k+1} \cup\{(r, s),(s, r)\}$
    $k \leftarrow k+1$
Q15. Montrer pourquoi, dans la phase d'initialisation, la paire ( ) est distinguée.
Q16. Montrer pourquoi, si alors .
Soit alors l'automate déterministe suivant :



2 4 6 5 1 6
1 3 2 1 6 2
représente donc l'état atteint à partir de l'état lorsque le symbole est présenté.
Q17. Représenter graphiquement l'automate . La représentation suivra les contraintes suivantes :
  • les états sont des cercles, le nom de l'état est écrit à l'intérieur du cercle ;
  • les transitions sont représentées par des flèches partant de l'état de départ et pointant sur l'état d'arrivée. Le symbole définissant la transition est indiqué au milieu de la flèche ;
  • l'état initial est signalé par une flèche sans étiquette pointant sur cet état;
  • les états finaux sont entourés d'un deuxième cercle, externe au premier.
Q18. Appliquer l'algorithme 1 pour trouver l'ensemble des états équivalents. Pour chaque itération , la trace de l'algorithme sera donnée par une matrice carrée de taille , avec longueur d'un chemin, s'il existe, qui distingue le couple vide sinon). En déduire les classes d'équivalence des états de .
Un théorème, non détaillé ici, permet alors de projeter sur et de préciser états et transitions de cet automate minimal. Il permet en particulier de définir les états de comme étant les classes d'équivalence issues de l'algorithme précédent. Il permet également d'affirmer que si un état de correspond à une classe d'équivalence pour la relation , alors la lecture d'un symbole depuis cet état dans conduit à l'état correspondant à la classe .
Q19. Représenter graphiquement l'automate minimal de la question précédente, avec ses états et ses transitions.

Partie III - Algorithmique et programmation

Nous proposons dans cette partie d'étudier une méthode de compression de données. L'algorithme proposé ici implémente plusieurs couches d'arrangement de données et de compression successives, utilisées dans l'ordre suivant pour la compression et l'ordre inverse pour la décompression :
(i). Transformation de Burrows-Wheeler (BWT),
(ii). Codage par plages (RLE),
(iii). Codage de Huffman.
Définition 9. Soit un alphabet de symboles, de cardinal . On munit d'une relation d'ordre . est l'ensemble des mots de longueur construits à partir de est muni d'une relation d'ordre lexicographique induite par la relation d'ordre .
Pour , on note la taille de et le nombre d'occurrences de dans .
Dans toute cette partie, lorsqu'il s' agira de coder une fonction CAML, un mot sera représenté par une liste de caractères en CAML (char list).
Les paragraphes suivants étudient les algorithmes et propriétés de ces phases, chacun d'entre eux pouvant être abordé de manière indépendante.

III. 1 - Transformation de Burrows-Wheeler (BWT)

Soit un mot. La transformation BWT réalise une permutation des symboles de de sorte que les symboles identiques sont regroupés dans de longues séquences. Cette transformation n'effectue pas de compression, mais prépare donc à une compression plus efficace.
Dans la suite, nous étudions le codage et le décodage d'un mot transformé par cette opération.

- Phase de codage -

On rajoute à la fin de un marqueur de fin (par convention noté |, inférieur par à tous les autres symboles de ). Dans toute la suite désigne le mot auquel on a ajouté le symbole .
Q20. Pour turlututu, construire une matrice dont les lignes sont les différentes permutations circulaires successives du mot . Les permutations seront ici envisagées par décalage à droite des caractères.
Q21. Écrire une fonction récursive CAML circulaire : 'a list -> 'a list qui réalise une permutation à droite d'un mot donné en entrée.
Q22. Écrire une fonction CAML matrice_mot : 'a list -> 'a list list qui construit la matrice à partir d'un mot passé en entrée. La valeur de retour est une liste de liste de symboles (une liste de mots). Cette fonction utilisera la fonction circulaire : 'a list -> 'a list.
Une permutation des lignes de est alors effectuée, de sorte à classer les lignes par ordre lexicographique. On note la matrice obtenue, étant la matrice de permutation.
Q23. Donner les matrices et dans le cas du mot , pour turlututu.
Pour construire la matrice de permutation , il faut trier la liste des mots définissant . La méthode de tri choisie ici est le tri par insertion.
Q24. Écrire une fonction récursive CAML tri : 'a list -> 'a list qui réalise le tri par insertion d'une liste d'éléments.
Q25. En déduire une fonction matrice_mot_triee : 'a list -> 'a list list qui construit à partir de .
Q26. Pour , donner le nombre de comparaisons de symboles nécessaires au pire des cas, pour trier deux permutations circulaires du mot .
Q27. En déduire la complexité dans le pire des cas pour le tri des permutations circulaires d'un mot (exprimée en nombre de comparaisons de symboles).
La transformation BWT consiste alors à coder le mot par la dernière colonne de la matrice obtenue à l'aide de . On note ce codage.
Q28. Écrire alors une fonction codageBWT : char list -> char list qui encode un mot passé en entrée. On utilisera une fonction récursive permettant de récupérer le dernier symbole de chacun des mots de . Donner le codage du mot turlututu.

- Phase de décodage -

Pour décoder un mot codé par BWT, il est nécessaire de reconstruire itérativement à partir de la seule donnée du mot codé . Par construction, est la dernière colonne de .
On pose ici comme exemple edngvnea|.
Q29. Construire, à partir de la seule donnée de , la première colonne de . Justifier le principe de construction.
La dernière et la première colonne de donnent alors tous les sous-mots de longueur 2 du mot .
Q30. Proposer un algorithme permettant d'obtenir la deuxième colonne de . Donner cette deuxième colonne pour edngvnea .
Q31. On dispose à l'itération des ( ) premières colonnes de et de sa dernière colonne. Proposer un principe algorithmique permettant de construire la -ème colonne de .
Q32. En déduire un algorithme itératif permettant de reconstruire .
Q33. Quel décodage obtient-on pour le mot proposé ?

III. 2 - Codage par plages RLE [Informatique pour tous]

Le codage RLE (Run Length Coding), ou codage par plages, est une méthode de compression dont le principe est de remplacer dans une chaîne de symboles une sous-chaîne de symboles identiques par le
couple constitué du nombre de symboles identiques et du symbole lui-même.Par exemple,la chaîne "aaababb"est compressée en[(3,'a'),(1,'b'),(1,'a'),(2,'b')].
Q34.Proposer un type naturel Python pour la compression RLE,qui permet de représenter le résultat comme indiqué précédemment.

-Phase de codage-

On s'intéresse tout d'abord au codage RLE d'un mot.
Q35.Écrire une fonction itérative en Python def RLE(mot):qui code un mot passé en entrée par codage RLE.

-Phase de décodage-

On s'intéresse maintenant au décodage d'une liste.
Q36.Écrire une fonction itérative en Python def decodeRLE(codeRLE):qui décode une listecodeRLE issue du codage RLE d'un mot.

III. 3 -Codage de Huffman[Informatique pour tous]

La dernière étape de l'algorithme proposé implémente le codage de Huffman,qui utilise la structure d'arbre binaire.Le principe est de coder un symbole de manière d'autant plus courte que son nombre d'occurrences dans le mot est élevé.L'arbre de Huffman se construit à l'aide de l'algorithme 2.
Algorithme 2: Codage de Huffman
Entrée : $\mu$ un mot de taille $|\mu|$
Sortie : $\operatorname{Huffman}(\mu)$ le codage de Huffman de $\mu$
pour $a \in \Sigma$ faire
    si $|\mu|_{a}>0$ alors
        créer un noeud $\left(a,|\mu|_{a}\right)$
$\mathcal{L} \leftarrow$ liste des noeuds dans l'ordre croissant des poids
$\mathcal{A} \leftarrow$ liste vide
tant que $($ longueur $(\mathcal{L})+$ longueur $(\mathcal{A})>1)$ faire
    $(g, d) \leftarrow$ deux noeuds de plus faible poids parmi les 2 premiers noeuds de $\mathcal{L}$ et les 2 premiers
    noeuds de $\mathcal{A}$
    Créer un noeud $t$
    $n_{t} \leftarrow n_{g}+n_{d}$
    gauche $(t) \leftarrow g$
    Coder la branche de $t$ à $g$ par 0
    droite $(t) \leftarrow d$
    Coder la branche de $t$ à $d$ par 1
    Insérer $t$ à la fin de $\mathcal{A}$
    Retirer $g$ et $d$ de $\mathcal{L}$ ou de $\mathcal{A}$
$\underline{\operatorname{Huffman}}(\mu) \leftarrow \mathcal{A}$
Q37.Construire le codage de Huffman du mot "turlututu"en utilisant l'algorithme 2.Vous expliciterez par des dessins d'arbres chacune des étapes de construction de
Q38.Quelle est la forme de l'arbre de Huffman dans un mot où tous les symboles ont le même nombre d'occurrences ?

FIN

CCINP Option Informatique MP 2018 - Version Web LaTeX | WikiPrépa | WikiPrépa