Adloun

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

Ce que chaque test d'élagage rapporte

Exploration exhaustive et retour sur trace · niveau 2

É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
421765341
64153
892
10724

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.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre