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
- Ce que la structure refuse de faire corrigé
- La faute qui sépare au lieu d'unir corrigé
- La borne est atteinte corrigé
- Le rang ment, et c'est voulu corrigé
- Combien d'arbres couvrants minimaux ? corrigé