Adloun

L'ordre des boucles de Floyd-Warshall : le contre-exemple minimal

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 19 — Parcours de graphes et plus courts chemins

Énoncé

Le chapitre affirme que la boucle sur doit être la plus externe, et que la placer à l'intérieur « produit un résultat faux, sans le moindre signe ». Construire le plus petit contre-exemple.

Corrigé

Il tient en quatre sommets et trois arcs, tous de poids : , , .

Mesures, première ligne de la matrice () :


ordre (k, u, v) -- k EXTERNE :   0   1   3   2
ordre (u, v, k) -- k INTERNE :   0   1  inf  2
ordre (u, k, v)              :   0   1   3   2

Avec à l'intérieur, reste inf : l'algorithme ne trouve pas le chemin , qui existe pourtant et vaut .

Pourquoi. Avec interne, la case est traitée une seule fois, et définitivement. Pour , il faudrait déjà connaître ; or est traité après , puisque . Le chemin est découvert trop tard, et la case n'est plus jamais reconsidérée. Le graphe a été choisi pour cela : ses arcs remontent les indices puis redescendent, ce qui interdit tout ordre de découverte compatible avec un balayage unique.

L'ordre est faux lui aussi, même s'il donne le bon résultat ici. La recherche exhaustive sur les petits graphes en trouve un contre-exemple à quatre sommets et trois arcs : , , . Un ordre qui passe un test n'est pas un ordre correct : il n'y a qu'un seul ordre juste, et c'est celui que porte la démonstration.

Ce qui rend externe correct, et c'est toute la récurrence : le tour suppose la matrice entièrement calculée, et produit entièrement. Les deux boucles internes balayent une matrice complète, et l'on peut le faire en place parce que et — un chemin optimal passant par n'a aucune raison de repasser par . C'est ce lemme, et lui seul, qui autorise à écraser la matrice, et c'est aussi lui qui tombe si l'on déplace la boucle.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.