Aller au contenu
Télécharger l'application

Accueil › MPI › Informatique

MPI · Informatique · semaine 4

Retour sur trace et séparation-évaluation

Exploration exhaustive avancée : retour sur trace, algorithmes par séparation et évaluation, techniques d'évaluation par relaxation.

Sommaire

Le cours

Résumé en cinq points

  1. L'exploration exhaustive parcourt un arbre de solutions partielles, implicite et porté par la pile d'appels. La force brute en visite toutes les feuilles, en 2n2^n ou n!n! cas.
  2. Le retour sur trace explore en profondeur et abandonne une branche dès qu'une contrainte est violée. Le test ne doit jamais rejeter une piste prolongeable, un candidat complet doit être vérifié, et un état mutable doit être restauré au retour.
  3. La séparation et évaluation optimise en comparant une borne optimiste de chaque sous-arbre à la meilleure valeur connue, et élague quand la borne ne permet pas de faire strictement mieux.
  4. La méthode est exacte dès que la borne majore vraiment, pour une maximisation, toutes les solutions admissibles du sous-arbre. Une borne non valide peut faire perdre l'optimum. Une bonne solution initiale gloutonne accélère l'élagage.
  5. Relaxer, c'est retirer des contraintes pour obtenir un problème facile dont l'optimum borne l'optimum cherché : sac à dos fractionnaire, arbre couvrant minimal pour le voyageur de commerce. Le pire cas reste exponentiel, le gain est pratique.
Pourquoi ce chapitre

Beaucoup de problèmes n'ont aucun algorithme efficace connu :

  • placer des reines ;
  • remplir une grille ;
  • choisir des objets sous contrainte de poids ;
  • colorier un graphe.

On ne sait alors faire mieux qu'explorer l'ensemble des solutions possibles. Une exploration naïve est vite impraticable, car cet ensemble a souvent 2n2^n ou n!n! éléments.

On construit les solutions pas à pas et on abandonne dès qu'une piste est sans espoir.

  • Le retour sur trace traite les problèmes de recherche.
  • La séparation et évaluation traite les problèmes d'optimisation, en comparant chaque piste à la meilleure solution déjà trouvée.

Aux concours, on attend :

  • un schéma récursif propre ;
  • une condition d'élagage justifiée ;
  • une borne valide ;
  • un raisonnement de correction.

Classiques et HP

Méthodes et approfondissements du chapitre · le statut est précisé pour MPI.

Classiques et HP réservés

Prolongements et démonstrations de Informatique.

Essayer 7 jours gratuitement Sans engagement · cours, exercices et fiches complets

Fin de l'aperçu gratuit

Encore 15 parties de cours et 12 corrigés.

Essayer 7 jours gratuitement Sans engagement · cours, exercices et fiches complets

Méthodes et exercices

Exercices classiques corrigés

Rangés par thème, du plus simple au plus exigeant. Difficulté et durée indicatives.

Retour sur trace 4

Exercice 1. Toutes les solutions de la somme de sous-ensemble ★

Application du cours · 15 min

un tableau a contient n entiers strictement positifs. Écrire en OCaml une fonction renvoyant tous les ensembles d'indices de somme s.

Voir l'indice

Technique élagage par somme courante et somme restante.

Voir le corrigé offert
  1. Idée. On précalcule r.(i), somme de a.(i) à a.(n − 1). Au niveau i, avec la somme courante t, on abandonne si t > s ou t + r.(i) < s.
  2. Code :
let solutions a s =
  let n = Array.length a in
  let r = Array.make (n + 1) 0 in
  for i = n - 1 downto 0 do r.(i) <- r.(i + 1) + a.(i) done;
  let rec explorer i t choix acc =
    if t > s || t + r.(i) < s then acc
    else if i = n then List.rev choix :: acc
    else
      explorer (i + 1) (t + a.(i)) (i :: choix)
        (explorer (i + 1) t choix acc)
  in
  explorer 0 0 [] []
  1. Au niveau n, r.(n) = 0, donc les tests imposent t = s : la vérification finale est incluse.
  2. Complexité : O(n) de précalcul, puis au plus 2n+1 − 1 nœuds en temps constant, hors construction des listes renvoyées.

piège : Appliquer « t > s » à des entiers de signe quelconque (exemple 2 de la section 3).

Exercice 2. Taille de l'arbre des permutations ★

Application du cours · 10 min

on énumère les permutations de n éléments en choisissant successivement un élément non utilisé. Compter les nœuds de l'arbre.

Voir le début du corrigé
  1. Un nœud de profondeur k est une suite injective de k éléments : il y en a n!/(n − k)!.

La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.

Exercice 3. Les n reines avec un état mutable ★★

Classiques de khôlle et concours · 20 min

compter les solutions des n reines avec trois tableaux de booléens (colonnes, deux familles de diagonales) pour tester une case en temps constant.

Voir le début du corrigé
  1. Idée. Une reine en (i, c) occupe la colonne c, l'antidiagonale i + c et la diagonale i − c, décalée de n − 1 pour être positive. …

La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.

Exercice 4. Coloriage en k couleurs ★★

Classiques de khôlle et concours · 20 min

un graphe non orienté de sommets 00 à n−1n - 1 est donné par listes d'adjacence voisins.

Décider s'il est coloriable avec kk couleurs.

Voir le début du corrigé
  1. Idée. On colorie dans l'ordre. …

La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.

Séparation et évaluation 3

Exercice 5. Séparation et évaluation sur un sac à dos ★★

Classiques de khôlle et concours · 25 min

W=10W = 10, objets (poids, valeur) A(3,9),B(4,10),C(5,11),D(2,3),\begin{aligned} A &(3, 9), \\ B &(4, 10), \\ C &(5, 11), \\ D &(2, 3),\end{aligned} de rapports 33, 2,52{,}5, 2,22{,}2 et 1,51{,}5.

Dérouler la méthode en profondeur, branche « avec » d'abord, borne fractionnaire arrondie à l'entier inférieur.

Voir le début du corrigé
  1. Glouton 0-1 : A, B (poids 7), C ne rentre pas, D rentre (poids 9). …

La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.

Exercice 6. Validité de la borne ★★

Classiques de khôlle et concours · 15 min

prouver que la séparation et évaluation renvoie l'optimum.

Montrer qu'elle reste correcte en élaguant quand borne <M< M, et qu'elle devient fausse en élaguant quand borne <M+1< M + 1 avec des valeurs réelles.

Voir le début du corrigé
  1. Preuve de la section 2 : un nœud du chemin vers s* est développé, ou élagué avec valeur(s*) ≤ borne ≤ M.

La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.

Exercice 7. Meilleur d'abord ★★

Classiques de khôlle et concours · 15 min

les nœuds en attente sont dans une file de priorité par borne décroissante.

On s'arrête dès que la plus grande borne en attente est au plus MM.

Justifier l'arrêt et comparer la mémoire au parcours en profondeur.

Voir le début du corrigé
  1. Invariant : toute solution admissible de valeur strictement supérieure à M est dans le sous-arbre d'un nœud en attente. …

La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.

Optimisation sur graphes 2

Exercice 8. Clique maximale ★★

Classiques de khôlle et concours · 25 min

un graphe est donné par une matrice d'adjacence booléenne.

Calculer la taille d'une plus grande clique par séparation et évaluation, avec la borne ∣C∣+∣P∣,|C| + |P|, où CC est la clique courante et PP la liste des sommets adjacents à tous ceux de CC.

Voir le début du corrigé
  1. Toute clique prolongeant C s'écrit C ∪ Q avec Q inclus dans P : la borne est valide.

La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.

Exercice 9. Voyageur de commerce, du 1-arbre à la borne exacte ★★★

Approfondissement · 30 min

quatre villes, avec d(1,2)=1,d(1,3)=4,d(1,4)=3,d(1,2) = 1, \quad d(1,3) = 4, \quad d(1,4) = 3, d(2,3)=2,d(2,4)=5d(2,3) = 2, \quad d(2,4) = 5 et d(3,4)=1d(3,4) = 1.

Comparer la borne par arbre couvrant minimal à une borne plus fine :

arbre couvrant minimal sur {2,3,4}\{2, 3, 4\} plus les deux plus courtes arêtes issues de 11.

Voir le début du corrigé
  1. Les tournées sont 1-2-3-4-1 (7), 1-2-4-3-1 (11) et 1-3-2-4-1 (14). …

La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.

Fiche de cours rédigée à partir du programme officiel d'informatique MP2I/MPI (2021), partie Algorithmique, rubrique « Exploration exhaustive ». Le retour sur trace, vu en première année, est repris ici. La séparation et évaluation et l'évaluation par relaxation relèvent de la deuxième année.