Adloun

La sous-structure optimale en défaut, sur un exemple de cinq arêtes

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 17 — Programmation dynamique

Énoncé

Le chapitre affirme que la sous-structure optimale est fausse pour les plus longs chemins simples. Construire le plus petit contre-exemple qu'on puisse dessiner, et dire ce qui casse exactement.

Corrigé

Quatre sommets, cinq arêtes non orientées : , , , et .

Énumération complète des chemins simples (aucun sommet répété), longueur en nombre d'arêtes :


plus long chemin simple 0 -> 2 : 3 aretes, 0-1-3-2  (et 0-3-1-2)
plus long chemin simple 0 -> 1 : 3 aretes, 0-3-2-1

Ce qui casse. Le plus long chemin simple de à est . Son préfixe de à est le chemin , de longueur . Or le plus long chemin simple de à est , de longueur . Un sous-chemin d'un plus long chemin simple n'est donc pas un plus long chemin simple : la sous-structure optimale est en défaut, et sur quatre sommets.

Pire : on ne peut pas non plus recoller. Le plus long () et le plus long () ne se composent pas — leur concaténation repasse par , et , et n'est plus un chemin simple.

La leçon, et elle est générale. La contrainte « simple » est globale : elle porte sur le chemin entier, pas sur ses morceaux. Or la programmation dynamique suppose que le sous-problème se pose indépendamment du reste. C'est cette indépendance qui manque, et c'est pourquoi aucune récurrence sur « le plus long chemin de à » ne peut être correcte. Pour la rendre correcte, il faudrait mettre l'ensemble des sommets déjà visités dans l'état — ce qui donne sous-problèmes, et c'est exactement l'idée du dernier problème de ce chapitre, sur le voyageur de commerce. La sous-structure ne s'obtient qu'en payant l'exponentielle.

Pour les plus courts chemins, au contraire, aucune contrainte globale n'intervient : un sous-chemin d'un plus court chemin est un plus court chemin (chapitre chap:parcours), et tout fonctionne.

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.