Adloun

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 ) :

Graphemarquage à l'ajoutmarquage 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 cours du chapitre · Tous les exercices du chapitre