Mines Option Informatique MP 2016Sujet, corrigé et rapport du jury
- Structures de données (listes, tableaux, dictionnaires)
- Algorithmes de tri
- Parcours de graphe (BFS, DFS)
- Complexité algorithmique
- Automates et langages, déterminisation
Téléchargements
Présentation du sujet
Informatique : calcul du PageRank d'un graphe du Web et automates probabilistesAfficher ou masquer la section
Présentation du sujet
Le sujet se compose de deux problèmes indépendants. Le premier porte sur la programmation d'un algorithme de calcul du PageRank d'un ensemble de pages du Web, avec des structures de données imposées telles que listes, tableaux et dictionnaires. Le second étend la notion d'automate à celle d'automate probabiliste, entièrement définie dans l'énoncé, avec des questions de déterminisation et de calcul.
- 11. Graphe du Web (problème de programmation)deux années de classe préparatoireFonctions utilitaires, écriture d'un crawler simple par parcours de graphe (BFS/DFS) puis calcul du PageRank.
- 22. Automates probabilistesdeux années de classe préparatoireÉtude d'automates probabilistes définis dans le sujet, avec des questions de déterminisation et de calcul sur les langages associés.
Ce qu'a observé le jury
6 erreurs relevéesConfusion entre liste et tableau · Complexités annoncées incohérentes pour le tri fusion · BFS et DFS mal maîtrisésAfficher ou masquer la section
Ce qu'a observé le jury
6 erreurs relevéesLe sujet permet de bien évaluer l'acquisition du programme des deux années de classe préparatoire à travers un problème de programmation et un problème sur les automates. Les candidats abordent les deux parties dans leur grande majorité, mais le jury relève peu d'efforts de rédaction sur les questions théoriques et des erreurs surprenantes sur des notions pourtant classiques.
Les erreurs les plus sanctionnées
- 1Confusion entre liste et tableau1
À la question 1, des confusions apparaissent entre liste et tableau, ainsi qu'entre l'ajout en tête de liste et la concaténation de listes.
- 2Complexités annoncées incohérentes pour le tri fusion2
À la question 2, le tri fusion est parfois confondu avec d'autres algorithmes de tri, avec des complexités annoncées très curieuses telles que O(ln n), O(n) ou O(n!).
« on trouve O(ln n), O(n) mais aussi O(n!) »
- 3BFS et DFS mal maîtrisés5-6
Aux questions 5 et 6, de nombreux candidats semblent découvrir le BFS ou le DFS : oubli de mémorisation des sommets visités, absence de gestion des sommets en attente, confusion entre les deux algorithmes.
« De nombreux candidats semblent découvrir le BFS ou le DFS »
- 4Norme indice 1 mal connue10
À la question 10, la définition de la norme indice 1 semble très souvent non connue, et certains candidats calculent des puissances de matrice à chaque tour de boucle.
- 5Déterminisation de l'automate rarement maîtrisée17
À la question 17, beaucoup d'erreurs apparaissent dans la déterminisation de l'automate, peu de candidats appliquant la méthode du tableau d'états.
« Cette technique semble rarement maitrisée »
- 6Place du mot vide souvent fausse14
À la question 14, la place du mot vide dans les langages proposés est souvent fausse.
Ce qui a été bien réussi
- La présentation des copies est globalement satisfaisante.
- Quelques rares excellentes copies ont pu être lues.
- La question 11, question de synthèse, est en général juste lorsqu'elle est traitée par les candidats.
- D'excellentes justifications ont pu être lues sur la question 22, pourtant difficile et peu traitée.
Conseils du jury
- Rédiger avec soin les questions théoriques du problème sur les automates, en argumentant précisément.
- Ne pas abuser des conversions inutiles entre listes et tableaux.
- Bien comprendre l'intérêt des structures de données imposées avant de les utiliser.
- Appliquer la méthode du tableau d'états pour déterminiser un automate plutôt que de le faire de tête.
- Éviter de grappiller des points sur des questions faciles au détriment d'une progression cohérente 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
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
A 2016 - INFO MP.
CONCOURS 2016
ÉPREUVE D'INFORMATIQUE
(Durée de l'épreuve : 3 heures) L'usage d'une calculatrice est autorisé.
Sujet mis à la disposition des concours : Concours Commun TPE/EIVP, Concours Mines-Télécom, Concours Centrale-Supélec (Cycle international).
- Si, au cours de l'épreuve, un candidat repère ce qui lui semble être une erreur d'énoncé, il le signale sur sa copie et poursuit sa composition en expliquant les raisons des initiatives qu'il est amené à prendre.
- Tout résultat fourni dans l'énoncé peut être utilisé pour les questions ultérieures même s'il n'a pas été démontré.
- Il ne faut pas hésiter à formuler les commentaires qui semblent pertinents même lorsque l'énoncé ne le demande pas explicitement.
Préliminaire concernant la programmation
1 Graphe du Web
Fonctions utilitaires
- dictionnaire_vide : unit -> dictionnaire.
- ajoute : string -> int -> dictionnaire -> dictionnaire.
- contient : string -> dictionnaire -> bool.
- valeur : string -> dictionnaire -> int.
Crawler simple

Un crawler est un programme qui, à partir d'une URL, parcourt le graphe du Web en visitant progressivement les pages dont les liens sont présents dans chaque page rencontrée, en suivant une stratégie de parcours de graphe (par exemple, largeur d'abord, ou profondeur d'abord). À chaque nouvelle page, si celle-ci n'a pas déjà été visitée, tous ses hyperliens sont récupérés et ajoutés à une liste de liens à traiter. Le processus s'arrête quand une condition est atteinte (par exemple, un nombre fixé de pages ont été visitées). Le résultat renvoyé par le crawler, que l'on définira plus précisément plus loin, est appelé un crawl.
Par exemple, sur le mini-graphe, crawler_bfs 4 "p1" pourra renvoyer le résultat:
["p1", ["p2"; "p5"];
"p2", ["p1"; "p4"];
"p5", ["p5"];
"p4", ["p3"; "p5"]]
visitée (les pages apparaissant dans l'ordre où elles ont été visitées) et
Par exemple, sur le mini-graphe, crawler_dfs 4 "p1" pourra renvoyer le résultat :
["p1", ["p2"; "p5"];
"p2", ["p1"; "p4"];
"p4", ["p3"; "p5"];
"p3", ["p5"; "p6"]]
(string * string list) list -> string list * int vect vect telle que si crawl est le résultat renvoyé par un crawler (une liste de couples formés d'une URL
Par exemple, sur le mini-graphe, si crawl est une variable contenant le résultat de l'appel crawler_bfs 4 "p1" (voir question 5), alors construit_graphe crawl doit renvoyer :
["p1"; "p2"; "p5"; "p4"; "p3"],
[|[|O; 1; 1; 0; 0|];
[|1; 0; 0; 1; 0|];
[|O; 0; 1; 0; 0|];
[|0; 0; 1; 0; 1|];
[|0; 0; 0; 0; 0|]|]
- p3 apparaît même s'il n'a pas été visité dans le crawl;
- p6 n'apparaît pas car il n'a pas été découvert dans le crawl;
- l'hyperlien de p3 à p5 n'apparaît pas car p3 n'a pas été visité.
Calcul de PageRank
- S'il n'y a aucun lien depuis une page Web d'indice
i , alors pour toutj, M_(ij):=1/n . - Sinon, s'il y a
k_i liens depuis la page Web d'indicei , alors pour toutj , on aM_(ij):=(1 − d) × G_(ij)/k_i + d/n , oùG_(ij) est le nombre de liens depuis la page d'indicei vers la page d'indicej etd est un nombre réel fixé appartenant à[0, 1] (on prend souventd = 0, 15) .
Cette matrice peut être vue comme décrivant la marche aléatoire d'un surfeur sur le Web. À chaque fois que celui-ci visite une page Web : - Si cette page ne comporte aucun lien, il visite une page Web arbitraire, choisie aléatoirement de façon uniforme.
- Si cette page comporte au moins un lien, il visite avec une probabilité égale à
1 − d un des liens sortants de cette page, et avec une probabilité égale àd une page Web arbitraire, choisie aléatoirement de façon uniforme.
◻8 -Coder surf_aleatoire : float -> int vect vect -> float vect vect telle que sid est un nombre entre 0 et 1 , et siG est la matrice d'adjacence d'un sous-graphe partiel du Web, alors surf_aleatoire d G renvoie la matriceM de surf aléatoire dans ce sous-graphe.
◻9 - Coder multiplie : float vect -> float vect vect -> float vect, une fonction prenant en argument un vecteur lignev de taillen et une matriceM de taillen × n et renvoyant le vecteur lignew de taillen résultant du produit dev par la matriceM : w = vM . En d'autres termes, pour toutj ,w_j = ∑_i v_i M_(ij) .
Le PageRank des pages d'un sous-graphe du Web àn pages se calcule par des multiplications successives d'un vecteur ligne par la matrice de surf aléatoireM de ce sous-graphe. Plus précisément, soitθ un nombre réel strictement positif (par exemple,θ = 10^(− 4) ) et soitv^((0)) le vecteur ligne de taillen dont toutes les composantes valent1/n . On pose pour un entier naturelp arbitrairev^((p)):=v^((0))M^p . L'algorithme de PageRank calcule la suite desv^((p)) pourp = 0, 1, … jusqu'à ce que‖v^((p + 1)) − v^((p))‖_1 ⩽ θ et renvoie alors le vecteurv^((p + 1)) , considéré comme le vecteur des scores de PageRank. On peut montrer (à l'aide du théorème de Perron-Frobenius) que l'algorithme termine dès lors qued est strictement positif.
de la page d'indice
float -> float -> (string * string list) list -> (string * float) list telle que calcule_pagerank d theta crawl renvoie une liste de couples (
2 Automates probabilistes
Un automate probabiliste sur l'alphabet
(i)
(ii)
(iii)
(iv)
Une transition est un triplet

a pour fonction probabiliste de transition Pr la fonction suivante (seules les valeurs non nulles sont mentionnées) :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
1 |
|
|
|
|
1 |
Étant donné un mot
On considère maintenant l'automate

Questions fréquentes
4 questionsSur quoi porte le sujet d'informatique des Mines MP 2016 ?Afficher ou masquer la section
Questions fréquentes
4 questionsSur quoi porte le sujet d'informatique des Mines MP 2016 ?
Le sujet porte sur le calcul du PageRank d'un graphe du Web par programmation, et sur les automates probabilistes.
Quelles erreurs le jury a-t-il le plus relevées sur ce sujet d'informatique Mines MP 2016 ?
Le jury relève des confusions entre liste et tableau, des complexités algorithmiques incohérentes, une maîtrise insuffisante du BFS et du DFS, et une déterminisation d'automate rarement réussie.
Le sujet d'informatique des Mines MP 2016 est-il faisable en première année ?
Le rapport indique que le sujet permet d'évaluer l'acquisition du programme des deux années de classe préparatoire, sans préciser si les deux parties sont accessibles dès la première année.
Quels chapitres réviser pour le sujet d'informatique des Mines MP 2016 ?
Il est utile de réviser les structures de données, les algorithmes de tri et de parcours de graphe, la complexité algorithmique, ainsi que les automates et leur déterminisation.
Pas de description pour le moment
