Mines Option Informatique MP 2022Sujet et rapport du jury
- Programmation dynamique et mémoïsation
- Analyse de complexité (temps et espace)
- Structures arborescentes (tries) et dictionnaires
- Automates et scripts de transformation
Téléchargements
- Corrigé : pas encore disponible
Présentation du sujet
DifficileCorrection orthographique d'un mot : distance d'édition, tries et automatesAfficher ou masquer la section
Présentation du sujet
DifficileLe problème étudie un mécanisme pour corriger un mot brouillé en proposant un mot ciblé, comme dans un correcteur orthographique. La première partie mesure les erreurs de saisie par la distance d'édition de Levenshtein, calculée par programmation dynamique. La deuxième partie stocke un corpus de mots dans une structure arborescente appelée trie et fouille ce corpus à l'aide d'un automate. La troisième partie construit un filtre de fouille inspiré de la théorie des automates.
- 11. Une mesure des erreurs de saisieDistance d'édition de Levenshtein entre deux mots, calcul par mémoïsation et étude de complexité.
- 22. Fouille dans un trieReprésentation d'un corpus de mots par une structure de trie et fouille à l'aide d'un automate.
- 33. Filtre de fouilleConstruction d'un filtre de fouille inspiré de la théorie des automates, à partir des scripts de transformation.
Difficile. Le rapport indique que la troisième partie est très peu abordée convenablement et que de nombreuses questions de la deuxième partie n'ont été traitées correctement que par une faible proportion de candidats.
Ce qu'a observé le jury
4 erreurs relevéesErreur de typage sur une inégalité · Programmation dynamique non mise en œuvre · Complexité d'insertion dans un dictionnaire méconnueAfficher ou masquer la section
Ce qu'a observé le jury
4 erreurs relevéesLe sujet, composé de 27 questions en trois parties, mobilise l'analyse et la programmation de méthodes de correction d'erreurs dans un mot. Peu de candidats savent manipuler la mémoïsation, et beaucoup ont éprouvé de grandes difficultés à s'approprier la structure de trie introduite en deuxième partie.
Les erreurs les plus sanctionnées
- 1Erreur de typage sur une inégalitéQ1
Certains candidats commettent l'erreur surprenante de croire qu'une inégalité entre deux valeurs implique qu'elles sont toutes deux des entiers.
« En particulier,a≤b n’implique pas quea et b sont des entiers. »
- 2Programmation dynamique non mise en œuvreQ8
Beaucoup de candidats ne savent pas mettre en œuvre un algorithme de programmation dynamique et restent cantonnés à une approche récursive simple, moins efficace.
« beaucoup de candidats ne savent pas mettre en œuvre un algorithme de programmation dynamique et restent cantonnés à une approche récursive. »
- 3Complexité d'insertion dans un dictionnaire méconnueQ12
Le jury constate une méconnaissance des différentes implémentations possibles d'un dictionnaire et de la complexité de l'opération d'insertion.
« On constate une méconnaissance des différentes implémentations possibles d’un dictionnaire et »
- 4Confusion avec la structure usuelle d'automatesQ20
Peu de candidats ont perçu le caractère très spécifique de la structure d'automate proposée, la confondant avec la structure usuelle.
« peu de candidats ont perçu le caractère très spécifique ici. »
Ce qui a été bien réussi
- Les candidats ont abordé de façon équilibrée les questions de programmation et celles portant sur des démonstrations.
- Les questions bien comprises grâce à un effort de compréhension et de rigueur, notamment sur la structure du trie, donnent souvent lieu à des codes appropriés.
Conseils du jury
- S'entraîner à reconnaître les situations qui appellent une programmation dynamique avec mémoïsation plutôt qu'une simple récursivité.
- Prendre le temps de bien comprendre une structure de données non standard avant de coder les fonctions demandées.
- Utiliser des fonctions auxiliaires avec des noms significatifs et des commentaires pour faciliter la lecture du code.
- Rédiger les preuves par récurrence ou par équivalence de façon complète, en vérifiant toutes les hypothèses nécessaires.
Synthèse rédigée par WikiPrépa à partir du rapport officiel du jury (à télécharger en PDF). Les citations sont extraites du rapport.
Ces sujets peuvent vous intéresser
Pas encore de corrigé pour ce sujet : voici des sujets proches corrigés.
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
ÉCOLE DES PONTS PARISTECH, ISAE-SUPAERO, ENSTA PARIS, TÉLÉCOM PARIS, MINES PARIS, MINES SAINT-ÉTIENNE, MINES NANCY, IMT ATLANTIQUE, ENSAE PARIS, CHIMIE PARISTECH - PSL.
Concours Mines-Télécom, Concours Centrale-Supélec (Cycle International).
CONCOURS 2022
ÉPREUVE D'INFORMATIQUE MP
L'usage de la calculatrice et de tout dispositif électronique est interdit.
Les candidats sont priés de mentionner de façon apparente
sur la première page de la copie :
L'énoncé de cette épreuve comporte 9 pages de texte.
Préliminaires
Présentation du sujet
Travail attendu
1 Une mesure des erreurs de saisie
1.1 Une fonction mystère
let rec mystere z = match z with
(* La fonction mystere calcule ... *)
| [] -> max_int
| [a] -> a
| a::b::y -> mystere ((if a <=b then a else b)::y);;
2 - Dire si, quelle que soit l'entrée
3 - Compléter sommairement le commentaire de la ligne 2. Énoncer une propriété qui caractérise exactement la valeur de retour de la fonction mystere. Démontrer cette propriété.
4 - Quelle est la complexité en espace de l'appel mystere z? Est-elle optimale?
1.2 Distance d'édition de Levenshtein
5 - Pour tous les entiers
6 - Pour tous les entiers
type mot = char list;;
- List.length, de type 'a list -> int : la longueur d'une liste
ℓ est List.length 1 ; - Array.make, de type int -> 'a -> 'a array: un tableau de longueur
n dont chaque case est initialisée avec la valeurv s'obtient par Array.make n v. Dans un tableau, les indices sont numérotés à partir de 0 . On accède au coefficient en positioni du tableau a par l'expression a.(i), on le modifie par l'instruction a.(i) <- v.
◻7 - Écrire une fonction array_of_mot (w:mot) : char array dont la valeur de retour est un tableau formé des symboles du motw écrits dans le même ordre.
- Array.make_matrix, de type int -> int -> 'a -> 'a array array: une matrice de taille
s × t dont toutes les cases sont initialisées avec la valeurv s'obtient par Array.make_matrix s t v. Dans une matrice, les indices sont numérotés à partir de 0 . On accède au coefficient en position(i, j) de la matricea par l'expression a.(i).(j), on le modifie par l'instruction a.(i).(j) <- v.
◻8 - Écrire une fonction distance (b : mot) (c : mot) : int qui calcule par mémoïsation la distance dist(b, c ).
- List.filter, de type ('a -> bool) -> 'a list -> 'a list: la sous-liste des éléments
x de la listeℓ tels que le prédicatp(x) vaut true s'obtient par filterp1 .
◻9 - Soitn_(max) un entier. Exprimer la complexité en temps de la fonction distance b c en fonction des longueursm etn des motsb etc . En déduire la complexité de l'instruction List.filter (fun c -> (distance b c) <= k) lc;; oùℓ_c est une liste de mots ciblés, chacun de longueur inférieure ou égale àn_(max) , et oùk est un entier naturel.
2 Fouille dans un trie
2.1 Représentation d'un corpus de mots par un trie

Dans ce sujet, le terme dictionnaire désigne en général un type de données abstrait qui contient des associations entre une clé et une valeur.
12 - Nommer deux structures de données concrètes, qui réalisent le type abstrait dictionnaire. Pour chacune d'entre elles, rappeler sans justifier la complexité en temps de l'opération insertion.
- CharMap.empty, de type 'a char_map, qui désigne le dictionnaire vide.
- CharMap.add, de type char -> 'a -> 'a char_map -> 'a char_map, telle que la valeur de retour de CharMap.add
xtd est un dictionnaire contenant les associations du dictionnaired ainsi qu'une association supplémentaire entre la cléx et la valeurt . Si la cléx était déjà associée dans le dictionnaired , l'ancienne association dex disparaît.
Pour représenter les tries, nous définissons le type
type trie= Node of trie char_map ;;
◻13 - Définir deux constantes trie_vide et trie_motvide, de type trie, qui réalisent respectivement le trie vide et le trie contenant le mot videε .
◻14 - Écrire une fonction trie_singleton (x:char) : trie qui construit un trie contenant le mot formé d'un seul symbolex ∈ Σ∖{$} .
type 'a option =
| None
I Some of 'a;;
- CharMap.find, de type char -> 'a char_map -> 'a option, telle que l'appel de CharMap.find x d renvoie, en temps constant, Some t si la clé
x est associée à la valeurt dans le dictionnaired et renvoie None s'il n'existe pas d'association de cléx dans le dictionnaired .
◻15 - Écrire une fonction trie_mem (c:mot) (Node tcm:trie) : bool qui teste si le motc ∈ (Σ∖{$})^∗ appartient au triet = Node tcm.
Indication Ocaml : Nous complétons le type 'a char_map par les fonctions suivantes : - CharMap.is_empty, de type 'a char_map -> bool, qui teste si un dictionnaire est le dictionnaire vide. CharMap.filter_map, de type (char -> 'a -> 'a option) -> 'a char_map -> 'a char_map, telle que CharMap.filter_map f d renvoie le dictionnaire $d^{\prime}$ restreint aux associations entre la clé $x$ et la valeur $t^{\prime}$ où, d'une part, il existe dans le dic- tionnaire $d$ une association entre la clé $x$ et la valeur $t$ et, d'autre part, $f(t)$ vaut Some tprime. Si le dictionnaire $d$ contient un couple clé et valeur $(x, t)$ mais que $f(t)$ vaut None, alors le dictionnaire $d^{\prime}$ ne contient pas d'association de clé $x$. En voici une illustration : $\begin{array}{|ccc|}d & x_{1} & \mapsto \\ & x_{2} & t_{1} \\ & x_{3} & \mapsto \\ & \vdots & t_{2} \\ & & t_{3} \\ & x_{1} & \mapsto \\ & & \\ x_{3} & \mapsto & t_{1}^{\prime} \\ \vdots & & \\ & & \end{array} \begin{aligned} & f\left(t_{1}\right)=\text { Some t1prime } \\ & f\left(t_{2}\right)=\text { None } \\ & f\left(t_{3}\right)=\text { Some t3prime }\end{aligned}$let rec trie_trim (Node tcm:trie) : trie =
let filtre (x:char) (y:trie) : trie option =
(* a completer *)
in
Node(CharMap.filter_map filtre tcm);;
2.2 Filtrage dans un trie
-
Q est un ensemble (fini ou non), dit ensemble des états,
− q^ ∈ Q est un état, dit état initial, -
Δ ⊆ Q × Σ × Q est une relation, dite relation de transition.
type syst_trans = etat -> char -> etat option; ;
pour représenter la fonction de transition
3 Système de transitions des voisins d'un mot brouillé
Soient
(1)
(2) lorsque
(3) lorsque
(4) lorsque
Nous observons que la factorisation du mot
|
|
C | 0 | r | r | e | C | t | $ |
|
|
inc | 0 |
|
|
e | k | 七 | e$ |
|
|
2-ins-puis-id | 0-ins-puis-id | 0-ins-puis-id | suppr | 0-ins-puis-id | subs | 0-ins-puis-id | 1-ins-puis-id |
| Transformation élémentaire | suppr | subs |
|
| Coût | 1 | 1 |
|
Définition : Nous utilisons le terme
Indication Ocaml : Nous précisons le type etat en déclarant type etat = mot * int;;Fin de l'épreuve
Questions fréquentes
4 questionsSur quels chapitres porte l'épreuve d'informatique option MP Mines-Ponts 2022 ?Afficher ou masquer la section
Questions fréquentes
4 questionsSur quels chapitres porte l'épreuve d'informatique option MP Mines-Ponts 2022 ?
Le sujet porte sur la correction orthographique d'un mot : distance d'édition de Levenshtein par programmation dynamique, structure de trie pour stocker un corpus de mots, et automates pour la fouille et le filtrage.
Quelles erreurs le jury a-t-il le plus relevées sur ce sujet d'informatique MP Mines-Ponts 2022 ?
Le jury relève une erreur de typage sur une inégalité, une programmation dynamique souvent non mise en œuvre, une méconnaissance de la complexité d'insertion dans un dictionnaire, et une confusion avec la structure usuelle d'automates.
Quelle partie du sujet d'informatique MP Mines-Ponts 2022 est la moins bien traitée ?
La troisième partie, sur la construction d'un filtre de fouille inspiré des automates, est très peu abordée convenablement selon le rapport.
Ce sujet d'informatique MP Mines-Ponts 2022 est-il un bon entraînement sur la programmation dynamique ?
Oui, la première partie porte spécifiquement sur le calcul de la distance d'édition par mémoïsation, une technique que le rapport signale comme peu maîtrisée par les candidats.
Pas de description pour le moment
