570 likes | 835 Views
Algorithmes de recherche informés (heuristiques). Chap. 4. Plan. Best-first search Greedy best-first search A * search Heuristics Local search algorithms Hill-climbing search Simulated annealing search Local beam search Genetic algorithms. Rappel: Recherche dans l’arbre.
E N D
Plan • Best-first search • Greedy best-first search • A* search • Heuristics • Local search algorithms • Hill-climbing search • Simulated annealing search • Local beam search • Genetic algorithms
Rappel: Recherche dans l’arbre • Une stratégie de recherche est définie par l’ordre d’expansions de noeuds choisi
Recherche meilleur-d’abord • Idée: utiliser une fonction d’évaluation f(n) pour chaque nœud • estimer la « désirabilité » • selon les caractéristiques du nœud (état), et non seulement la topologie de l’espace • Expansion du nœud non exploré le plus désirable • Implantation: Ordonner les nœuds dans la frange dans l’ordre décroissant de désirabilité • Cas spéciaux: • Recherche meilleur d’abord glouton • Recherche A*
Recherche meilleur-d’abord vorace(Greedy best-first search) • Fonction d’évaluation f(n) = h(n) (heuristique) • = estimation du coût de n à but • e.g., hSLD(n) = distance en ligne droite de n à Bucharest • Recherche meilleur-d’abord vorace développe le nœud qui paraît le plus proche du but • Algorithme: • Tant que current ≠goal & il y a des nœuds suivants: Sélectionner h(best_next), Aller à best_next
Propriétés de la recherche meilleur-d’abordglouton • Complète? Non – peut être coincé dans un boucle, e.g., Iasi Neamt Iasi Neamt • Temps?O(bm), mais une bonne heuristique peut beaucoup améliorer ça • Espace?O(bm) – garde tous les nœuds en mémoire (potentiellement) • Optimal? Non
Recherche A • Idée: faire une estimation du chemin complet (du nœud initial jusqu’à un but) • Fonction d’évaluation f(n) = g(n) + h(n) • g(n) = coût jusqu’à présent pour atteindre n • h(n) = coût estimé de n à un but • f(n) = coût total du chemin passant par n à un but • C’est une fonction plus complète que celle utilisé dans Meilleur-d’abord glouton
Heuristiques admissibles • Une heuristique h(n) est admissible si pour chaque noeudn, h(n) ≤ h*(n), où h*(n) est le vrai coût pour atteindre un but à partir de n. • Une heuristique admissible nesurestime jamais le coût pour atteindre au but, i.e., elle est optimiste • Exemple: hSLD(n) (ne surestime jamais la vraie distance en route) • Théorème: Si h(n) est admissible, A utilisant TREE-SEARCH est optimal • Un algorithme A admissible est un algorithme A*.
Optimalité de A* (proof) • Supposons qu’un but non optimal G2a été généré et inséré dans la frange. Soit n un noeud non exploré dans la frange qui fait partie du chemin le plus court (optimal) menant au but optimal G. • f(G2) = g(G2) car h(G2) = 0 • g(G2) > g(G) car G2 est suboptimal • f(G) = g(G) car h(G) = 0 • f(G2) > f(G) à partir de ci-dessus
Optimalité de A* (proof) • Supposons qu’un but non optimal G2a été généré et inséré dans la frange. Soit n un nœud non exploré dans la frange qui fait partie du chemin le plus court (optimal) menant au but optimal G. • f(G2) > f(G) à partir de ci-dessus • h(n) ≤ h*(n) puisque h est admissible • g(n) + h(n) ≤ g(n) + h*(n) • f(n) ≤ f(G) Donc f(G2) > f(n), et A* ne va jamais sélectionner à développer G2 pour terminer l’algorithme
Heuristiques consistantes • Une heuristique est consistante si pour chaque nœud n, chacun de ses successeurs n' générés par une action, h(n) ≤ c(n,a,n') + h(n') • Si h est consistante, nous avons f(n') = g(n') + h(n') = g(n) + c(n,a,n') + h(n') ≥ g(n) + h(n) = f(n) • i.e., f(n) est non-décroissante en suivant un chemin quelconque. • Théorème: si h(n) est consistante, A* utilisant GRAPH-SEARCH est optimal
Optimalité de A* • A*développe les noeudsdansl’ordre croissant de f • Ajoutegraduellement des "f-contours" de noeud • fi< fi+1: faugmente • Un contour iencercletous les noeuds avec f ≤ fi,
Propriétés de A* • Complète? Oui (à moins qu’il y a un nombre infini de nœuds avec f ≤ f(G) ) • Temps? Exponentiel • Espace? Garde tous les nœuds en mémoire • Optimal? Oui
Heuristiques admissibles E.g., Pour 8-puzzle: • h1(n) = nombre de tuiles mal placés • h2(n) = distance Manhattan totale (i.e., nb. de carrées pour arriver à la place désirée pour chaque tuile) • h1(S) = ? • h2(S) = ?
Heuristiques admissibles E.g., Pour 8-puzzle: • h1(n) = nombre de tuiles mal placés • h2(n) = distance Manhattan totale (i.e., nb. de carrées pour arriver à la place désirée pour chaque tuile) • h1(S) = ? 8 • h2(S) = ? 3+1+2+2+2+3+3+2 = 18
Dominance • Si h2(n) ≥ h1(n) pour tout n (supposons que les 2 sont admissibles) • Alors h2domineh1 • h2est meilleure pour la recherche • Coûts typiques de recherche (nb. moyen de nœuds explorés) : • d=12 IDS = 3,644,035 nodes A*(h1) = 227 nœuds A*(h2) = 73 nœuds • d=24 IDS = trop de nœuds A*(h1) = 39,135 nœuds A*(h2) = 1,641 nœuds
Problèmes relaxés • Un problème a généralement des contraintes sur les actions • Si on enlève une ou plusieurs de ces contraintes, on a un problème relaxé • Le coût pour une solution optimale du problème relaxé est admissible pour le problème original • Si les règles du jeu de 8-puzzle sont relaxées pour qu’on puisse placer un tuile n’importe où, alors h1(n) donne la solution du chemin le plus court • Si les règles sont relaxées pour qu’un tuile puisse bouger vers un carré adjacent, alors h2(n) donne le chemin le plus court
Fonctions heuristiques côut optimal réel heuristique 2 heuristique 1 0 (h0) • h2 domine h1
F-contour h2 h1 h0
En pratique • Tous les problèmes ne nécessitent pas toujours la solution optimale • On se contente souvent d’une solution « acceptable » • Difficulté de trouver une heuristique admissible « tractable » (temps, espace) • Le problème est assez petit et on n’a pas à le faire très souvent • … • On utilise souvent un algorithme non optimal • On peut aussi surestimer le coût parfois (non admissible), mais l’estimation reste assez proche du réel
Fonctions heuristiques surestimation 2 coût optimal réel heuristique 1 0 (h0)
Des variantes • Borne de mémoire autorisée • IDA* (iterativedeepning A*): augmente graduellement f-cost et recommencer à partir du Start • SMA* (Simple Memory-bounded A*): s’il n’y a plus assez de mémoire pour insérer de nouveaux candidats, retirer les nœuds les moins intéressants et remplacer par leur parents si nécessaire
SMA* function SMA*(problem) returns a solution sequence inputs: problem, a problem static: Queue, a queue of nodes ordered by f-cost Queue MAKE-QUEUE({MAKE-NODE(INITIAL-STATE[problem])}) loop do ifQueue is empty then return failure n deepest least-f-cost node in Queue if GOAL-TEST(n) then return success s NEXT-SUCCESSOR(n) if s is not a goal and is at maximum depth then f(s) else f(s) MAX(f(n),g(s)+h(s)) if all of n’s successors have been generated then update n’s f-cost and those of its ancestors if necessary if SUCCESSORS(n) all in memory then remove n from Queue if memory is full then delete shallowest, highest-f-cost node in Queue remove it from its parent’s successor list insert its parent on Queue if necessary insert s in Queue end
A A 12 13 A 0+12=12 10 8 B G B G 10+5=15 8+5=13 15 13 10 10 8 16 C D H I A A A 20+5=25 16+2=18 15[15] 15[24] 20[24] 20+0=20 A 8 10 10 8 8 15 B B G E F J K 15 20[] 24[] 30+5=35 30+0=30 24+0=24 24+5=29 B G I D 15 24 C 25 24 20 Simple Memory-bounded A* (SMA*) (Exemple avec une mémoire de 3 nœuds) Progress of SMA*. Eachnodeislabeledwithitscurrentf-cost. Values in parentheses show the value of the best forgotten descendant. Searchspace A f = g+h = goal 13[15] A 12 G 13 B 15 18 H 24+0=24 Algorithmcan tell youwhen best solution foundwithin memory constraintis optimal or not.
Algorithmes de recherche locale • Dans beaucoup de problèmes d’optimisation, le chemin pour arriver au but n’est pas pertinente. Tout ce qui importe est l’état solution lui-même. • Espace d’états = ensemble complet de configurations • Trouver une configuration qui satisfait les contraintes e.g., n-reines • Dans ce cas, on utilise des algorithmes de recherche locale • Principe: Garder un seul état, et tenter de l’améliorer
Exemple: n-reines • Mettre n reines dans un échiquier n × n sans que les reines s’attaquent départ état suivant …
Recherche Hill-climbing • Comme grimper l’Everest dans un brouillard épais avec amnésie
Hill-climbing • Problème: Selon le point de départ, peut être coincé à un maximum local
Hill-climbing : problème de 8-reines • h = nombre de paires de reines qui s’attaquent • h = 17 pour la configuration montrée
Hill-climbing : problème de 8-reines • Un minimum local, avec h = 1
Recherche avec recuit simulé (Simulatedannealing) • Idée: échapper le maximum local en permettant d’aller à une moins bonne place, mais graduellement diminuer la probabilité (fréquence) de faire ceci
Propriétés du recuit simulé • On peut prouver que: si T diminue suffisamment lentement, alors le recuit simulé va trouver l’optimum global avec une probabilité proche de 1 • Plus T diminue lentement, plus c’est probable de trouver la solution optimale • Et si T ne diminue pas? • Largement utilisé pour corriger le problème de recherche locale (VLSI layout, airlinescheduling, etc)
20 18 14 10 6 2 5 10 15 20 Simulated Annealing Solution Quality The schedule determines the rate at which the temperature is lowered If the schedule lowers T slowly enough, the algorithm will find a global optimum High temperature T is characterized by a large portion of accepted uphill moves whereas at low temperature only downhill moves are accepted T= 100 – t*5 Probability > 0.9 => If a suitable annealing schedule is chosen, simulated annealing has been found capable of finding a good solution, though this is not guaranteed to be the absolute minimum.
Recherche locale en faisceau (Beam search) • Garder k états candidats plutôt qu’un seul • Commencer avec k états aléatoires • À chaque itération, tous les successeurs de k états sont générés • Si un d’eux est un état but, arrêt; • sinon sélectionner k meilleurs successeurs à partir de la liste et répéter le processus
Beam Search • Overcomes storage complexity of Best-First-Search • Maintains the k best nodes in the fringe of the search tree (sorted by the heuristic function) • When k = 1, Beam search is equivalent to Hill-Climbing • When k is infinite, Beam search is equivalent to Best-First-Search • If you add a check to avoid repeated states, memory requirement remains high • Incomplete, search may delete the path to the solution.
Search Performance 8-Square Heuristic 1: Tiles out of place Heuristic 2: Manhattan distance h1 = 7 h2 = 2+1+1+2+1+1+1+0=9 => Choice of heuristic is critical to heuristic search algorithm performance.
Algorithmes génétiques • Un successeur est généré en combinant les deux états parents • Commencer avec k états générés aléatoirement (population) • Un état esr représenté comme une chaîne sur un alphabet infini (souvent une chaîne de 0 et 1) • Fonction d’évaluation (fitness function). Valeur plus grande pour de meilleurs états • Produire la prochaine génération d’états avec les opérations de sélection, croisement et mutation • Sélection: choisir entre les 2 parent • Croisement: combiner les caractéristiques des parents • Mutation: modifier certaine caractéristique
Algorithmes génétiques • Fonction de Fitness : nb. de paires de reines qui ne s’attaquent pas (min = 0, max = 8 × 7/2 = 28) • Probabilité de sélection • 24/(24+23+20+11) = 31% • 23/(24+23+20+11) = 29% etc