CCINP Option Informatique MP 2021Sujet, corrigé et rapport du jury
Partitions non croisées, problème Horn-Sat, classes sylvestres
- Programmation en Python (boucles, récursivité)
- Logique propositionnelle et formules de Horn
- Algorithme de propagation unitaire
- Arbres binaires de recherche
- Relations d'équivalence
- Programmation en OCaml
Téléchargements
Présentation du sujet
Difficulté moyennePartitions non croisées, satisfiabilité des formules de Horn et classes sylvestres (option informatique MP)Afficher ou masquer la section
Présentation du sujet
Difficulté moyenneL'épreuve d'informatique se compose de trois parties indépendantes. La première étudie les partitions non croisées et teste la maîtrise du langage Python. La deuxième traite la satisfiabilité des formules de Horn, dans le chapitre de logique, avec l'algorithme de propagation unitaire. La troisième caractérise, via des arbres binaires de recherche, l'ensemble des mots donnant le même arbre après insertion, en mobilisant récursivité, listes et arbres.
- 1Partie I - Étude des partitions non croiséesVérifie l'assimilation des notions de base de programmation en Python (boucles, instructions conditionnelles) et couvre une partie du programme d'informatique pour tous.
- 2Partie II - Logique et étude du problème Horn-SatÉtudie le problème de satisfiabilité des formules de Horn et l'algorithme de propagation unitaire.
- 3Partie III - Étude des classes sylvestresCaractérise l'ensemble des mots donnant le même arbre binaire de recherche après insertion dans l'arbre vide, en mobilisant récursivité, listes et arbres.
Difficulté moyenne. Le rapport indique que le sujet était d'une longueur et d'un niveau de difficulté parfaitement adapté, avec une moyenne de 10,95 et un écart type de 3,61, permettant une bonne sélection des candidats.
L'épreuve en chiffres
Moyenne 10,95 / 20 · écart-type 3,61 · où vous situez-vous ?Afficher ou masquer la section
L'épreuve en chiffres
- Moyenne
- 10,95/ 20
- Écart-type
- 3,61
- Coefficient
- 7
- Durée
- 4 h
Votre note sur 20 à ce sujet, en conditions de concours.
Source : document officiel du concours, épreuve du 6 mai 2021. 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éesLecture trop rapide de l'énoncé · Confusion de syntaxe entre Python et OCaml · Algorithme de propagation unitaire mal maîtriséAfficher ou masquer la section
Ce qu'a observé le jury
5 erreurs relevéesLe jury observe que les erreurs proviennent régulièrement d'une lecture trop rapide et incomplète des questions, d'un manque de rigueur dans la rédaction des preuves, et d'une confusion de syntaxe entre Python et OCaml. Le sujet a bien permis de classer les candidats, tant sur les aspects preuve que programmation impérative et fonctionnelle.
Les erreurs les plus sanctionnées
- 1Lecture trop rapide de l'énoncé
Certains candidats répondent sans respecter une contrainte de l'énoncé, par exemple en écrivant une fonction non récursive alors qu'elle était demandée récursive.
« lecture un peu trop rapide et non complète de certaines questions »
- 2Confusion de syntaxe entre Python et OCaml
Le jury relève des confusions de syntaxe entre les deux langages, par exemple entre le && d'OCaml et le and de Python.
« une confusion de syntaxe entre le Python et le OCaml »
- 3Algorithme de propagation unitaire mal maîtriséPartie II
Ce point de la partie II a posé le plus de difficultés aux candidats.
« Le point qui a pu poser problème est l’algorithme de propagation unitaire »
- 4Réflexivité omise dans la relation d'équivalence25
La réflexivité est souvent oubliée dans la preuve, contrairement aux autres axiomes.
« La réflexivité est souvent omise ; pas de problème pour les autres axiomes »
- 5Mélange de deux mots mal compris31
La notion de mélange de deux mots n'est pas toujours comprise, menant à des mots de mauvaise longueur ou un ensemble de mauvais cardinal.
« Le mélange de deux mots n’a pas toujours été compris »
Ce qui a été bien réussi
- La partie I est globalement bien traitée et ne comporte pas de difficulté majeure.
- Les questions 16 à 18 de la partie II ont été plutôt bien traitées.
- Les questions de programmation en OCaml (33 à 35) ont plutôt été bien traitées lorsqu'elles ont été abordées.
Conseils du jury
- Lire attentivement l'énoncé en entier, en particulier la nature exacte de ce qui est demandé, par exemple une fonction récursive.
- Rédiger des preuves complètes : conclusion, hypothèse de récurrence, référence explicite aux questions précédentes.
- Ne pas confondre les syntaxes de Python et d'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
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 MUTUALISÉE AVEC E3A-POLYTECH É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.
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, 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 - Étude des partitions non croisées
Dans la suite, pour tout couple
Soit
-
∀P ∈ P, P ≠ ∅ ; -
∀(P, Q) ∈ P^2, (P ≠ Q) ⟹ (P ∩ Q = ∅) ; -
⋃_(P ∈ P)P = A .
Définition 2 (Classe)
Soit
Définition 3 (Partition non croisée)
Soit

I. 1 - Exemples et fonctions élémentaires (Informatique Pour Tous)
-
P_1 = {{1, 3}, {2, 4, 5}} , -
P_2 = {{1, 3}, {1, 2}, {4, 5}} , -
P_3 = {{1, 3}{2, 4}} , -
P_4 = {{1, 4, 5}, {2, 3}} .
Pour Q4, Q5 et Q6, on se fixe un ensemble fini
def mystere(P) :
L = [False for _ in range(len(A))]
for i in range(len(P)) :
if P[i] == [] :
return False
else :
for j in range(len(P[i])) :
if P[i][j] not in A :
return False
else :
# A.index(a) renvoie l'indice de a dans A
k = A.index(P[i][j])
if L[k] :
return False
else:
L[k] = True
return not (False in L)
Expliciter sans justification les valeurs de :
1. mystere([[1,3],[1,5],[2,4]]) 2. mystere([[1,3,4],[2]])
3. mystere([[1,3,5],[2,4]]) 4. mystere([[],[1,2,3,4,5]]).
def est_nc(P) :
# On rappelle que A est une liste triée dans l'ordre croissant
N = len(A)
for i in range(N) :
for j in range ( }\textrm{i}+1,\textrm{N}\mathrm{ ) :
for k in range( j + 1,N) :
for l in range ( }\textrm{k}+1,\textrm{N}\mathrm{ ) :
I. 2 - Nombre de partitions non croisées
Soient

Q8. Soit
Q9. (Informatique Pour Tous) Écrire une fonction Python calcul_C(n) qui prend en argument un entier naturel n et qui renvoie la valeur
Partie II - Logique et étude du problème Horn-Sat
Définition 5 (Formule propositionnelle)
Soit
- V, F sont des formules propositionnelles;
- tout élément
x deX est une formule propositionnelle; - si
P etQ sont des formules propositionnelles, alors¬P, (P ∧ Q), (P ∨ Q) sont des formules propositionnelles.
Soit
Soient
Une clause unitaire est une clause composée d'un unique littéral.
Définition 8 (Forme normale conjonctive)
Soit
Soit
Soient
Soient
- si
P ∈ { V, F} , alors[P]_I = P ; - si
P ∈ {x_1, x_2, …, x_n} , alors[P]_I = I(P) ; - si
P = ¬Q oùQ est une formule propositionnelle, alors[P]_I = ¬[Q]_I ; - si
P = A ∘ B oùA, B sont des formules propositionnelles et∘ ∈ { ∧, ∨ } , alors[P]_I = [A]_I ∘ [B]_I .
Définition 12 (Satisfiable)
Soit
-
P_1 = (x ∨ y) ∧ (¬x ∨ ¬y) ∧ (x ∨ ¬y) , -
P_2 = (x) ∧ (¬x ∨ ¬y) ∧ (¬y ∨ z) ∧ (z) , -
P_3 = () , -
P_4 = (x ∨ ¬y ∨ ¬t) ∧ (z ∨ ¬t ∨ ¬x ∨ ¬y) .
Définition 13 (Propagation unitaire)
Soit
- supprimer de
P toutes les clauses oùx apparaît; - enlever toutes les occurrences du littéral
¬x .
Par exemple, si
Q13. Soit
Q14. Soit
Q15. Soit
Partie III - Étude des classes sylvestres
III. 1 - Algorithme d'insertion dans un arbre binaire
Un arbre binaire
- l'arbre vide que l'on note
∘ ; - un triplet (
T_g, r, T_d ) oùr est un élément deΣ, T_g etT_d des arbres binaires. Les élémentsr, T_g etT_d sont respectivement appelés racine, sous-arbre gauche et sous-arbre droit deT .
Un Arbre Binaire de Recherche (abrégé en ABR)
- l'arbre vide;
- un triplet (
T_g, r, T_d ) oùr est un élément deΣ, T_g etT_d des ABR. De plus, toute valeur apparaissant dansT_g est strictement inférieure àr et toute valeur apparaissant dansT_d est supérieure ou égale àr .
L'insertion d'un élément
- si
T = ∘ , alorsT ← a = (∘, a, ∘) ; - si
T = (T_g, r, T_d) etr ≤ a , alorsT ← a = (T_g, r, T_d ← a) ; - si
T = (T_g, r, T_d) etr > a , alorsT ← a = (T_g ← a, r, T_d) .
- si
w = ε , alorsT ← w = T; - si
w = av aveca ∈ Σ , alorsT ← w = (T ← a) ← v .
Étant donné un mot
Définition 17 (Classe sylvestre)
Soit
Et si
Par exemple, l'arbre

type 'a arbre = Vide | Noeud of ('a arbre) * 'a * ('a arbre).
Noeud(Vide, 'a', Noeud(Vide, 'b', Vide)).
insertion_lettre : char -> char arbre -> char arbre
insertion_mot : char list -> char arbre -> char arbre
Soit
- si
T = ∘ , alorsw_T = ε ; - si
T = (T_g, r, T_d) , alorsw_T = rw_g w_d oùw_g etw_d sont les lectures préfixes respectives deT_g et deT_d .

prefixe : char arbre -> char list
Q24. Soit
III. 2 - Une relation d'équivalence sur les mots
Soient
Soient
Q26. Soient
Pour tout
(b) Justifier que tous les mots de
(c) Soit
(d) Soit
(e) Soit
III. 3 - Construction de classes sylvestres
Définition 21 (Mélange)
- si
v = ε , alorsu⊔v = {u}; - si
u = ε , alorsu⊔v = {v} ; - si
u = au^′ etv = bv^′ oùa etb sont des lettres,u^′ etv^′ des mots, alors :
Soient
Étant donné un
Q32. Écrire une fonction récursive en Ocaml de signature :
ajout_lettre : char -> char list list -> char list list
shuffle : char list-> char list -> char list list
shuffle_l : char list list -> char list list -> char list list
sylvestre_T : char arbre -> char list list
FIN
Questions fréquentes
4 questionsSur quels chapitres porte le sujet d'informatique CCINP MP 2021 ?Afficher ou masquer la section
Questions fréquentes
4 questionsSur quels chapitres porte le sujet d'informatique CCINP MP 2021 ?
Le sujet porte sur la programmation Python, la logique et les formules de Horn avec l'algorithme de propagation unitaire, et les arbres binaires de recherche en OCaml.
Quelles erreurs le jury a-t-il le plus relevées sur l'informatique CCINP MP 2021 ?
Une lecture trop rapide de l'énoncé, une confusion de syntaxe entre Python et OCaml, un algorithme de propagation unitaire mal maîtrisé, et une réflexivité souvent omise dans les preuves.
Le sujet d'informatique CCINP MP 2021 est-il difficile ?
Le rapport le décrit comme d'une longueur et d'un niveau de difficulté parfaitement adapté, avec une moyenne de 10,95 sur 20 et un écart type de 3,61.
Quelle est la moyenne au sujet d'informatique CCINP MP 2021 ?
La moyenne est de 10,95 sur 20, avec un écart-type de 3,61.
Pas de description pour le moment
