Centrale Option Informatique MP 2022Sujet et rapport du jury
- Langages, mots et automates finis
- Expressions rationnelles
- Algorithmes diviser pour régner et complexité
- Programmation en OCaml
Téléchargements
- Corrigé : pas encore disponible
Présentation du sujet
DifficileAutomates, expressions rationnelles et algorithmes associésAfficher ou masquer la section
Présentation du sujet
DifficileLe sujet porte sur des algorithmes classiques liant automates et expressions rationnelles, en trois parties indépendantes. La première étudie le miroir d'un langage puis implémente la déterminisation d'un automate jusqu'à l'algorithme de Brzozowski. La deuxième programme une représentation OCaml des expressions rationnelles et l'algorithme dichotomique de Conway. La troisième introduit les dérivées d'Antimirov pour construire un automate associé à une expression rationnelle.
- 1I - Mots et automatesMiroir d'un mot et automate transposé, palindromes et rationalité, déterminisation d'un automate, algorithme de Brzozowski.
- 2II - Expression rationnelle associée à un automateSimplification d'expressions rationnelles, matrices d'expressions rationnelles et algorithme de Conway pour calculer une expression rationnelle du langage d'un automate.
- 3III - Automate des dérivées d'AntimirovConstruction d'un automate associé à une expression rationnelle à partir de ses dérivées, avec preuve de correction et borne sur le nombre d'états.
Difficile. Le jury note que le sujet portait sur une partie difficile du programme et que la troisième partie, plus courte mais plus difficile, n'a été abordée sérieusement que dans les meilleures copies.
L'épreuve en chiffres
Moyenne 9,45 / 20 · écart-type 4,02 · 1 689 présents · où vous situez-vous ?Afficher ou masquer la section
L'épreuve en chiffres
- Moyenne
- 9,45/ 20
- Écart-type
- 4,02
- Présents
- 1 689
- Coefficient
- 10
- Durée
- 4 h
- 1er quartile
- 6,4
- Médiane
- 9,3
- 3e quartile
- 12,4
Votre note sur 20 à ce sujet, en conditions de concours.
Source : document officiel du concours, épreuve du 4 mai 2022. Notes publiées par le concours (après harmonisation le cas échéant). Courbe : estimation par une loi normale.
Ce qu'a observé le jury
5 erreurs relevéesOubli systématique des parenthèses en OCaml · Confusions entre OCaml et Python · Confusion entre caractère et variableAfficher ou masquer la section
Ce qu'a observé le jury
5 erreurs relevéesLe sujet comportait à parts à peu près égales des questions de programmation et des questions théoriques sur les langages et les automates. La partie programmation est dans l'ensemble plutôt réussie, avec une bonne maîtrise des bases d'OCaml, tandis que les réponses aux questions théoriques ont été plus souvent confuses ou sans véritable justification.
Les erreurs les plus sanctionnées
- 1Oubli systématique des parenthèses en OCaml
L'oubli quasi-systématique des parenthèses dans le passage des paramètres à une fonction, ou des délimiteurs begin/end, provoque des erreurs de comportement du programme.
« l'oubli quasi-systématique des parenthèses dans le passage des paramètres à une fonction »
- 2Confusions entre OCaml et Python
Le jury rencontre encore trop souvent des confusions avec Python sur la manipulation des listes ou les bornes dans les boucles for.
« on rencontre encore trop souvent des confusions avec Python sur la manipulation des listes »
- 3Confusion entre caractère et variable
Les candidats confondent le caractère 'a' de type char avec une variable nommée a.
« confusion entre le caractère'a' de type »
- 4Simplification récursive incomplète des expressions rationnellesQ34
La question Q34, qui demandait de simplifier récursivement en profondeur une expression rationnelle, est souvent mal traitée : trop de candidats se limitent à tester une simplification à la racine, produisant parfois des boucles infinies.
« La question Q34 est souvent mal traitée »
- 5Optimisation de la représentation des ensembles d'états non compriseQ20, Q22, Q24
De nombreux candidats n'ont pas compris qu'il fallait travailler directement avec la représentation binaire des ensembles d'états proposée par le sujet, annulant ainsi l'optimisation attendue.
« De nombreux candidats n'ont pas compris la démarche »
Ce qui a été bien réussi
- La partie programmation est dans l'ensemble plutôt réussie avec une bonne maîtrise des bases du langage OCaml sur la plupart des copies.
- Les questions de la partie II.C et de la partie III, quand elles ont été abordées sérieusement, ont été dans l'ensemble plutôt bien traitées.
- Le jury a noté cette année une amélioration certaine dans la présentation des copies.
Conseils du jury
- Bien lire chaque partie dans sa totalité pour en comprendre l'esprit avant de commencer à répondre, en particulier lorsque le sujet propose une implémentation optimisée à utiliser.
- Ne pas hésiter à utiliser les fonctions basiques des modules List ou Array plutôt que de les reprogrammer, en connaissant leur complexité.
- Gérer le temps en tenant compte de l'indépendance des parties, pour ne pas se priver des points abordables d'une partie suivante.
- S'imposer un entraînement régulier sur machine et s'habituer à rédiger en détail les questions théoriques.
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
Option informatique
Langages et mots
On note
La longueur (ou la taille) d'un mot
Si un mot
Un langage sur l'alphabet
L'étoile de Kleene d'un langage
La concaténation de deux langages
Automates finis
Si
Pour représenter graphiquement un automate, on utilise une flèche entrante pour désigner un état initial et une flèche sortante pour désigner un état final, comme l'illustre l'exemple de la figure 1.
Un mot
Le langage d'un automate
Un automate fini déterministe sur un alphabet
L'automate est déterministe complet si la fonction de transition
type automate = { nb : int; (* nombre d'états *)
init : int list ; (* états initiaux *)
final : int list; (* états finaux *)
trans : (int * char * int) list} ;; (* transitions *)

let a1 = { nb = 3 ;
init = [0];
final = [2];
trans = [(0, 'a', 0); (0, 'a', 1); (0, 'b', 0); (1, 'b', 2); (2, 'a', 2)] } ;;
Expressions rationnelles
-
∅, ε eta sont des expressions rationnelles, pour toute lettrea ∈ Σ ; - si
E etF sont deux expressions rationnelles, alors(E + F), (E ⋅ F) etE^⋆ sont des expressions rationnelles.
Programmation
Généralement, les objets mathématiques dans le texte seront notés
Les complexités demandées sont des complexités temporelles dans le pire des cas et seront exprimées sous la forme
I Mots et automates
I.A - Miroir d'un mot et automate transposé
Pour tout langage
Q 2. Dessiner un automate
Soit
Q 3. Donner, en justifiant, la construction de l'automate miroir
Q 4. Écrire une fonction transpose de signature automate
Q 5. Quelle est la complexité de cette fonction ?
I.B - Palindromes et rationalité
Q 6. Écrire une fonction palindrome de signature string
On rappelle que pour tout
Pour un alphabet
Q 7. Montrer que si
Q 8. Montrer que si
On pourra utiliser un automate et un mot de
Soit
Pour
Q 9. Montrer que
Q 10. Montrer que
Soit
On définit les langages
Q 11. Décrire simplement les langages
Q 12. Les langages
On pourra faire intervenir les langages
I.
C − Déterminisation
Q 13. Écrire un automate
Q 14. Appliquer l'algorithme de déterminisation sur l'automate miroir
Q 15. Appliquer l'algorithme de déterminisation sur l'automate miroir
Q 16. Quel doit être le langage reconnu par l'automate
On cherche à généraliser cette construction de façon effective. Pour cela, on va implémenter l'algorithme de déterminisation.
Il faut d'abord choisir une représentation pour les parties de
Q 17. Écrire une fonction supprimer de signature 'a list
Q 18. Donner la complexité de votre algorithme en fonction de la taille de la liste d'entrée.
On choisit plutôt de coder les ensembles d'états par des entiers.
Pour un automate
let pow = Array.make 21 1 ;;
for i = 1 to 20 do
pow.(i) <- pow.(i-1) * 2
done ;;
Soit
Q 20. Écrire une fonction numero de signature int list
Par exemple
Soit
Q 21. Écrire une fonction intersecte de signature int list
On prépare désormais la fonction de transition de l'automate déterminisé accessible.
Soit
On cherche à calculer la fonction de transition
En parcourant l'ensemble des transitions
Q 22. Écrire une fonction etat_suivant de signature int
Au moment de construire l'automate déterminisé accessible
Q 23. Écrire une fonction cherche de signature int
Q 24. Écrire une fonction determinise de signature automate
Q 25. Quelle est la complexité de votre fonction determinise en fonction du nombre d'états
I.D - Algorithme de Brzozowski
On se donne un automate
On note
Si
Q 26. Soit
Q 27. Montrer la propriété () : si l'on prend deux mots
Q 28. En déduire que si
Q 29. Écrire une fonction minimal de signature automate
II Expression rationnelle associée à un automate
II.A - Simplification d'expressions rationnelles équivalentes
type exprat = Vide
| Epsilon
| Lettre of char
| Union of exprat * exprat ;;
| Concat of exprat * exprat
| Etoile of exprat ;;
II.A.1)
Q 31. Écrire une fonction est_vide de signature exprat -> bool qui teste si le langage rationnel représenté par l'expression rationnelle en argument est vide.
II.A.2) Dans cette section, on travaille formellement sur la syntaxe des expressions rationnelles.
La fonction suivante réalise une simplification à la racine sur une expression du type Union en suivant la règle donnée.
let su expr = match expr with
| Union( Vide , e ) -> e
| Union( e , Vide ) -> e
| _ -> expr;;
Q 32. Écrire une fonction se : exprat -> exprat qui simplifie à la racine une expression de type Etoile avec les règles données.
Prenons par exemple

Q 34. Écrire une fonction simplifie : exprat
II.B - Matrices d'expressions rationnelles
type mat = exprat array array ;;
On définit la somme de deux matrices
On définit le produit de deux matrices
II.B.1)
Q 36. Écrire une fonction produit de signature mat
On cherche désormais à définir l'étoile de Kleene d'une matrice carrée d'expressions rationnelles.
II.B.2) Étude de l'étoile d'une matrice de taille 2
On associe à cette matrice

Q 37. Donner une expression rationnelle sur l'alphabet
II.B.3) Étoile d'une matrice carrée de taille quelconque
- si la taille vaut
1, M = (e) , doncM^⋆ = (e^⋆) ; - sinon, pour
M de taillen ⩾ 2 , on découpeM par blocs
- (decouper m n1 n2) renvoie quatre matrices blocs
A, B, C etD telles queA est carrée de taillen_1, D est carrée de taillen_2 etM = (A, B; C, D) , où la matrice d'entréeM est carrée de taillen = n_1 + n_2 .
decouper : mat -> int -> int -> (mat*mat*mat*mat)
- (recoller a b c d) renvoie la matrice
M = (A, B; C, D) à partir des quatre blocsA, B, C etD codés para, b, c, d dont les tailles sont compatibles.
recoller : mat -> mat -> mat -> mat -> mat
On se place dans le cas où la taille
On propose désormais la décomposition récursive suivante
Q 39. Évaluer les différentes complexités des sommes et produits effectués, et en déduire que si
Q 40. Comment gérer le cas des matrices
Q 41. Écrire la fonction etoile de signature mat
II.C - Algorithme de Conway
On définit
On admet la propriété suivante : pour tout état
Q 42. Montrer que
Q 43. Écrire la fonction langage de signature automate
III Automate des dérivées d'Antimirov
Si
Soit
Par exemple, pour
Cette définition de dérivée partielle est étendue à tout mot
Partons de
Q 46. Montrer que pour tous mots
Pour
Q 49. En déduire que l'automate d'Antimirov reconnait bien le langage de l'expression rationnelle
Pour une expression rationnelle
Questions fréquentes
4 questionsSur quoi porte le sujet d'option informatique Centrale MP 2022 ?Afficher ou masquer la section
Questions fréquentes
4 questionsSur quoi porte le sujet d'option informatique Centrale MP 2022 ?
Le sujet porte sur les automates et les expressions rationnelles : miroir d'un langage, déterminisation, algorithme de Brzozowski, algorithme de Conway et dérivées d'Antimirov.
Ce sujet d'option informatique Centrale MP 2022 est-il difficile ?
Le jury le juge relativement long, avec une troisième partie plus difficile qui n'a été abordée sérieusement que dans les meilleures copies.
Quelles sont les erreurs les plus fréquentes relevées par le jury sur ce sujet d'option info Centrale MP 2022 ?
Le jury relève des oublis de parenthèses en OCaml, des confusions avec la syntaxe Python, une confusion entre caractère et variable, et une mauvaise gestion de la simplification récursive des expressions rationnelles.
Quels chapitres réviser pour ce sujet d'option informatique Centrale MP 2022 ?
Il faut maîtriser les langages, mots et automates finis, les expressions rationnelles, les algorithmes diviser pour régner et la programmation en OCaml.
Pas de description pour le moment
