CCINP Option Informatique MP 2020Sujet et rapport du jury
- Logique propositionnelle et connecteurs logiques
- Démonstration par induction structurelle
- Programmation Python : listes, tests, fonctions
- Mots, ordre lexicographique et relations d'équivalence
- Graphes orientés et circuits eulériens
- Programmation fonctionnelle en OCaml (sans boucles ni références)
Téléchargements
- Corrigé : pas encore disponible
Présentation du sujet
AccessibleConnecteur de Sheffer et complétude logique, problème de Freudenthal en Python, mots de Lyndon et mots de de Bruijn en OCamlAfficher ou masquer la section
Présentation du sujet
AccessibleLe sujet d'informatique CCINP MP, session 2020, se compose de trois parties indépendantes. La première étudie le connecteur logique de Sheffer et la complétude des systèmes de connecteurs. La deuxième, en Python, implémente une solution au problème de déduction de Freudenthal. La troisième, en OCaml sans traits impératifs, étudie les mots de Lyndon et les mots de de Bruijn ainsi que les algorithmes et graphes permettant de les construire.
- 1Partie I : logique et calcul des propositionsÉtude du connecteur de Sheffer, de sa table de vérité, de son expression en fonction d'autres connecteurs, puis démonstration par induction structurelle que ce connecteur seul forme un système complet.
- 2Partie II : le problème de FreudenthalÉcriture de fonctions Python successives permettant de reconstituer, comme dans le dialogue entre Pierre et Sophie, les deux entiers cachés à partir de leur somme et de leur produit.
- 3Partie III : mots de Lyndon et de de BruijnÉtude de l'ordre lexicographique, des colliers et des mots de Lyndon, puis de leur lien avec les mots de de Bruijn à travers des graphes orientés, des circuits eulériens et plusieurs algorithmes de construction en OCaml.
Accessible. Le rapport qualifie le sujet de relativement facile et progressif, chaque candidat ayant un minimum de prérequis ayant pu s'exprimer, avec une longueur adaptée puisque beaucoup de candidats sont allés jusqu'aux questions 39-42.
L'épreuve en chiffres
Moyenne 10,53 / 20 · écart-type 3,64 · où vous situez-vous ?Afficher ou masquer la section
L'épreuve en chiffres
- Moyenne
- 10,53/ 20
- Écart-type
- 3,64
- Coefficient
- 7
- Durée
- 4 h
Votre note sur 20 à ce sujet, en conditions de concours.
Source : document officiel du concours, épreuve du 6 juillet 2020. 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éesMauvaise formule de base pour l'implication · Induction structurelle absente pour prouver la complétude · Conditions de validité des couples non vérifiéesAfficher ou masquer la section
Ce qu'a observé le jury
6 erreurs relevéesLe sujet, composé de trois parties indépendantes de logique, de programmation Python et d'algorithmique en OCaml, est jugé relativement facile et progressif, avec une longueur adaptée. Il a permis de bien classer les candidats et de bien discriminer ceux ayant un niveau faible. Le niveau de programmation est globalement jugé correct. Les erreurs proviennent régulièrement d'une lecture trop rapide de l'énoncé, du non-respect des consignes (justification manquante, langage de programmation imposé non respecté) et de points de cours mal sus.
Les erreurs les plus sanctionnées
- 1Mauvaise formule de base pour l'implicationQ5
Une formule de base incorrecte pour l'implication conduit à une expression fausse du connecteur de Sheffer.
« Mauvaise formule de base pour l'implication »
- 2Induction structurelle absente pour prouver la complétudeQ8
Cette question, qui ne demandait que de rédiger la preuve par induction à partir d'éléments déjà établis dans les questions précédentes, est globalement mal traitée, avec seulement 1 % à 2 % de bonnes réponses.
« Pas d'induction structurelle. »
- 3Conditions de validité des couples non vérifiéesPartie II
En partie II, certaines conditions attendues sur les entiers manipulés, comme x inférieur à y ou la contrainte sur leur somme, ne sont pas toujours vérifiées par les candidats dans leurs fonctions Python.
« certaines conditions n'ont pas été vérifiées »
- 4Acrobaties inutiles avec des compteurs et des boucles imbriquéesPartie II
De nombreux candidats se lancent dans des constructions compliquées à base de compteurs et de boucles imbriquées plutôt que d'utiliser une boucle simple, et se perdent alors dans les indices.
« et se perdent dans les indices »
- 5Comparaison de tailles au lieu de l'ordre lexicographiqueQ18
Pour la fonction d'ordre entre deux mots, des candidats comparent la longueur des mots au lieu d'utiliser l'ordre alphabétique attendu.
« Comparaison des tailles au lieu de l'ordre alphabétique. »
- 6Confusion entre sommets et arcs dans le circuit eulérienQ36
Une incompréhension de la définition du circuit eulérien conduit certains candidats à croire qu'il ne doit passer que par tous les sommets, alors qu'il doit passer par tous les arcs du graphe.
« Incompréhension du circuit eulérien qui ne passait que par « tous les sommets » et non « par tous les arcs ». »
Ce qui a été bien réussi
- La partie I est globalement bien traitée ; cette partie facile n'a pas posé de problème, sauf pour les deux dernières questions.
- La partie II est jugée assez facile pour les candidats maîtrisant un minimum le Python, avec plusieurs solutions différentes, toutes justes, proposées à la question 17.
- Peu d'erreurs de syntaxe Python sont relevées en partie II.
- Le sujet de la partie III a été bien compris dans l'ensemble et les questions 18 à 30 sont, dans l'ensemble, bien traitées.
Conseils du jury
- Lire l'énoncé attentivement pour éviter les inattentions et les erreurs de lecture rapide.
- Respecter scrupuleusement les consignes : fournir une justification lorsqu'elle est demandée, utiliser le langage de programmation imposé (Python ou OCaml selon la partie).
- Connaître précisément les points de cours mobilisés, en particulier les démonstrations par induction.
- En OCaml, respecter l'interdiction des traits impératifs (boucles, références) lorsque le sujet l'impose explicitement.
- Préférer une boucle simple à des constructions à base de compteurs imbriqués pour limiter les erreurs d'indices.
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
ÉPREUVE MUTUALISÉE AVEC E3A-POLYTECH ÉPREUVE SPÉCIFIQUE - FILIÈRE MP
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, 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 - Logique et calcul des propositions
I. 1 - Définitions
Soit
- On appelle minterme toute formule de la forme
y_1 ∧ y_2 ∧ ⋯y_n où pour touti ∈ {1, ⋯, n}y_i est un élément de{x_i, ¬x_i} . - On appelle maxterme toute formule de la forme
y_1 ∨ y_2 ∨ ⋯y_n où pour touti ∈ {1, ⋯, n}y_i est un élément de{x_i, ¬x_i} .
Définition 2 (Formes normales conjonctives et disjonctives).
Soit
- On appelle forme normale conjonctive de
F toute conjonction de maxtermes logiquement équivalente àF . - On appelle forme normale disjonctive de
F toute disjonction de mintermes logiquement équivalente àF .
Un ensemble de connecteurs logiques C est un système complet si toute formule propositionnelle est équivalente à une formule n'utilisant que les connecteurs de
I. 2 - Le connecteur de Sheffer
Q2. Construire la table de vérité du connecteur de Sheffer.
Q5. En déduire une expression des connecteurs
Q8. Démontrer par induction sur les formules propositionnelles que l'ensemble de connecteurs
Partie II - Le problème de Freudenthal (Informatique pour tous)
Hans Freudenthal (1905-1990), mathématicien allemand naturalisé néerlandais, spécialiste de topologie algébrique, est connu pour ses contributions à l'enseignement des mathématiques. En 1969, il soumet à une revue mathématique le problème suivant:
Pierre et Sophie engagent alors le dialogue suivant :
- Pierre: "Je ne connais pas les nombres x et y."
- Sophie : "Avant même que tu me le dises, je savais déjà que tu ne connaissais pas x et y."
- Pierre : "Ah! eh bien maintenant je connais x et y."
- Sophie : "Très bien, mais moi aussi alors maintenant je connais x et y."
Si la discussion entre Sophie et Pierre semble stérile, une quantité importante d'informations est cependant échangée qui amène au bout du dialogue à la solution.
Q10. À quelle condition sur
Puisque Pierre ne peut répondre tout de suite, cela signifie que le produit
Q11. Écrire une fonction CoupleProd(n) qui renvoie la liste des entiers
Q12. Soit un entier
- il existe deux sommes
S_1 etS_2 dans la liste Candidat_S(n) telles queS_1 < S_2 ; -
P apparaît dans les listesProd(S_1, n) etProd(S_2, n) .
Q15. Écrire une fonction Reste_S(n) qui renvoie la liste de ces sommes.
Pour que Pierre conclue, il faut que la liste Reste_S(n) soit réduite à un singleton. Pour que Sophie conclue également, il lui suffit de rechercher les éléments de la liste
Les deux étudiants connaissent maintenant
Q17. Pour
Partie III - Mots de Lyndon et de de Bruijn
On considère ici un alphabet totalement ordonné de
III. 1 - Mots de Lyndon
III.1.1 - Définitions
Un mot est une suite finie de longueur
Dans toute la suite, les seules fonctions/méthodes Caml sur les chaînes de caractères qui peuvent être utilisées sont:
-
S.[i] (valeur dui^e caractère) - l'opérateur de concaténation ^
- la fonction String.length : string -> int String. length
s retourne la longueur des . - la fonction String.sub : string -> int -> int -> string.
Soient
-
mp = m_0⋯m_(|m| − 1)p_0⋯p_(|p| − 1) ∈ Σ^(|m| + |p|) est le concaténé dem etp . -
m est un préfixe dep si|m| < |p| etm_i = p_i pour0 ≤ i ≤ |m| − 1 . -
m est un suffixe dep si|m| < |p| etm_i = p_(|p| − |m| + i) pour0 ≤ i ≤ |m| − 1 .
(Il existe
type comparaison
Écrire une fonction recursive ordre : string -> string -> comparaison telle que ordre m p est l'ordre relatif des mots m et p.
La relation définie par:
Soit
Définition 8 (Collier).
Un collier est le plus petit mot dans l'ordre lexicographique d'une classe de mots équivalents par la relation
Un collier d'ordre n est dit périodique s'il peut s'écrire
Un mot
Q21. On suppose
(i). 0010011.
(ii). 010011.
(iii). 001001.
III.1.2 - Génération de mots de Lyndon
Algorithme 1 : Algorithme de génération d'un mot de Lyndon
Données : $\mathbf{m} \in \Sigma^{*}$ un mot de Lyndon, $n \geq|m|$
Résultat : $\mathbf{q}$ le mot de Lyndon généré à partir de $\mathbf{m}$.
*** Etape 1 ***
Concaténer le mot $\mathbf{m}$ à lui même jusqu'à obtenir un mot $\mathbf{q}$ de longueur $n$. La dernière occurrence de
m pourra être tronquée pour arriver à un mot de longueur exactement $n$.
*** Etape 2 ***
tant $\mathbf{q u e}$ le dernier symbole de $\mathbf{q}$ est le plus grand symbole de $\Sigma$ faire
Ôter ce symbole de $\mathbf{q}$.
*** Etape 3 ***
Remplacer le dernier symbole de $\mathbf{q}$ par le symbole qui suit dans $\Sigma$.
retourner q.
Q24. Pour
III.1.3 - Factorisation de mots de Lyndon
Soit
Théorème 1 (Factorisation d'un mot).
Tout mot
L'algorithme 2 propose une méthode de factorisation d'un mot
Algorithme 2 : Algorithme de factorisation d'un mot de Lyndon
Données : $\mathbf{m} \in \Sigma^{*}$ un mot de Lyndon.
Résultat : la liste $\mathcal{L}$ des mots de Lyndon décroissants de la factorisation de $\mathbf{m}$.
$\mathcal{L} \leftarrow[]$
$j \leftarrow 1$
$k \leftarrow 0$
tant que $j \leq|\mathbf{m}|$ faire
si $j=|\mathbf{m}|$ ou $m_{k}>m_{j}$ alors
$\mathbf{p}=m_{0} \cdots m_{j-k-1}$
Ajouter $\mathbf{p}$ à $\mathcal{L}$
Supprimer $\mathbf{p}$ de $\mathbf{m}$
$k \leftarrow 0$
$j \leftarrow 1$
sinon
si $m_{k}=m_{j}$ alors
$k \leftarrow k+1$
$j \leftarrow j+1$
sinon
$k \leftarrow 0$
$j \leftarrow j+1$
retourner $\mathcal{L}$.
III. 2 - Mots de de Bruijn
III.2.1 - Définition
Un mot de de Bruijn d'ordre n sur
Par exemple, pour
III.2.2 - Graphe de de Bruijn
Le graphe de de Bruijn d'ordre
-
V = Σ^n est l'ensemble des sommets du graphe; -
E = {(am, mb), a, b ∈ Σ, m ∈ Σ^(n − 1)} est l'ensemble des arcs orientés du graphe.
Dans ce graphe, certains arcs ont pour sommet initial et terminal un même sommet de
Q31. En déduire le nombre d'arcs orientés

Soit
On suppose disposer de
Q34. Proposer une méthode pour construire les sommets de
Q35. Proposer de même une construction des arcs de
III.2.3 - Construction des mots de de Bruijn
III.2.3.1 - Construction à l'aide de
B(k, n)
Définition 14 (Circuit eulérien).
Soit
(i). un graphe
(ii). un circuit eulérien dans le graphe
Ainsi, la concaténation des étiquettes lues au fil d'un circuit eulérien de
III.2.3.2 - Construction à l'aide de l'algorithme Prefer One
Algorithme 3 : Algorithme Prefer One
Données : $n, \Sigma$
Résultat : $\mathbf{m}$ mot de de Bruijn de longueur $n$ sur $\Sigma$.
$\mathbf{m} \leftarrow$ suite de $n$ zeros
$\mathrm{STOP} \leftarrow$ false
tant que $S T O P=$ false faire
Etape 1
Ajouter un 1 à la fin de $\mathbf{m}$.
si les $n$ derniers symboles de $\mathbf{m}$ n'ont pas été rencontrés auparavant alors
Répeter Etape 1
sinon
Retirer le 1 ajouté à la fin de $\mathbf{m}$.
Passer à Etape 2
Etape 2
Ajouter un 0 à la fin de $\mathbf{m}$.
si les $n$ derniers symboles de $\mathbf{m} n$ 'ont pas été rencontrés auparavant alors
Aller à l'Etape 1
sinon
$\mathrm{STOP} \leftarrow$ true
retourner m.
Q38. Appliquer l'algorithme au cas
III.2.3.3 - Construction à l'aide de la relation aux mots de Lyndon
Q39. Donner, pour
Plus généralement, les mots de de Bruijn et de Lyndon sont étroitement liés. On peut montrer que si l'on concatène, dans l'ordre lexicographique, les mots de Lyndon sur
entier
III.2.4 - Application
Le digicode fonctionne de la façon suivante : vous tapez successivement sur les chiffres afin de composer un mot. À chaque nouveau symbole entré à partir du n-ième, le digicode teste le mot constitué par les
Ainsi, par exemple pour
Étant pressé de regagner votre lit, vous cherchez à taper un minimum de touches pour ouvrir la porte. On note
- pour la borne supérieure, on considèrera que l'on met bout à bout tous les mots possibles de
n chiffres construits surΣ ; - pour la borne inférieure, on cherchera un mot sans redondance, c'est-à-dire qui contient une et une seule fois chaque mot de
n chiffres.
-
k = 4 etn = 2 . -
k = 10 etn = 4 .
FIN
Questions fréquentes
4 questionsSur quels chapitres porte l'épreuve d'informatique CCINP MP 2020 ?Afficher ou masquer la section
Questions fréquentes
4 questionsSur quels chapitres porte l'épreuve d'informatique CCINP MP 2020 ?
Le sujet porte sur la logique propositionnelle et la complétude des connecteurs, sur la programmation Python à travers le problème de Freudenthal, et sur les mots de Lyndon et de de Bruijn en OCaml, avec des graphes orientés et des circuits eulériens.
Quelle est la moyenne à l'épreuve d'informatique CCINP MP 2020 ?
La moyenne de l'épreuve est de 10,53/20, avec un écart-type de 3,64.
Quelles erreurs le jury a-t-il le plus relevées à cette épreuve d'informatique CCINP MP 2020 ?
Le jury relève des lectures trop rapides de l'énoncé, un non-respect des consignes (justifications manquantes, langage imposé non respecté), une induction structurelle absente et des confusions dans la définition du circuit eulérien.
Cette épreuve d'informatique CCINP MP 2020 est-elle difficile ?
Le rapport la juge relativement facile et progressive, avec une longueur adaptée, mais elle permet malgré tout de bien discriminer les candidats ayant un niveau faible en informatique.
Pas de description pour le moment
