Centrale Option Informatique MP 2015Sujet, corrigé et rapport du jury
- Théorie des graphes (coloration, cliques)
- Algorithmes gloutons
- Complexité algorithmique
- Programmation en Caml
Téléchargements
Présentation du sujet
Difficulté moyenneGraphes d'intervalles : représentation, coloration et ordre d'élimination parfaitAfficher ou masquer la section
Présentation du sujet
Difficulté moyenneLe sujet traite des graphes d'intervalles : leur représentation, leur coloration et l'ordre d'élimination associé. Il propose une démarche progressive en Caml, en programmant successivement les fonctions nécessaires à la construction, à la coloration gloutonne, puis à l'exploitation de l'ordre d'élimination parfait, avant d'étudier une condition suffisante pour qu'un graphe cordal admette un tel ordre.
- 1I. Graphes d'intervallesReprésentation du problème, graphe simple non orienté, graphe d'intervalles, coloration et cliques.
- 2II. Algorithme glouton pour la colorationÉtude sur un exemple, implantation, preuve et complexité d'un algorithme glouton de coloration.
- 3III. Graphes munis d'un ordre d'élimination parfaitUn exemple, vérification, ordre d'élimination parfait pour un graphe d'intervalles et coloration associée.
- 4IV. Ordre d'élimination parfait pour un graphe cordalCycles de longueur 4, cordalité des graphes d'intervalles, existence d'un ordre d'élimination parfait et coupures minimales dans un graphe cordal.
Difficulté moyenne. Le rapport indique que le sujet a été globalement compris, avec une fraction faible de très mauvaises copies, même si les candidats n'ont pas toujours eu le temps de traiter l'ensemble du problème.
Ce qu'a observé le jury
6 erreurs relevéesCalculs de complexité mal justifiés · Fonctions précédentes non réutilisées · Gestion des références absenteAfficher ou masquer la section
Ce qu'a observé le jury
6 erreurs relevéesLe jury constate que le sujet a été globalement compris et que le niveau global des candidats est satisfaisant, certaines copies étant excellentes. Les principales difficultés portent sur la justification des calculs de complexité, la gestion des références et le respect des structures de données indiquées par l'énoncé.
Les erreurs les plus sanctionnées
- 1Calculs de complexité mal justifiésII.D
Même quand le résultat est correct, les calculs de complexité sont rarement justifiés avec précision, notamment lorsque des ajouts en fin de liste ne sont pas pris en compte.
- 2Fonctions précédentes non réutilisées
Certains candidats n'utilisent pas les fonctions préalablement écrites ou changent les structures de données indiquées, ce qui conduit toujours à de mauvaises solutions.
- 3Gestion des références absente
L'absence de gestion des références dans les cas où elles sont indispensables reste une difficulté courante.
- 4Comparaison nombre de couleurs et taille de la plus grande clique impréciseI.E
La fin de la partie I, qui compare le nombre de couleurs nécessaires et la taille de la plus grande clique, a été très souvent imprécise ou fausse.
- 5Preuves insuffisamment justifiéesIII
Même quand un résultat semble évident, il convient de le justifier en quelques mots ; ce minimum de justification a souvent manqué en partie III.
- 6Utilisation de Python au lieu de Caml Light
Le jury rappelle que l'unique langage retenu pour l'option informatique est Caml Light, alors qu'il a souvent observé des programmations en Python.
Ce qui a été bien réussi
- Les meilleurs candidats ont traité correctement le problème, avec une bonne rédaction.
- La signature des fonctions Caml était le plus souvent imposée et les candidats l'ont respectée dans l'ensemble.
- La deuxième partie, sur l'algorithme glouton, est sans difficulté spécifique pour la majorité des candidats.
- Les dernières questions sur les sommets simpliciaux dans un graphe cordal ont été moins souvent traitées, mais globalement correctement.
Conseils du jury
- Bien lire exactement les indications du texte sur les différentes structures de données utilisées.
- Utiliser les fonctions précédemment programmées plutôt que d'en réécrire de nouvelles, moins lisibles.
- Justifier systématiquement les calculs de complexité, y compris les coûts supplémentaires liés aux ajouts dans les listes.
- Parcourir les listes avec des fonctions récursives et un filtrage clair plutôt que de multiplier les hd et tl.
- Écrire des codes clairs et commentés sans paraphraser le code, en expliquant les choix non optimaux le cas échéant.
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
let cons
est du type 'a -> 'a list -> 'a list qui est compatible avec la signature int -> int list -> int list. L'énoncé indique la signature attendue, toute réponse de type compatible est acceptée.
I Graphes d'intervalles
Ce problème d'allocation de ressources (ici les salles) en fonction de besoins fixes (ici les horaires des cours) intervient dans de nombreuses situations très diverses (allocation de pistes d'atterrissage aux avions, répartition de la charge de travail sur plusieurs machines, ...).
I.A - Représentation du problème
- chaque besoin est représenté par un segment
[a, b] oùa, b ∈ ℕ eta ⩽ b ; - deux besoins
I etJ sont en conflit quandI ∩ J ≠ ∅ .

[I
I.A.1) Écrire une fonction ayant pour signature
conflit : int * int -> int * int -> bool
telle que conflit I J renvoie true si et seulement si
I.B - Graphe simple non orienté
-
S est un ensemble fini dont les éléments sont appelés les sommets du graphe ; -
A est un ensemble de paires d'éléments distincts deS . Lorsque{x, y} ∈ A on dit quex ety sont reliés dansG et{x, y} est appelée une arête deG . Les sommets reliés à un sommetx sont appelés les voisins dex .
Étant donnée une énumération deS sous la forme d'une suite finie (x_0, ⋯, x_(n − 1) ) on représenteA en Caml par un élément du type int list vect ainsi : pouri ∈ {0, ⋯, n − 1} , la liste A. (i) contient lesj tels quex_i soit relié àx_j dansG .
On représente graphiquement le grapheG par un diagramme où les arêtes sont représentées par des traits entre les sommets.
[| [1;2;3]; [0;2;3]; [0;1;3;4]; [0;1;2]; [2] |]

I.C - Graphe d'intervalles
- dont les sommets sont les segments
I_0, …, I_(n − 1) - et où, pour
i, j ∈ {0, …, n − 1} , aveci ≠ j , les sommetsI_i etI_j sont reliés si et seulement si ils sont en conflit.
.jpg)
I.C.1) Donner une représentation graphique du graphe d'intervalles associé au problème b de la figure 1 .
I.C.2) Écrire une fonction ayant pour signature
construit_graphe : (int * int) vect -> int list vect
I.D - Coloration
La suite finie (
Lorsqu'une coloration utilise le plus petit nombre de couleurs distinctes possibles, on dit qu'elle est optimale. On note alors
En associant une salle à chaque couleur, on peut répondre au problème initial à l'aide d'une coloration de son graphe d'intervalles associé.
I.D.1) Déterminer des colorations optimales pour les graphes d'intervalles associés aux deux problèmes de la figure 1. On attribuera à chaque fois la couleur 0 à l'intervalle
I.D.2) Couleur disponible
appartient : int list -> int -> bool
b) Écrire une fonction de signature
plus_petit_absent : int list -> int
telle que l'appel à plus_petit_absent 1 renvoie le plus petit entier naturel non présent dans 1 .
c) On considère ici une coloration progressive des sommets d'un graphe. Pour cela, une coloration partielle est un tableau couleurs: int vect tel que couleurs. (i) contient la couleur de
Écrire une fonction de signature
couleurs_voisins : int list vect -> int vect -> int -> int list
telle que l'appel à couleurs_voisins aretes couleurs i renvoie la liste des couleurs des voisins colorés du sommet d'indice
d) En déduire, une fonction de signature
couleur_disponible : int list vect -> int vect -> int -> int
telle que l'appel à couleur_disponible aretes couleurs i renvoie la plus petite couleur pouvant être attribuée au sommet i afin qu'il n'ait la couleur d'aucun de ses voisins dans le graphe décrit par aretes.
I.E - Cliques
Un sous-ensemble
I.E.1) Déterminer
a)
b)
I.E.2) Comparer
I.E.3) Écrire une fonction de signature
est_clique : int list vect -> int list -> bool
telle que est_clique aretes xs renvoie true si et seulement si la liste xs est une liste d'indices de sommets formant une clique dans le graphe décrit par aretes.
II Algorithme glouton pour la coloration
Pour
Ainsi, l'intervalle
II.A - L'algorithme sur un exemple
II.B - Coloration
coloration : (int * int) vect -> int list vect -> int vect
II.C - Preuve de l'algorithme
II.C.1) L'extrémité gauche du segment
II.C.2) Prouver que l'ensemble constitué de
II.C.3) En déduire que le nombre de couleurs nécessaires à une coloration de l'ensemble des segments est au moins égal à
II.C.4) Conclure.
II.D - Complexité
III Graphes munis d'un ordre d'élimination parfait
Une énumération
III.A - Un exemple

III.B - Vérification
voisins_inferieurs : int list vect -> int -> int list
III.B.2) Écrire une fonction de signature
est_ordre_parfait : int list vect -> bool
III.C - Ordre d'élimination parfait pour un graphe d'intervalles
III.D - Coloration
pour
III.D.1) Appliquer cet algorithme de coloration au graphe
a) de l'ordre
b) d'un ordre d'élimination parfait.
III.D.2) Écrire une fonction de signature
colore : int list vect -> int vect
telle que l'appel à colore aretes renvoie selon cet algorithme un tableau c représentant une coloration valide du graphe décrit par aretes où la couleur du
III.D.3) Soit
a) Montrer que pour tout
b) En déduire que l'algorithme de coloration renvoie une coloration optimale.
IV Ordre d'élimination parfait pour un graphe cordal
Un graphe
IV.A - Cycles de longueur 4 dans un graphe d'intervalles
On dispose donc de 4 segments
IV.A.1) Montrer qu'aucun des segments
IV.A.2) On a donc par exemple min
IV.A.3) Conclure à une contradiction.
IV.B - Cordalité des graphes d'intervalles
IV.C - Une enquête policière
IV.D - Ordre d'élimination parfait
Étant donnés un graphe
IV.D.1) Écrire une fonction de signature
simplicial : (int list vect * bool vect) -> int -> bool
telle que l'appel à simplicial (aretes, sg) k , où le sommet d'indice
IV.D.2) Écrire une fonction de signature
trouver_simplicial : (int list vect * bool vect) -> int
telle que l'appel à trouver_simplicial (aretes, sg) renvoie, s'il en existe, un sommet simplicial du sous-graphe induit décrit par (aretes, sg). Déterminer la complexité de la fonction trouver_simplicial.
IV.D.3) Écrire une fonction de signature
ordre_parfait : int list vect -> int list
telle que l'appel à ordre_parfait aretes renvoie un ordre d'élimination parfait du graphe décrit par aretes, s'il en existe un. Déterminer la complexité de la fonction ordre_parfait.
IV.E - Coupures minimales dans un graphe cordal
On se donne dans cette question un graphe cordal
IV.E.1) Montrer que
IV.E.2) Montrer qu'il existe un chemin
IV.E.3) On prend deux tels chemins
IV.E.4) Montrer que
IV.F - Sommets simpliciaux dans un graphe cordal
IV.F.1) Montrer que si
IV.F.2) Montrer que la propriété
IV.F.3) On suppose dans cette question que
a) Justifier que le graphe
b) On suppose que
c) On suppose que
d) Montrer que la propriété
IV.G - Ordre d'élimination parfait dans un graphe cordal
Questions fréquentes
4 questionsSur quels chapitres porte le sujet d'option informatique Centrale MP 2015 ?Afficher ou masquer la section
Questions fréquentes
4 questionsSur quels chapitres porte le sujet d'option informatique Centrale MP 2015 ?
Le sujet porte sur la théorie des graphes appliquée aux graphes d'intervalles : coloration, cliques, algorithme glouton et ordre d'élimination parfait, avec une programmation complète en Caml.
Quelles erreurs le jury a-t-il le plus relevées sur ce sujet d'option informatique Centrale MP 2015 ?
Le jury relève surtout des calculs de complexité mal justifiés, une gestion des références défaillante et une réutilisation insuffisante des fonctions précédemment programmées.
Ce sujet d'option informatique Centrale MP 2015 est-il difficile ?
Le rapport le décrit comme globalement bien compris, avec un niveau satisfaisant des candidats et peu de très mauvaises copies, ce qui correspond à une difficulté moyenne.
Le langage Python est-il accepté pour ce sujet d'option informatique Centrale MP 2015 ?
Non, le rapport rappelle explicitement que l'unique langage retenu pour l'option informatique est Caml Light, même si le jury a observé des programmations en Python.
Pas de description pour le moment
