CCINP Option Informatique MP 2024Sujet et rapport du jury
- Graphes : coloration et listes d'adjacence
- Dictionnaires en Python
- Logique propositionnelle : forme normale conjonctive et satisfiabilité
- Retour sur trace
- Déduction naturelle
- Mots, préfixes et facteurs
- Automates finis : automate émondé, élimination des états
- Complexité et correction des algorithmes
Téléchargements
- Corrigé : pas encore disponible
Présentation du sujet
Difficulté moyenneColoration de graphes en Python, satisfiabilité en OCaml et recherche de motifs par automateAfficher ou masquer la section
Présentation du sujet
Difficulté moyenneLe sujet comporte trois parties indépendantes de difficulté croissante. La première étudie la coloration des sommets d'un graphe et fait programmer en Python l'algorithme de Welsh-Powell. Les deux suivantes, en OCaml, traitent de la satisfiabilité d'une formule propositionnelle et de la déduction naturelle, puis de la recherche d'un motif dans un texte, d'abord par une méthode naïve avec les notions de bord et de période, ensuite à l'aide d'un automate.
- 1Partie I : coloration de graphesNombre chromatique, représentation d'un graphe par dictionnaire, tri des sommets par degré, algorithme de Welsh-Powell et application à un problème concret.
- 2Partie II : satisfiabilité d'une formule propositionnellepremière et deuxième annéeCodage des clauses en OCaml, évaluation d'une forme normale conjonctive, énumération des valuations, complexité, retour sur trace et arbre de preuve en déduction naturelle.
- 3Partie III : automates et reconnaissance de motifsRecherche naïve d'occurrences, périodes et bords d'un mot, automate émondé, élimination des états et localisation des occurrences d'un motif.
Difficulté moyenne. Le rapport juge la longueur et la difficulté adaptées aux étudiants de l'option, avec une moyenne de 10,26 et quelques candidats ayant abordé toutes les questions.
L'épreuve en chiffres
Moyenne 10,26 / 20 · écart-type 4,07 · où vous situez-vous ?Afficher ou masquer la section
L'épreuve en chiffres
- Moyenne
- 10,26/ 20
- Écart-type
- 4,07
- Coefficient
- 7
- Durée
- 4 h
Votre note sur 20 à ce sujet, en conditions de concours.
Source : document officiel du concours, épreuve du 25 avril 2024. 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
6 erreurs relevéesRécurrence mal conduite · Booléens et sortie de boucle mal écrits en OCaml · Complexité sous-estiméeAfficher ou masquer la section
Ce qu'a observé le jury
6 erreurs relevéesLe sujet a bien classé les candidats et couvrait largement les programmes d'informatique commune et d'option des deux années. Les erreurs relevées portent sur le manque de rigueur des justifications, des algorithmes incomplets et des erreurs de syntaxe, y compris des confusions entre Python et OCaml. La présentation des copies est globalement satisfaisante et compte dans le barème.
Les erreurs les plus sanctionnées
- 1Récurrence mal conduiteQ2, Q3, Q28 à Q30
Certains candidats ont utilisé une récurrence dont l'hérédité n'était pas démontrée. Les étapes de la récurrence posent aussi problème en fin de partie III.
« Certains candidats ont utilisé un raisonnement par récurrence avec une hérédit é non démontrée. »
- 2Booléens et sortie de boucle mal écrits en OCamlQ14, Q17
Des conditionnelles emboîtées remplacent mal les opérateurs booléens, et la sortie anticipée d'une boucle for est souvent mal codée alors qu'une exception convient. Il n'existe pas d'opérateur de puissance entière en OCaml.
« la sortie prématurée d’ une boucle for est souvent mal codée en OCaml. »
- 3Complexité sous-estiméeQ19
Certains trouvent une complexité polynomiale pour l'énumération des valuations. Il faut tenir compte de la complexité des fonctions appelées.
« Question souvent mal traitée avec une complexité polynomiale trouvée par certains candidats. »
- 4Concaténation utilisée comme un constructeurQ24, Q27
L'opérateur ^ ne permet pas de filtrage, ce qui a rendu de nombreux codes inintelligibles.
« l’opérateur de la concaténation ^ n’est pas un constructeur et qu’on ne peut pas procéder par filtrage. »
- 5Automates : notions de cours méconnuesQ32, Q33
L'automate émondé et l'algorithme d'élimination des états sont généralement inconnus, et l'état initial ou final est souvent oublié.
« La notion d’automate émondé et l’algorithme d’élimination des états ne sont généralement pas connus. »
- 6Cas particuliers oubliésQ9, Q15, Q17
Le cas de la liste vide pose problème, tout comme le tableau ne contenant que des valeurs true. Il faut aussi vérifier qu'une clé est présente dans un dictionnaire avant de la lire.
« Le traitement du cas de la liste vide est problématique dans de nombreuses copies. »
Ce qui a été bien réussi
- Les trois premières questions montrent une bonne compréhension des définitions, la Q1 étant bien traitée.
- Les fonctions auxiliaires Python des questions Q4 à Q9 sont relativement bien traitées.
- L'implémentation de l'algorithme de coloration (Q10) est généralement réussie par ceux qui l'abordent.
- Les questions Q16, Q25 et Q31 sont bien ou relativement bien traitées.
Conseils du jury
- Présenter le code avec une indentation propre, des retours à la ligne et des noms de variables explicites.
- Itérer sur les éléments d'une liste plutôt que sur les indices quand c'est plus adapté.
- Commenter brièvement ses choix de conception dans une question ouverte.
- Justifier qu'une valeur trouvée est bien un minimum et argumenter clairement la correction d'un algorithme.
- Travailler toutes les notions du programme et la programmation dans les deux langages, Python et OCaml.
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
INFORMATIQUE
RAPPEL DES CONSIGNES
- Utiliser uniquement un stylo noir ou bleu foncé non effaçable pour la rédaction de votre composition ; d'autres couleurs, excepté le vert, bleu clair ou turquoise, peuvent être utilisées, mais exclusivement pour les schémas et la mise en évidence des résultats.
- Ne pas utiliser de correcteur.
- Écrire le mot FIN à la fin de votre composition.
Les calculatrices sont interdites.
Partie I- Coloration de graphes
l. 1 - Définitions et propriétés
Une clique est un sous-ensemble de sommets du graphe, adjacents 2 à 2 . On dit qu'un graphe est complet si il est une clique. On notera
On pose

Q2. Pour un entier naturel
Q3. Montrer que pour tout graphe
1.2 - Algorithmique et programmation en Python (Informatique Commune)
Dans la suite, on implémente un graphe par un dictionnaire (type dict en Python), contenant les listes d'adjacence des sommets. Les clés du dictionnaire sont les numéros des sommets et la valeur correspondant à la clé i du dictionnaire est la liste d'adjacence du sommet numéro i. Notons qu'il serait ici possible d'implémenter le graphe par des listes d'adjacence dans un tableau, dans la mesure où les sommets sont numérotés de 0 à
Q5. Écrire une fonction Python degres_sommets(d) qui prend en paramètre un dictionnaire
Algorithme 1: Welsh-Powel (coloration de graphe)
Entrée : un graphe G à n sommets
Sortie : liste d'entiers contenant en position i la couleur du sommet numéro i
Début
Ordonner les sommets selon les degrés décroissants dans une liste li;
colorie : dictionnaire vide qui à terme, associera à chaque clé i, la couleur du sommet i;
Tant qu' il reste des sommets à colorier faire
Chercher dans li le premier sommet non colorié et le colorier avec la plus petite couleur
c non utilisée ;
Colorier avec cette même couleur, en respectant leur ordre dans li, tous les sommets
non coloriés et non adjacents à des sommets de couleur c;
Fin
Retourner colorie
Fin
Application
| Prénom |
|
|
|
|
|
|
|
|
| Ami
|
|
|
|
|
|
|
|
|
Q11. Modéliser la situation par un graphe et en déduire une solution.
Partie II - Satisfiabilité d'une formule propositionnelle
Le langage utilisé dans cette partie est OCaml.
Dans cette partie, on considère que si une formule contient
On définit le type OCaml suivant :
type clause=Var of int|Non of clause | Ou of clause*clause
L'argument du constructeur Var correspond au numéro de la variable concernée.
Une formule sous forme normale conjonctive ayant
- type 'a array, notations [| |]
- création d'un tableau: make : int -> 'a -> 'a array
- accès à l'élément d'indice i du tableau t : t. (i)
- modification de l'élément placé à l'indice i du tableau t : t. (i) <- v
- taille du tableau: length : 'a array
→ int
Q13. Donner le code OCaml permettant de définir la formule :
Q14. Écrire une fonction de signature evalue_clause : clause -> bool array -> bool qui prend en paramètre une clause et une valuation représentée par un tableau contenant à l'indice
Q20. Proposer une stratégie de retour sur trace pour résoudre le problème de satisfiabilité d'une formule.
Conséquence logique entre 2 formules
Définition
Partie III - Automates et reconnaissance de motifs
Dans cette partie, le langage utilisé est OCaml.
III. 1 - Autour de l'algorithme naïf de recherche de caractères
Définitions
Un mot
Un bord d'un mot non vide
- String. length : longueur de la chaîne de caractères
- s. [i] : accès à la lettre d'indice
i de la chaînes -
- : opérateur concaténation
Q24. Écrire une fonction de signature occurrence : string
Q27. Écrire une fonction de signature periode : string -> int qui renvoie la période d'une chaîne de caractères.
III. 2 - Localisation des occurrences d'un motif à l'aide d'un automate
Certains automates peuvent être utilisés comme machine de recherche pour le traitement séquentiel de textes. Étant donné un alphabet
L'algorithme suivant permet de localiser les mots de
Dans la suite, l'automate
Algorithme 2 : reconnaissance de mots dans un texte
Cherche ( $M, t$ ) ;
Début
$\mathrm{e} \leftarrow$ initial[M];
lst $\leftarrow$ liste vide;
Pour chaque lettre $\lambda$ de $t$ prise dans l'ordre croissant de leurs indices faire
$\mathrm{e} \leftarrow \delta(\mathrm{e}, \lambda)$;
Si e est un état terminal alors
ajouter à lst l'indice de $\lambda$ dans t ;
Fin
Fin
Retourner lst;
Fin

type auto={etats: int list; alphabet : char list; initial: int;
transition: int -> char ->int; final : int list}; ;
Q31. Créer une variable automate qui représente l'automate
Q32. L' automate
Q33. Présenter les premières étapes de l'algorithme d'élimination des états appliqué à l'automate
Questions fréquentes
4 questionsSur quels chapitres porte le sujet d'option informatique CCINP MP 2024 ?Afficher ou masquer la section
Questions fréquentes
4 questionsSur quels chapitres porte le sujet d'option informatique CCINP MP 2024 ?
Coloration de graphes en Python, logique propositionnelle et satisfiabilité en OCaml avec un peu de déduction naturelle, puis mots, périodes, bords et automates pour la recherche de motifs.
Quelle est la moyenne de l'épreuve d'informatique option MP CCINP 2024 ?
Le rapport indique une moyenne de 10,26 avec un écart type de 4,07.
Quelles erreurs le jury a-t-il le plus relevées en option info CCINP MP 2024 ?
Des récurrences sans hérédité démontrée, une mauvaise syntaxe des booléens et des boucles en OCaml, une complexité sous-estimée à la Q19 et une méconnaissance de l'automate émondé et de l'élimination des états.
Faut-il savoir programmer en Python pour l'option informatique CCINP MP 2024 ?
Oui : la première partie est en Python et relève de l'informatique commune. Le jury rappelle qu'une partie de l'épreuve y est toujours consacrée.
Pas de description pour le moment
