Ce que chaque test d'élagage rapporte
Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 14 — Exploration exhaustive et retour sur trace
Énoncé
Sur le problème des reines, comparer trois programmes : (a) poser une reine par colonne sans rien tester et ne vérifier qu'à la fin ; (b) élaguer sur les lignes seulement ; (c) élaguer sur les lignes et les diagonales — le code du cours. Compter les nœuds visités.
Corrigé
Les trois programmes trouvent le même nombre de solutions, ce qui a été vérifié à chaque ligne. Les nœuds visités, eux, mesurés en instrumentant les trois versions :
| solutions | (c) lignes + diag. | (b) lignes seules | (a) aucun élagage | |
|---|---|---|---|---|
| 4 | 2 | 17 | 65 | 341 |
| 6 | 4 | 153 | ||
| 8 | 92 | |||
| 10 | 724 |
Trois lectures de ce tableau.
Le nombre de nœuds de (a) vaut — c'est l'arbre complet des placements. Pour : , et l'on vérifie .
Le test des lignes seul fait passer de à — les arrangements. À , c'est déjà un facteur .
Le test des diagonales apporte encore un facteur à , et à . Il rapporte donc plus que le test des lignes, alors qu'il tient sur la même ligne de code. C'est la leçon : ce n'est pas le nombre de conditions qui compte, c'est leur pouvoir de coupe — et celui-ci croît avec la profondeur à laquelle la condition mord.
Et l'élagage ne change pas la classe : de à , la colonne (c) passe de à , soit un facteur pendant que augmente de . C'est toujours exponentiel — plus lentement, voilà tout.
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.