Adloun

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
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.

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.