Adloun

informatique (MP2I/MPI) · Chapitre 23 · Exercice de TD

Les deux naïves, chiffrées

Unir & trouver, arbres couvrants · niveau 2

Énoncé

On prend et l'on exécute les unions unir(0,1), unir(1,2), …, unir(998,999).

  • Combien de cases la première mise en œuvre naïve (tableau de classes) lit-elle en tout ?
  • Quelle forêt la seconde produit-elle, et que coûte alors trouver(0) ?

Corrigé

1. Chaque unir balaye le tableau entier, soit lectures ; il y en a . Le total mesuré est de 999 000 lectures — c'est-à-dire, à un facteur près, . Sur le procédé serait injouable.

2. La seconde naïve écrit p.(trouver p x) <- trouver p y. Déroulons : unir(0,1) donne ; unir(1,2) donne ; et ainsi de suite, . La forêt est un peigne de profondeur , enraciné en . Sur , la profondeur mesurée est bien de , et trouver(0) coûte autant de remontées.

Le point commun aux deux : chacune est optimale pour une opération et catastrophique pour l'autre. La suite d'unions ci-dessus est le pire cas des deux à la fois, ce qui est instructif : elle n'a rien d'exotique — c'est simplement l'ordre naturel dans lequel on lit une liste d'arêtes.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre