CCINP Option Informatique MP 2018Sujet et corrigé
- Logique des propositions
- Automates finis déterministes et langages réguliers
- Relations d'équivalence
- Tri par insertion et complexité algorithmique
- Programmation récursive (OCaml)
- Programmation itérative (Python)
- Structures d'arbre binaire
- Compression de données (BWT, RLE, Huffman)
Téléchargements
- Rapport du jury : non disponible
Présentation du sujet
Logique des propositions, automates minimaux et compression de données (BWT, RLE, Huffman)Afficher ou masquer la section
Présentation du sujet
Le sujet comprend trois parties indépendantes. La partie I résout, par la logique des propositions, une série d'énigmes de boîtes à clés inspirées d'un jeu télévisé. La partie II étudie la construction de l'automate minimal reconnaissant un langage régulier, via la congruence de Nerode et un algorithme de recherche des états équivalents. La partie III programme, en OCaml et en Python, une chaîne de compression de données combinant la transformation de Burrows-Wheeler, le codage par plages RLE et le codage de Huffman.
- 1Partie I : logique et calcul des propositionsRésolution de trois énigmes de boîtes contenant des clés, à l'aide de formules de logique des propositions et de raisonnements par l'absurde.
- 2Partie II : automatesÉtude de la congruence de Nerode et de l'automate minimal d'un langage régulier, puis application de l'algorithme de recherche des états équivalents à un automate déterministe donné.
- 3Partie III : algorithmique et programmationCodage et décodage de la transformation de Burrows-Wheeler par construction matricielle et tri par insertion, codage par plages RLE, puis construction d'un arbre de codage de Huffman.
L'épreuve en chiffres
Moyenne 10,43 / 20Afficher ou masquer la section
L'épreuve en chiffres
- Moyenne
- 10,43/ 20
Source : document officiel du concours. Notes publiées par le concours (après harmonisation le cas échéant). Courbe : estimation par une loi normale.
Ces sujets peuvent vous intéresser
Lecture du sujet en ligne
L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.Afficher ou masquer la section
Lecture du sujet en ligne
ÉPREUVE SPÉCIFIQUE - FILIÈRE MP
INFORMATIQUE
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
Partie I - Logique et calcul des propositions
I. 1 - Première épreuve
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".
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
- 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 ".
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
- 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.
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
II. 1 - Définitions
Un automate déterministe
-
Q un ensemble d'états,
− Σ un alphabet, -
q_0 l'état initial, -
F ⊆ Q un ensemble d'états finaux, -
δ : Q × Σ → Q une application de transition définie surQ × Σ tout entier.
Soient
Définissons alors une relation
Q13. Posons
(i).
(ii).
(iii). abbaba et aaa.
-
∀a ∈ Σ, ∀m ∈ Σ^∗, ∀q ∈ Q δ^∗(q, m.a) = δ(δ^∗(q, m), a) .
Une relation d'équivalence
Soit
-
Q_L = {u^(− 1)L, u ∈ Σ^∗} , -
q_(L_0) = Λ^(− 1)L = L , -
F_L = {u^(− 1)L, u ∈ L} = {q ∈ Q_L, Λ ∈ q} ,
− ∀q ∈ Q_L, ∀a ∈ Σ δ_L(q, a) = a^(− 1)q .
On admettra qu'un automate minimal définit bien un automate.
Q14. Montrer que l'automate minimal d'un langage régulierL ⊆ Σ^∗ est un automate fini, c'est-à-dire un automate possédant un nombre fini d'états.
Un automate déterministe
Un automate déterministe
II. 2 - Construction de l'automate minimal
L'algorithme 1 est un algorithme de réduction d'un automate
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$
Q16. Montrer pourquoi, si
Soit alors
|
|
|
|
|
|
|
|
|
|
2 | 4 | 6 | 5 | 1 | 6 |
|
|
1 | 3 | 2 | 1 | 6 | 2 |
Q17. Représenter graphiquement l'automate
- 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.
Q19. Représenter graphiquement l'automate minimal de la question précédente, avec ses états et ses transitions.
Partie III - Algorithmique et programmation
(i). Transformation de Burrows-Wheeler (BWT),
(ii). Codage par plages (RLE),
(iii). Codage de Huffman.
Pour
Dans toute cette partie, lorsqu'il s' agira de coder une fonction CAML, un mot
III. 1 - Transformation de Burrows-Wheeler (BWT)
Dans la suite, nous étudions le codage et le décodage d'un mot transformé par cette opération.
- Phase de codage -
Q21. Écrire une fonction récursive CAML circulaire : 'a list -> 'a list qui réalise une permutation à droite d'un mot
Q22. Écrire une fonction CAML matrice_mot : 'a list -> 'a list list qui construit la matrice
Une permutation des lignes de
Q23. Donner les matrices
Pour construire la matrice de permutation
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
Q26. Pour
Q27. En déduire la complexité dans le pire des cas pour le tri des
La transformation BWT consiste alors à coder le mot
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
- Phase de décodage -
On pose ici comme exemple
Q29. Construire, à partir de la seule donnée de
La dernière et la première colonne de
Q30. Proposer un algorithme permettant d'obtenir la deuxième colonne de
Q31. On dispose à l'itération
Q32. En déduire un algorithme itératif permettant de reconstruire
Q33. Quel décodage obtient-on pour le mot
III. 2 - Codage par plages RLE [Informatique pour tous]
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-
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-
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]
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}$
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
Questions fréquentes
3 questionsSur quels chapitres porte l'épreuve d'informatique option info CCINP MP 2018 ?Afficher ou masquer la section
Questions fréquentes
3 questionsSur quels chapitres porte l'épreuve d'informatique option info CCINP MP 2018 ?
Le sujet porte sur la logique des propositions, la théorie des automates finis (automate minimal), et l'algorithmique de compression de données (transformation de Burrows-Wheeler, codage RLE, codage de Huffman).
Les trois parties du sujet sont-elles indépendantes ?
Oui, l'énoncé précise explicitement que le sujet est composé de trois parties toutes indépendantes.
Quels langages de programmation sont utilisés dans ce sujet ?
La partie III demande d'écrire des fonctions en OCaml (nommé CAML dans l'énoncé) pour la transformation de Burrows-Wheeler et le tri, puis en Python pour le codage et le décodage RLE.
Pas de description pour le moment
