Adloun

Exploration exhaustive et retour sur trace

Cours · informatique (MP2I/MPI), chapitre 14 · MP2I et MPI · le début du chapitre, la suite sur Adloun

Le retour sur trace : une solution au problème des quatre reines, trouvée en essayant puis en revenant en arrière.

14.1 Quand on ne sait rien de mieux

Les quatre chapitres qui suivent celui-ci — diviser pour régner, gloutons, programmation dynamique — sont des méthodes : elles exploitent une structure du problème pour éviter d'en examiner toutes les solutions. Ce chapitre traite du cas où l'on n'a pas cette chance : il faut les examiner.

Le programme donne à ces chapitres un objectif commun, et il est ambitieux : « donner des outils de conception d'algorithmes et parvenir à ce que les étudiants puissent, dans une situation simple, sélectionner une stratégie pertinente par eux-mêmes et la mettre en œuvre de façon autonome ».

14.2 La force brute

Définition 14.1Recherche par force brute

Énumérer toutes les solutions candidates, tester chacune, garder celles qui conviennent. C'est toujours correct, et c'est presque toujours trop lent.

Exemple 14.2Le coût de l'exhaustif, en trois ordres de grandeur
Ce qu'on énumèreNombre
Les sous-ensembles de objets
Les permutations de objets
Les mots de longueur sur

À un milliard d'opérations par seconde, la première ligne passe d'un millième de seconde à dix-huit minutes quand double ; la deuxième était déjà hors de portée à . Retenez cet écart : il justifie à lui seul tout le reste du livre.

Exemple 14.3Énumérer les sous-ensembles par leurs bits

Un sous-ensemble de se code par un entier de bits : le bit vaut si l'élément est pris.


/* Énumère les 2^n sous-ensembles de {0, ..., n-1}. Précondition : 0 <= n < 31. */
for (int masque = 0; masque < (1 << n); masque = masque + 1) {
    for (int i = 0; i < n; i = i + 1) {
        if ((masque >> i) % 2 == 1) { /* l'élément i est dans ce sous-ensemble */ }
    }
}

Deux boucles, aucune récursion, aucune structure : c'est la manière la plus courte d'être exhaustif sur les parties d'un ensemble. Le coût est .

Exercices du chapitre

La suite du cours · Tous les exercices du chapitre