Optimisation au concours : Informatique MPI/MPI*
🎯 Objectif du module & Exigences des Jurys
Section titled “🎯 Objectif du module & Exigences des Jurys”En tant que concepteur de sujets et président de jury pour les concours de la filière MPI (Mines-Ponts, Centrale-Supélec, X-ENS, CCINP), je constate chaque année une fracture nette entre les candidats qui récitent leur cours et ceux qui maîtrisent l’art de la démonstration formelle et de l’argumentation rigoureuse.
En option Informatique-Télécoms (filière MPI), l’informatique n’est pas seulement une discipline d’implementation : c’est une science exacte dont les outils sont la logique, la théorie des langages, la complexité et la calculabilité. Le jury attend de vous :
- Une rigueur implacable dans les preuves : qu’il s’agisse de correction (terminaison et invariant de boucle) ou de réductions polynomiales.
- Une syntaxe irréprochable : en Python, en OCaml ou en pseudo-code selon les consignes, avec des typages explicites lorsque requis.
- Une conscience analytique : savoir estimer une complexité au pire mais aussi en moyenne (notamment probabiliste ou amortie), sans éluder les hypothèses de distribution.
Ce guide couvre les trois types de questions éliminatoires par excellence. Appropriez-vous les rédactions modèles : elles reflètent exactement le barème appliqué lors de la correction des copies.
📌 Question Type 1 : Preuve de correction complète et analyse de complexité temporelle au pire et en moyenne
Section titled “📌 Question Type 1 : Preuve de correction complète et analyse de complexité temporelle au pire et en moyenne”Cadrage exact
Section titled “Cadrage exact”“Soit l’algorithme résolvant le problème . Démontrer sa terminaison, sa correction partielle via un invariant de boucle, puis analyser sa complexité temporelle au pire et en moyenne en fonction de la taille de l’entrée.”
💡 Méthode canonique & Étapes de rédaction
Section titled “💡 Méthode canonique & Étapes de rédaction”- Terminaison : Définir un variant de boucle (ou fonction de termination) (ou bien fondé), strictement décroissant à chaque itération et minoré par une constante.
- Correction partielle : Identifier un invariant de boucle vérifiant trois propriétés :
- Initialisation : est vrai avant la première itération.
- Conservation : Si est vrai avant une itération et que la condition de boucle est vraie, est encore vrai après l’itération.
- Terminaison / Post-condition : À la sortie de la boucle (condition fausse combinée à l’invariant), la propriété désirée est établie.
- Complexité au pire : Compter le nombre maximal d’opérations élémentaires exécutées pour une entrée de taille , exprimé sous la forme .
- Complexité en moyenne : Introduire un espace probabilisé sur les entrées de taille , définir la variable aléatoire de coût , et calculer l’espérance mathématique en justifiant l’utilisation éventuelle de la linéarité de l’espérance ou du théorème maître.
📋 Exemple de sujet & Rédaction modèle type Concours
Section titled “📋 Exemple de sujet & Rédaction modèle type Concours”Sujet d’application : Soit la fonction de tri rapide (Quicksort) utilisant un pivot choisi uniformément au hasard. Analyser sa correction et sa complexité.
Rédaction modèle type /20 :
1. Terminaison La fonction récursive Quicksort partitionne un tableau en deux sous-tableaux strictement plus petits si . La taille de la portion de tableau à trier, donnée par , décroît strictement à chaque appel récursif. L’algorithme s’arrête lorsque (cas de base). La terminaison est ainsi assurée.
2. Correction partielle Par récurrence structurelle sur la taille du tableau :
- Base : Si , le tableau est trivialement trié.
- Hérédité : Supposons l’algorithme correct pour tout tableau de taille strictement inférieure à . La fonction de partitionnement place un pivot à sa position définitive , telle que tous les éléments de lui sont inférieurs ou égaux, et ceux de lui sont supérieurs ou égaux. Par hypothèse de récurrence, les appels récursifs sur ces deux sous-tableaux (de tailles et , toutes deux ) trient correctement ces portions. Le tableau global est donc trié.
3. Complexité au pire Au pire, le pivot choisi est systématiquement le plus petit ou le plus grand élément (par exemple, tableau déjà trié avec choix du premier élément). La relation de récurrence sur le nombre d’opérations est : Par télescopage, on obtient immédiatement .
4. Complexité en moyenne Si le pivot est choisi uniformément au hasard, la taille du sous-tableau de gauche suit uniformément la loi sur . L’équation de récurrence en espérance est : pour une constante liée au partitionnement linéaire. Par résolution classique (méthode par substitution ou fonction génératrice), on établit que .
⚠️ Les pièges majeurs soulignés dans les rapports de jury
Section titled “⚠️ Les pièges majeurs soulignés dans les rapports de jury”- Oubli de la minoration du variant : Un variant qui décroît sans être minoré ne prouve pas la terminaison.
- Confusion entre complexité au pire et en moyenne : Fournir comme complexité pire cas pour le Quicksort est une faute éliminatoire.
- Rédaction floue de l’invariant : Dire “la boucle fait ce qu’on lui demande” ne rapporte aucun point. L’invariant doit être une assertion logique formelle.
📌 Question Type 2 : Construction d’automate fini déterministe et minimisation par l’algorithme de Moore
Section titled “📌 Question Type 2 : Construction d’automate fini déterministe et minimisation par l’algorithme de Moore”Cadrage exact
Section titled “Cadrage exact”“Soit un langage rationnel défini par une expression régulière ou un automate non déterministe.
- Construire l’automate fini déterministe (AFD) reconnaissant par la méthode de construction des sous-ensembles (déterminisation).
- Appliquer l’algorithme de Moore (ou des équivalences successives) pour obtenir l’AFD minimal.”
💡 Méthode canonique & Étapes de rédaction
Section titled “💡 Méthode canonique & Étapes de rédaction”- Déterminisation (Algorithme de Brzozowski ou des sous-ensembles) :
- Calculer l’état initial de l’AFD : de l’AFN d’origine.
- Pour chaque nouvel état (ensemble d’états de l’AFN) et pour chaque lettre de l’alphabet, déterminer l’ensemble accessible et nommer le nouvel état. Répéter jusqu’à épuisement.
- Un état est terminal s’il contient au moins un état terminal de l’AFN.
- Minimisation (Algorithme de Moore / Raffinement de partitions) :
- Initialiser une partition en deux blocs : les états finaux et les états non finaux .
- À l’étape , raffiner la partition : deux états et d’un même bloc de sont séparés si pour une lettre , et appartiennent à des blocs différents de .
- S’arrêter lorsque . Les blocs de la partition finale constituent les états de l’automate minimal.
📋 Exemple de sujet & Rédaction modèle type Concours
Section titled “📋 Exemple de sujet & Rédaction modèle type Concours”Sujet d’application : Soit l’alphabet . Soit l’AFD défini par la table de transition suivante :
- (initial, terminal) : ,
- (non terminal) : ,
- (terminal) : ,
- (non terminal) : ,
- (non terminal) : ,
Appliquer l’algorithme de Moore pour minimiser cet automate.
Rédaction modèle type /20 :
1. Initialisation de la partition On sépare l’ensemble des états en deux blocs selon leur nature (terminaux vs non terminaux) :
- (états finaux )
- (états non finaux ) On pose .
2. Raffinement - Étape 1 () Testons la séparabilité des états dans le bloc pour les lettres et :
- Pour l’état : et .
- Pour l’état : et . Les transitions par mènent vers et vers . On doit donc scinder .
Testons le bloc :
- Pour : , .
- Pour : , .
- Pour : , . Les états se comportent de manière identique vis-à-vis de .
On obtient la nouvelle partition : .
3. Raffinement - Étape 2 () Analysons le bloc avec :
- Pour : , .
- Pour : , .
- Pour : , . Aucun état de ne se sépare. On a donc .
4. Conclusion L’algorithme converge. L’automate minimal possède 3 états représentés par les classes :
- (initial et terminal)
- (terminal)
- (non terminal)
⚠️ Les pièges majeurs soulignés dans les rapports de jury
Section titled “⚠️ Les pièges majeurs soulignés dans les rapports de jury”- Oubli des états inaccessibles : Avant toute minimisation de Moore, il est impératif de supprimer les états non accessibles depuis l’état initial (par un simple parcours en profondeur ou largeur).
- Confusion dans les indices de partitions : Ne pas confondre les blocs d’une même partition et les étapes successives du raffinement.
📌 Question Type 3 : Réduction polynomiale pour prouver la NP-complétude d’un problème de décision
Section titled “📌 Question Type 3 : Réduction polynomiale pour prouver la NP-complétude d’un problème de décision”Cadrage exact
Section titled “Cadrage exact”“Soit un nouveau problème de décision . Prouver que est NP-complet en effectuant une réduction polynomiale à partir d’un problème de référence connu (par exemple 3-SAT, CLIQUE ou VERTEX-COVER).”
💡 Méthode canonique & Étapes de rédaction
Section titled “💡 Méthode canonique & Étapes de rédaction”- Appartenance à la classe NP :
- Exhiber un certificat (ou témoin) de taille polynomiale par rapport à la taille de l’entrée.
- Décrire un algorithme déterministe en temps polynomial capable de vérifier si le certificat est valide.
- Choix du problème source () :
- Sélectionner un problème canonique NP-complet pertinent (souvent ).
- Construction de la réduction :
- Définir une fonction transformant une instance quelconque de en une instance de notre problème .
- Démontrer que est calculable en temps polynomial par une machine de Turing déterministe.
- Équivalence (Correction de la réduction) :
- Prouver la double implication :
- .
- (ou par contraposée).
- Prouver la double implication :
📋 Exemple de sujet & Rédaction modèle type Concours
Section titled “📋 Exemple de sujet & Rédaction modèle type Concours”Sujet d’application : Soit le problème INDEPENDENT-SET (Ensemble Indépendant) : étant donné un graphe et un entier , existe-t-il un sous-ensemble de sommets de taille tel qu’aucune arête de n’ait ses deux extrémités dans ? Prouver que INDEPENDENT-SET est NP-complet par réduction à partir de VERTEX-COVER (Couverture par Sommets).
Rédaction modèle type /20 :
1. Appartenance à NP Étant donné un graphe , un entier et un sous-ensemble de sommets en tant que certificat (de taille ), on peut vérifier en temps polynomial si et si, pour toute paire de sommets de , l’arête correspondante n’appartient pas à (en parcourant la liste d’adjacence). Ainsi, INDEPENDENT-SET .
2. Réduction polynomiale Soit une instance de VERTEX-COVER composée d’un graphe et d’un entier . Nous construisons une instance de INDEPENDENT-SET sur le même graphe avec l’entier . Cette transformation nécessite simplement de calculer la soustraction de deux entiers et de recopier le graphe, ce qui s’effectue en temps (clairement polynomial).
3. Preuve d’équivalence Démontrons que possède un couplage par sommets de taille au plus si et seulement si possède un ensemble indépendant de taille au moins .
Lemme algébrique : Un sous-ensemble est un ensemble indépendant si et seulement si son complémentaire est une couverture par sommets. (Preuve du lemme) : est indépendant au moins une des extrémités de chaque arête appartient à est une couverture par sommets.
Supposons que contienne un vertex-cover tel que . Alors par le lemme, est un ensemble indépendant. Sa taille est : L’instance INDEPENDENT-SET est donc positive.
Réciproquement, supposons l’existence d’un ensemble indépendant avec . Posons . C’est une couverture par sommets dont la taille est : L’instance VERTEX-COVER est donc positive.
Conclusion : INDEPENDENT-SET est NP-difficile et appartient à NP, il est donc NP-complet.
⚠️ Les pièges majeurs soulignés dans le rapport de jury
Section titled “⚠️ Les pièges majeurs soulignés dans le rapport de jury”- Inverser le sens de la réduction : Réduire le problème facile vers le problème dur ne prouve rien. La réduction doit aller de .
- Oublier de prouver la polynomialité de la transformation : Décrire l’algorithme de réduction ne suffit pas, il faut expliciter sa complexité en pour valider le sigle “poly-time”.