informatique (MP2I/MPI) · Chapitre 19 · Exercice de TD
Marquer au retrait : chiffrer ce que cela coûte
Parcours de graphes et plus courts chemins · niveau 2
Énoncé
Le chapitre met en garde : il faut marquer un sommet au moment de l'ajouter à la réserve, jamais au moment de le retirer. Chiffrer précisément le coût de la mauvaise version : combien de fois un sommet entre-t-il dans la réserve ?
Corrigé
Mesures (nombre total d'entrées dans la réserve, parcours en largeur depuis ) :
| Graphe | marquage à l'ajout | marquage au retrait | ||
|---|---|---|---|---|
| celui de l'exercice précédent | ||||
| (complet) | ||||
| (biparti complet) |
La colonne de droite vaut systématiquement .
La borne, et sa démonstration. Chaque insertion de est provoquée par le traitement d'un voisin , donc par une arête . Une même arête ne peut servir deux fois : une fois retiré et marqué, il n'est plus jamais traité. Le nombre total d'insertions est donc au plus (la source comprise). C'est atteint sur les graphes ci-dessus, où tout sommet a des voisins encore non marqués au moment où on l'examine.
Ce que cela coûte réellement. La réserve contient éléments au lieu de : c'est la mémoire qui explose, pas le temps. Sur , la file monte à éléments au lieu de . Le temps reste , puisque chaque insertion est en et qu'il y en a .
Une nuance sur l'affirmation du chapitre. Le chapitre écrit « la complexité pourrait exploser — jusqu'à ». La mesure ne le confirme pas : même en supprimant tout test avant l'empilement, on plafonne à insertions ( mesurées sur , pour ). Le surcoût est un facteur , pas un carré. Cela n'affaiblit pas la règle : marquer à l'ajout reste la seule écriture correcte, et la raison en est la mémoire. Mais elle mérite d'être dite juste.
Exercices semblables
- Le parcours en profondeur itératif n'est pas le récursif corrigé
- Bicolorabilité par un parcours en largeur corrigé
- Combien d'insertions dans la file de priorité ? corrigé
- Poids négatifs : ajouter une constante ne sauve rien corrigé
- L'ordre des boucles de Floyd-Warshall : le contre-exemple minimal corrigé