Adloun

Corrigé X-ENS 2025 Informatique B MP-PC-PSI — Partie II (Q5 à Q7) : Recherche exhaustive récursive

Sujet officiel du concours X-ENS, session 2025, épreuve Informatique B MP-PC-PSI. Corrigé rédigé par Ibrahim Alame.

Sujet officiel (PDF, site du concours)

Énoncé

Grille T de taille , sauts par défaut sauts, dictionnaire bonus des sauts activés par les cases bonus (partie I). Tous les sauts vérifient (*) : ou ( et ). Une variable globale INFINI majore tous les entiers manipulés. La recherche exhaustive repose sur la fonction récursive


trouve_complet_rec(T, sauts, bonus, sauts_max, i, j)

qui calcule un chemin de poids minimal partant de , n'atteignant pas forcément , d'au plus sauts_max sauts (l'horizon), et renvoie le couple (poids_min, sauts_min) : son poids et la liste de ses sauts. Avec un horizon assez grand, on obtient un chemin optimal depuis .

Q5. Longueur maximale d'un chemin de à , pour tout ensemble de sauts vérifiant (*) ; exemple de sauts par défaut qui la réalise.
Q6. Écrire trouve_complet_rec et la fonction principale trouve_complet(T, sauts, bonus, sauts_max), qui renvoie (poids, sauts) pour le chemin trouvé depuis ; complexité.
Q7. Expliquer comment éviter de refaire les mêmes calculs en mémorisant les résultats (pour sauts_max fixé) ; complexité obtenue.

La recherche exhaustive d'un chemin optimal est l'appel trouve_complet(T, sauts, bonus, L).

Corrigé

Q5. Ordonnons les cases par l'ordre lexicographique : si , ou et . La condition () dit exactement que : chaque saut fait passer à une case strictement plus grande. Les cases d'un chemin forment donc une suite strictement croissante* pour ; elles sont deux à deux distinctes, il y en a au plus , et le chemin fait au plus sauts. D'où

La borne est atteinte avec les sauts par défaut et aucun bonus : le saut vérifie (*) puisque . Depuis une case avec , seul le saut reste dans la grille ; depuis avec , seul y reste et mène à . Le seul chemin parcourt la grille ligne par ligne, visite les cases et fait sauts (pour : 15 sauts). Vérifié en exécutant Q6 avec ces sauts pour : le chemin trouvé a bien sauts.

Ce que le correcteur attend : le rapport souligne que très peu de candidats ont pensé à un saut dépendant de . Il est pourtant inévitable : un chemin de cases les visite toutes dans l'ordre , donc passe de à par le saut ; pour , des sauts à coordonnées dans ne réalisent jamais . La valeur compte des sauts, puisque l'horizon sauts_max borne la longueur de la liste sauts_min. Si l'on compte les cases, la réponse est .

Q6. Convention. Le chemin exploré depuis s'arrête dans deux cas seulement : il atteint l'arrivée , ou il a épuisé l'horizon. Une branche bloquée avant (aucun saut ne reste dans la grille) ne fournit aucun chemin, et la fonction renvoie alors (INFINI, []). C'est la seule lecture compatible avec la suite du sujet. Si l'on pouvait s'arrêter n'importe où, l'appel avec l'horizon choisirait volontiers un chemin qui s'arrête sur une case négative, ici , au lieu de payer le de l'arrivée (le minimum serait et non ). Accepter seulement les arrêts sur une case sans issue n'est pas mieux : une impasse de poids négatif serait préférée à l'arrivée, et l'appel avec l'horizon ne donnerait plus « la recherche exhaustive d'un chemin optimal » annoncée par le sujet. La partie III, de son côté, a besoin d'un cas d'échec (« ne trouve pas de suite locale »).

100 % gratuit

La suite du corrigé est sur Adloun

Le corrigé rédigé en entier, question par question, et le tuteur pour poser des questions sur ce sujet.

Voir le corrigé complet, gratuitement

Inscription gratuite en 30 secondes (e-mail, nom d'utilisateur, mot de passe, classe ou profil), sans carte bancaire : arrivée directe sur le corrigé.

Toutes les parties de l'épreuve

Corrigé complet gratuit →