CCINP Informatique MPI 2024Sujet et rapport du jury
- Structures de données chaînées et programmation en C
- Automates finis et langages réguliers
- Relations d'équivalence et d'ordre
- Théorie des graphes : suites graphiques, algorithme de Havel-Hakimi
- Programmation fonctionnelle en OCaml, récursivité
Téléchargements
- Corrigé : pas encore disponible
Présentation du sujet
Difficulté moyenneTrois problèmes indépendants d'informatique : classification single pass, langages réguliers et correspondance de BurgeAfficher ou masquer la section
Présentation du sujet
Difficulté moyenneLe sujet comporte trois parties indépendantes. La première programme en langage C un algorithme de classification de documents textuels (k-moyennes puis méthode single pass). La deuxième étudie en mathématiques des langages réguliers définis par une relation d'équivalence puis une relation d'ordre sur des mots. La troisième, principal problème du sujet, programme en OCaml la correspondance de Burge entre graphes simples et tableaux de Young semi-standards, en passant par l'algorithme de Havel-Hakimi et l'insertion de Schensted.
- 1Partie I : algorithme Single Passclassification de documents textuels par l'algorithme des k-moyennes puis par une méthode single pass, implémentée en langage C.
- 2Partie II : langages réguliersétude d'une relation d'équivalence puis d'une relation d'ordre total sur des mots, aboutissant à une expression régulière et à un automate fini déterministe.
- 3Partie III : correspondance de Burgeétude des suites graphiques par l'algorithme de Havel-Hakimi, des diagrammes et tableaux de Young, de l'insertion de Schensted, puis programmation en OCaml de la correspondance de Burge entre graphes simples et tableaux de Young semi-standards.
Difficulté moyenne. le rapport décrit un sujet de difficulté raisonnable et de longueur adaptée, avec une moyenne de 10,26/20.
L'épreuve en chiffres
Moyenne 10,26 / 20 · écart-type 3,74 · 967 présents · où vous situez-vous ?Afficher ou masquer la section
L'épreuve en chiffres
- Moyenne
- 10,26/ 20
- Écart-type
- 3,74
- Présents
- 967
- Coefficient
- 12
- Durée
- 4 h
Votre note sur 20 à ce sujet, en conditions de concours.
Source : document officiel du concours, épreuve du 24 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éesDifficulté à dérouler un algorithme donné en pseudo-code · Mélange de syntaxe entre C et OCaml · Fonctions auxiliaires peu lisiblesAfficher ou masquer la section
Ce qu'a observé le jury
6 erreurs relevéesLe sujet, avec une valence programmation relativement importante, était de difficulté raisonnable et a permis à chaque candidat ayant un minimum de prérequis de s'exprimer. La moyenne de l'épreuve est de 10,26 avec un écart-type de 3,74, ce qui a permis de discriminer les élèves de niveau faible de ceux de niveau moyen ou élevé. Le niveau de programmation a été jugé correct, même si quelques candidats mélangent encore la syntaxe C et OCaml.
Les erreurs les plus sanctionnées
- 1Difficulté à dérouler un algorithme donné en pseudo-codeQ2, Q26 et Q34
certains candidats ne savent pas appliquer un algorithme donné sous forme de pseudo-code, ce qui a pénalisé plusieurs questions du sujet.
- 2Mélange de syntaxe entre C et OCamlPartie I
quelques candidats mélangent encore la syntaxe des deux langages, le plus souvent en insérant de la syntaxe OCaml dans du code en langage C.
- 3Fonctions auxiliaires peu lisiblesQ21 et Q22
de nombreux candidats utilisent des fonctions auxiliaires difficiles à interpréter car non commentées et au nom peu évocateur.
- 4Classes modulo la relation mal comprisesQ10 et Q12
les candidats n'ayant pas compris ce qu'étaient les classes modulo la relation donnent des réponses systématiquement incomplètes ou fausses.
- 5Preuves théoriques mal rédigéesQ17
les questions demandant une justification propre n'ont pas toujours été bien abordées, certains candidats ne sachant pas rédiger une preuve.
- 6Distinction de cas oubliéeQ33
une question pourtant simple a été mal traitée car les candidats n'ont pas vu qu'il fallait distinguer le cas où un indice est supérieur à un autre.
Ce qui a été bien réussi
- les questions de programmation 3 à 6 en langage C ont été bien traitées
- la question 7 a été comprise et traitée par une bonne partie des candidats
- les questions 8 et 9 de la partie II ont été bien traitées dans l'immense majorité des copies
- la réflexivité et la transitivité de la relation d'ordre (Q11) ont été bien traitées
Conseils du jury
- utiliser des noms de variables et de fonctions expressifs et ajouter des commentaires
- respecter les règles d'indentation dans l'écriture des programmes
- s'entraîner à dérouler à la main un algorithme donné en pseudo-code
- soigner la rédaction des preuves demandées, même sur des questions en apparence simples
- ne pas mélanger la syntaxe des deux langages de programmation utilisés dans le sujet
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
INFORMATIQUE
Durée : 4 heures
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 - Algorithme Single Pass
On cherche à classer
|
|
|
|
|
|
|
|
|
1 | 2 | 0 | 1 | 1 |
|
|
3 | 1 | 1 | 3 | 0 |
|
|
3 | 0 | 0 | 1 | 1 |
On cherche à voir si des textes traitent des mêmes thématiques, en faisant l'hypothèse que des textes sont sémantiquement proches si des termes communs apparaissent.
Q1. Recopier et remplir le tableau suivant en appliquant l'algorithme des k-moyennes avec
| Itération |
|
|
|
|
| 1 |
|
|
||
| 2 | ||||
| 3 |
Algorithme 1 - Algorithme Single Pass
Entrées : $\left(d_{1} \cdots d_{n}\right)$ les vecteurs des documents, $\theta$ un seuil appartient à $\mathbb{R}$.
Sorties: $\left(\mathcal{A}_{1} \cdots \mathcal{A}_{j}\right)$ les classes de centres $\left(c_{1} \cdots c_{j}\right)$
début
$c_{1}=d_{1} ;$ // Initialisation
$\mathcal{A}_{1}=\left\{d_{1}\right\}$;
$j=1$;
pour $i$ de 2 à $n$ faire
pour $k$ de 1 à $j$ faire
Étape (i) Calculer $\delta\left(d_{i}, c_{k}\right)$;
si Étape (ii) $\delta\left(d_{i}, c_{k}\right)>\theta \forall c_{k}$ alors
$j=j+1$; // Création d’une nouvelle classe
$\mathcal{A}_{j}=\left\{d_{i}\right\} ;$
$c_{j}=d_{i} ;$
sinon
// Indice du centre de classe le plus proche de $d_{i}$ au sens de $\delta$
Étape (iii) $\ell=\arg \min _{1 \leq k<i}\left(\delta\left(d_{i}, c_{k}\right)\right)$;
$\mathcal{A}_{\ell}=\mathcal{A}_{\ell} \cup\left\{d_{i}\right\} ; ~ / /$ Affectation de $d_{i}$ à la classe $\ell$
$c_{\ell}=\frac{1}{\left|A_{\ell}\right|} \sum_{d_{i} \in \mathcal{A}_{\ell}} d_{i} ; \quad / /$ Recalcul de $c_{\ell}$
struct vecteur_s {
double *v; // pointeur vers les coordonnées
int taille; // taille du vecteur
int num_classe; // classe du vecteur
};
typedef struct vecteur_s vecteur;
struct noeud_s {
vecteur *c;
struct noeud_s *suivant;
};
typedef struct noeud_s noeud;
- de la variable vecteur *documents[nb_documents] qui contient l'ensemble des documents, où pour tout
i ∈ [ [0 , nb_documents -1] ] , documents [i] est égal àd_(i + 1) . - d'une fonction void recalculCentre (vecteur *documents, noeud **tete, int l) qui effectue le recalcul du centre
c_ℓ et met à jour le nœud correspondant dans la liste chaînée des centres de classe.
Partie II - Langages réguliers
On définit sur
(i).
(ii). pour
(iii).
Soit
Q10. Donner les classes de mots de longueur 3.
On définit la relation
(i).
(ii). il existe
Soit
Q12. Donner le représentant de la classe contenant le mot bacbab.
Q13. Donner une expression régulière du langage régulier
Q14. Proposer un automate fini déterministe complet reconnaissant
Partie III - Correspondance de Burge
Cette partie comporte des questions nécessitant un code OCaml. Pour ces questions, les réponses ne feront pas appel aux fonctionnalités impératives du langage (références, champs mutables, exceptions).
Notations
-
[l] = [ [1, l] ] l'ensemble des entiers naturels de 1 àl , -
|E| le cardinal de l'ensembleE , -
G = ([l], A) un graphe simple, c'est-à-dire un graphe non orienté àl sommets etm arêtes, sans boucles ni arêtes multiples, -
d_i = |{j ∈ [l], (i, j) ∈ A}| le degré du sommeti ∈ [l] dans le grapheG = ([l], A) .
Définition 1 (Suite de degrés d'un graphe)
Soit
III. 1 - Partitions d'un entier
Une partition d'un entier
Une partition
Q15. Montrer que si
Une suite d'entiers
Pour déterminer si une suite d'entiers donnée est graphique, on peut utiliser l'algorithme d'HavelHakimi, basé sur le théorème suivant :
(i). Pour tout
(ii). Réciproquement, pour tout
Q19. Déterminer si les suites
Q20. Écrire une fonction de signature compare_entiers : int -> int -> int qui compare deux entiers et telle que l'appel à compare_entiers m n renvoie
III. 2 - Diagramme et tableau de Young
Le diagramme de Young de forme
Par convention, la ligne associée à
Par exemple, les diagrammes de Young des partitions de l'entier 4 sont
.jpg)
Soit
Dans le tableau suivant,

Soit
Q24. Soit
Définition 7 (Représentation de Frobenius d'un diagramme de Young)
Soient
Définition 8 (Tableau de Young)
Soit

Définition 9 (Tableau de Young (semi)standard)
Un tableau de Young est dit semi standard si les éléments de chaque ligne (respectivement colonne) forment une suite croissante de gauche à droite (respectivement strictement croissante de haut en bas). Il est dit standard s'il est semi-standard et si les entiers de 1 à
III. 3 - Insertion de Schensted
On cherche à insérer dans un tableau de Young semi standard
L'entier
| 1 | 1 | 2 | 2 | 4 |
| 2 | 3 | 3 | ||
| 3 | ||||
| 4 | ||||
Algorithme 2 - Algorithme d'insertion d'un entier $k$ dans la ligne $i$ d'un tableau de Young semi
standard
Insertion( $T, k, i$ )
Entrées : un tableau de Young semi standard $T$, un entier $k$ à insérer, $i$ la ligne traitée
Sorties : un tableau de Young semi standard contenant $k$
début
si (la ligne $i$ est vide) OU ( $k$ plus grand que l'élément le plus à droite de la ligne $i$ ) alors
Ajouter $k$ en bout de la ligne $i$ de $T$
sinon
Soit $j$ le plus petit indice tel que $k<T(i, j)$
$p=T(i, j)$
$T(i, j)=k$
Insertion( $T, p, i+1$ )
-
m = 0 etr est la lignei oùk a été ajouté en queue, sik est plus grand que tous les éléments de la lignei , -
m , qui est dans la lignei etr est la lignei oùm a été remplacé park sinon.
III. 4 - Correspondance de Burge
Définition 10 (Tableau de Burge)
Soit le graphe

On utilise alors
Ainsi,

L'algorithme 3 utilise alors la représentation
Algorithme 3 - Algorithme de Burge
Entrées : $\mathcal{B}_{G}$ de taille $m \times 2$
Sorties : tableau de Young semi standard $T$ dont la représentation de Frobenius du diagramme
correspondant est du type $\mathcal{F}_{Y}$
début
$T$ = tableau vide; // Initialisation
pour $i$ de 1 à $m$ faire
$(s, t)=T \leftarrow v_{i}$
Placer $u_{i}$ dans la position opposée à ( $s, t$ )
| 1 | 1 | 2 | 3 |
| 2 | 3 | 5 | |
| 4 | 5 | ||
| 5 | 6 | ||
| 6 | |||
Q35. À quoi correspond le nombre d'apparitions de chaque entier contenu dans les cases du tableau de Young résultat de l'algorithme 3 ?
Questions fréquentes
4 questionsSur quels chapitres porte l'épreuve d'informatique CCINP MPI 2024 ?Afficher ou masquer la section
Questions fréquentes
4 questionsSur quels chapitres porte l'épreuve d'informatique CCINP MPI 2024 ?
Le sujet porte sur un algorithme de classification en langage C, les langages réguliers et automates, puis la théorie des graphes et la programmation OCaml autour de la correspondance de Burge.
Quelles erreurs le jury a-t-il le plus relevées à l'épreuve d'informatique CCINP MPI 2024 ?
Le jury signale des difficultés à dérouler un algorithme donné en pseudo-code, des fonctions auxiliaires peu lisibles et des preuves théoriques mal rédigées.
L'épreuve d'informatique CCINP MPI 2024 est-elle difficile ?
Le rapport la décrit comme de difficulté raisonnable et de longueur adaptée, avec une moyenne de 10,26/20 et un écart-type de 3,74.
L'épreuve d'informatique CCINP MPI 2024 porte-t-elle sur plusieurs parties indépendantes ?
Oui, le sujet comporte trois parties indépendantes, en langage C, en mathématiques des langages réguliers, puis en OCaml.
Pas de description pour le moment
