620 likes | 941 Views
Algorithmes d’exploration. Luc Lamontagne PLT 3990 luc.lamontagne@ift.ulaval.ca Tiré du matériel de Brahim Chaib-draa (A09). Planification de trajectoire. Représentation continue (espace des configurations). Discrétisation. Recherche dans un graphe (blind, best-first, A*). Le contenu de
E N D
Algorithmes d’exploration Luc LamontagnePLT 3990luc.lamontagne@ift.ulaval.ca Tiré du matériel de Brahim Chaib-draa (A09)
Planification de trajectoire Représentation continue (espace des configurations) Discrétisation Recherche dans un graphe (blind, best-first, A*) Le contenu de cette section
Recherche dans un graphe environnement représentation discrète représentation par graphe
Plan • Agent de résolution de problèmes • Stratégies de recherche • Recherche non-informée • Largeur d’abord, profondeur d’abord, etc. • Recherche informée • Meilleur d’abord, A*, etc. • Quelques exemples
Rappel - Agent basé sur les buts Capteurs Agent Comment le monde est maintenant? État Comment le monde évolue? Comment sera le monde si je fais l’action A? Environnement Quel est l’impact de mes actions? Quelle action dois-je faire maintenant? Buts Effecteurs Goal-based agent
Agent basé sur les buts : Agent de résolution de problèmes • Formulation d’un but: • Un état à atteindre. • Formulation du problème: • Les états et les actions à considérer. • Exploration de solution: • Examiner les différentes séquences d’actions menant à un état but; • Et choisir la meilleure. • Exécution: • Accomplir la séquence d’actions sélectionnées.
Exemple de formulation de problèmes : Planification de route
Exemple de formulation de problèmes : Planification de route • On est à Arad et on veut aller à Bucharest • Problème: • États : villes • Actions : aller d’une ville à une autre. • But : • Être à Bucharest • Solution : • Une séquence de villes. • Par ex. Arad, Sibiu, Fagaras, Bucharest • Coût : • Distance entre les deux villes (en km) • Environnement simple • statique, observable, discret et déterministe
Exemple de formulation de problèmes : 8-puzzle 5 7 3 • États : • Positions des huit tuiles dans les cases. • État initial : • Les huit tuiles dans n’importe quelle case. • Actions : • Déplacement du trou • droite, gauche, haut, bas. • Test de but : • Un état qui correspond à l’état final. • Coût : • Chaque action coûte 1. 1 8 4 2 6 État initial 1 2 3 5 6 4 7 8 État but
Exemple de formulation de problèmes : 8-reines • États • Une configuration de 0 à 8 reines sur l’échiquier. • État initial • Aucune reine sur l’échiquier. • Actions • Ajouter une reine sur une case vide. • Test de but • Les 8 reines sont placés sur l’échiquier sans attaque. • Coût • Chaque action coûte 1 (sans intérêt!).
Exploration de solutions dans un arbre • Exloration obtenue par simulation • On simule l’exploration de l’espace d’états en générant des successeurs pour les états déjà explorés. • Exploration de type hors-ligne (offline)
Exploration de solutions dans un arbre • Simuler l’exploration de l’espace d’états en générant des successeurs pour les états déjà explorés. • Nœud de recherche • État: l’état dans l’espace d’état. • Nœud parent: Le nœud dans l’arbre de recherche qui a généré ce nœud. • Action: L’action qui a été appliquée au parent pour générer ce nœud. • Coût du chemin: Le coût g(n) du chemin à partir de l’état initial jusqu’à ce nœud. • Profondeur: Le nombre d’étapes dans le chemin à partir de l’état initial.
Stratégies d’exploration • Détermine l’ordre de développement des nœuds. • Explorations non informées • Aucune information additionnelle. • Elles ne peuvent pas dire si un nœud est meilleur qu’un autre. • Elles peuvent seulement dire si l’état est un but ou non. • Explorations informées (heuristiques): • Elles peuvent estimer si un nœud est plus prometteur qu’un autre.
Évaluation des stratégies • Complétude: • Est-ce que l’algorithme garantit de trouver une solution s’il y en a une? • Optimalité: • Est-ce que la stratégie trouve la solution optimale? • Complexité en temps: • Combien de temps pour trouver une solution? • Complexité en espace: • Quelle quantité de mémoire a-t-on besoin?
Complexité • Elle est exprimée en utilisant les quantités suivantes • B : le facteur de branchement • c.-à-d. le nombre maximum de successeurs à un nœud. • D : la profondeur du nœud but le moins éloigné. • M : la longueur maximale d’un chemin dans l’espace d’états. • Complexité en temps • le nombre de nœuds générés pendant la recherche. • Complexité en espace • le nombre maximum de nœuds en mémoire.
Stratégies d’exploration non informées • Largeur d’abord (Breath-first - BFS) • Coût uniforme (Uniform-cost - UFS) • Profondeur d’abord (Depth-first - DFS) • Profondeur limitée (Depth-limited - DLS) • Itérative en profondeur (Iterativedeepening - IDS) • Bidirectionnelle (Bidirectionalsearch)
Largeur d’abord (BFS) • Approche • Développer tous les noeuds au niveau i • Développer par la suite tous les nœuds au niveau i+1 • Et ainsi de suite… • Implémenté à l’aide d’une file. • Les nouveaux successeurs vont à la fin.
B B C C G D D E E F F G Exemple largeur d’abord A A File: B C D E F G Ordre de visite: A – B – C – D – E – F - G
Propriétés de largeur d’abord • Complétude : oui, si b est fini • Complexité en temps : O(bd) • 1 + b + b2 + b3 + … + bd = O(bd) • Complexité en espace : O(bd) • Garde tous les nœuds en mémoire • Optimal : non en général. • Oui si le coût des actions est le même pour toutes les actions
Coût uniforme (UCS) • Développe le nœud ayant le coût le plus faible. • g(n) := coût du nœud initial au nœud développé. • File triée selon le coût. • Si le coût des actions est toujours le même • Équivalent à largeur d’abord !
Coût uniforme (UCS) 99 80 310 177 278
Coût uniforme • Complète : oui, si le coût > e • Complexité en temps : nombre de nœuds avec g(n) ≤ coût(solution optimale) O(b1+ C*/ ϵ) où C* est le coût de la solution optimale. • Complexité en espace :même que celle en temps • Optimal : oui • Les nœuds sont développés en ordre de g(n).
Profondeur d’abord (DFS) • Développe le nœud le plus profond. • Implémenté à l’aide d’un pile. • Les nouveaux nœuds générés vont sur le dessus.
A B B C C D D E E H H I I J J K K Exemple profondeur d’abord A Pile: H D I J B E K C Ordre de visite: A – B – D – H – I – E – J – K - C
Propriétés de profondeur d’abord • Complétude : • Non si la profondeur est infinie, s’il y a des cycles. • Oui, si on évite les états répétés ou si l’espace de recherche est fini. • Complexité en temps : O(bm) • Très mauvais si m est plus grand que d. • Mais si les solutions sont denses, il peut être beaucoup plus rapide que largeur d’abord. • Complexité en espace : O(bm), linéaire • Optimal : Non
Profondeur limitée (DLS) • L’algorithme de profondeur d’abord, mais avec une limite de l sur la profondeur. • Les nœuds de profondeur l n’ont pas de successeurs. • Complétude : Seulement si l > d • Complexité en temps : O(bl) • Complexité en espace : O(bl), linéaire • Optimal : Non!
A B B C C D D E E H I J K Exemple profondeur limité Limite l = 2 A Pile: D B E C Ordre de visite: A – B – D – E - C
Itérative en profondeur (IDS) • Profondeur limitée, mais en essayant toutes les profondeurs: 0, 1, 2, 3, … • Évite le problème de trouver une limite pour la recherche profondeur limitée. • A les avantages de largeur d’abord (complète et optimale), • Mais a la complexité en espace de profondeur d’abord. • Donc une combinaison des deux stratégies.
17 24 21 20 10 12 13 14 11 8 7 6 1 5 3 4 9 2 25 26 22 23 18 19 16 15 Exemple - itérative en profondeur A Limite: 3 Limite: 1 Limite: 0 Limite: 2 C B D E F G H I J K L M N O Ordre de visite: A – A – B – C – A – B – D – E – C – F – G – A – B – D – H – I – E – J – K – C – F – L – M – G – N – O
Propriétés itérative en profondeur • Complétude: Oui • Complexité en temps: • (d+1)b0 + db1+ (d-1)b2 + bd = O(bd) • Complexité en espace: O(bd) • Optimal? • Oui, si le coût de chaque action est de 1. • Peut être modifiée pour une stratégie de coût uniforme.
Stratégie de recherche non-informées : Sommaire • Dans ce tableau: • b est le facteur de branchement; • d est la profondeur du but le - profond; • m est la profondeur max; • l est la profondeur limite
Répétition d’états • La répétition d’états fait perdre du temps • Dans le pire cas, la recherche tourne en rond dans les cycles créés. • Détection de répétitions • Normalement faite en comparant les nouveaux nœuds aux nœuds déjà développés. • Avant d’éliminer le nouveau nœud • On doit vérifier s’il est meilleur que le nœud que l’on a déjà.
Stratégies d’exploration informées • Stratégies d’exploration non informées • Ne sont pas très efficaces dans la plupart des cas. • Elles ne savent pas si elles approchent du but. • Stratégies d’exploration informées • Elles utilisent une fonction d’estimation • Fonction heuristique. • Pour choisir les nœuds à visiter.
Stratégies d’exploration informée • Meilleur d’abord (BFS - Best-first) • Meilleur d’abord gloutonne (Greedy best-first) • A* (A-Star) • Algorithmes heuristiques à mémoire limitée • IDA*, RDFS et SMA* • Par escalade (Hill-climbing) • Par recuit simulé (Simulatedannealing) • Exploration locale en faisceau (Local beam) • Algorithmes génétiques
Exemple d’exploration: Voyage en Roumanie (avec coûts en km)
Meilleur d’abord A • L’idée principale • Utiliser une fonction d’évaluation • Estimer l’intérêt des nœuds • Développer le nœud le plus intéressant. • Le nœud à développer est choisi selon une fonction d’évaluation f(n) • Une composante importante de ce type d’algorithme est une fonction heuristique h(n) • Elle estime le coût du chemin le plus court pour se rendre au but. • Deux types de recherche meilleur d’abord • Meilleur d’abord gloutonne. • A* f(B)= g(B) + h(B) g(B) B h(B) . . . but
Meilleur d’abord gloutonne • f(n) = h(n) • Donc on choisit toujours de développer le nœud le plus proche du but.
329 Timisoara 374 Zerind 253 Sibiu 366 Arad 176 Fagaras 380 Oradea 193 Rimnicu Vilcea 253 Sibiu 0 Bucharest Exemple meilleur d’abord gloutonne Arad 366 But atteint, l’exploration arrête.
Propriétés - Meilleur d’abord gloutonne • Complétude : Non • Car elle peut être prise dans des cycles. • Mais oui, si l’espace de recherche est fini avec vérification des états répétés. • Complexité en temps : O(bm) • Mais une bonne fonction heuristique peut améliorer grandement la situation. • Complexité d’espace : O(bm) • Elle retient tous les nœuds en mémoire. • Optimale : Non • Elle s’arrête à la première solution trouvée.
A* (A-star) • Fonction d’évaluation: f(n) = g(n) + h(n) • g(n) : coût du nœud de départ jusqu’au nœud n • h(n) : coût estimé du nœud n jusqu’au but • f(n) : coût total estimé du chemin passant par n pour se rendre au but. • A* utilise une heuristique admissible • c’est-à-dire h(n) ≤h*(n) • h*(n) est le véritable coût pour se rendre de n au but. • Demande aussi que : • h(n) ≥ 0, et que • h(G) = 0 pour tous les buts G.
Timisoara Zerind 447 = 118 + 329 393 = 140 + 253 Sibiu 449 = 75 + 374 Arad Fagaras Oradea Rimnicu Vilcea 415 = 239 + 176 413 = 220 + 193 646 = 280+ 366 671 = 291 + 380 Craiova Pitesti Sibiu 417 = 317 + 100 Sibiu Bucharest 526 = 366 + 160 553 = 300 + 253 591 = 338 + 253 450 = 450 + 0 Bucharest Craiova Rimnicu Vilcea 418 = 418 + 0 615 = 455 + 160 607 = 414 + 193 But atteint, la recherche arrête. Exemple A* 366 = 0 + 366 Arad
Propriétés de A* • Complétude : Oui • À moins qu’il y est une infinité de nœuds avec f≤f(but). • Complexité de temps : Exponentielle • Selon la longueur de la solution. • Complexité en espace : Exponentielle • Selon la longueur de la solution. • Elle garde tous les nœuds en mémoire. • Optimale : Oui • Habituellement, on manque d’espace longtemps avant de manquer de temps.
Exploration heuristique à mémoire limitée • A* est parfois trop gourmand en mémoire. • Il existe des algorithmes pour surmonter ce problème dont: • IDA*; • RBFS; • SMA*. • Ces algorithmes permettent de préserver l’optimalité et la complétude. • L’augmentation du temps d’exécution est raisonnable.