Adloun

Corrigé CCINP 2025 Informatique PC-PSI — Partie III.3 (Q29 à Q34) : Dijkstra bidirectionnel : déroulement, critère d'arrêt et correction partielle

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

Sujet officiel (PDF, site du concours)

Énoncé

On mène deux recherches de Dijkstra (fonctions cherche_min et unpas de la partie III.2) : forward depuis le départ (variables aVisiterF, dejaVisitesF, distanceF) et backward depuis l'arrivée (aVisiterB, dejaVisitesB, distanceB) ; distanceF et distanceB associent à chaque sommet un couple (distance, prédécesseur), distance initialement infinie, sauf pour le départ (resp. l'arrivée). On note , les distances courantes et

avec initialement et . À chaque étape : si , on s'arrête et l'on renvoie ; sinon on fait une étape forward (cherche_min puis unpas avec les variables F) si , backward si , et en cas d'égalité du côté dont la liste à visiter est la plus courte (forward si elles ont même longueur) ; puis on recalcule , , .

Figure 3 — Graphe (rappel).

Q29. Sur , de a vers f : compléter la dernière ligne du tableau du DR des étapes (sens F ou B, valeurs de et pour chaque sommet).
Q30. Renvoyer dès qu'un sommet a été atteint par les deux recherches donne-t-il le chemin minimal ?
Q31. Compléter dijkstra_bidirectionnel(graph, Sd, Sf) : lignes 4 et 5 (initialisation backward), 13 (condition du while), 21, 22 (calculs de Fmin, Bmin, de la forme min([...[v][0] for v in aVisiterF if v in distanceF])) et 23 (L = [... for v in distanceB if v in distanceF], puis BFmin = min(L)).

On note la distance minimale entre deux sommets. On admet la correction de Dijkstra : pour tout sommet visité, la distance calculée est exacte, et les sommets non visités sont plus loin que les sommets déjà visités. Par l'absurde, supposons que l'algorithme se termine et qu'un chemin du départ à l'arrivée ait une longueur .

Q32. Montrer que chaque est dans dejaVisitesF ou dans dejaVisitesB.
Q33. En déduire un indice tel que ait été visité par la recherche forward et par la recherche backward.
Q34. En déduire la correction partielle de l'algorithme.

Corrigé

Q29. Déroulement (les valeurs , , sont celles recalculées en fin d'étape) :

Au test suivant, : l'algorithme s'arrête et renvoie , la bonne distance (Q25). Tableau des étapes, chaque case donnant ; la dernière ligne (étape 4) est celle à compléter sur le DR :

ÉtapeSens, sommetabcdef
0initialisation
1F, a
2B, f
3B, e
4B, d

Prédécesseurs à la dernière ligne : forward, a pour b, c, d ; backward, d pour a, b, c, e pour d, f pour e. La valeur est réalisée en d : a–d (forward) puis d–e–f (backward). Ce tableau a été obtenu en exécutant la fonction complétée de Q31 avec un print à chaque étape.

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 →