Vous êtes sur la page 1sur 13

30/11/2019

UNIVERSITE De La Manouba
Ecole Supérieure de Commerce de Tunis

Plan du cours
 Introduction à l’IA

 Technique générales de représentation de problèmes

 Algorithmes de recherche Aveugle

 Algorithmes de recherche Heuristique


M1 IDIAG
 Raisonnement par contraintes
Année Académique 2018-2019
 Connaissances et raisonnements

 Systèmes à base de règles, systèmes experts

 Raisonnement probabiliste
Dr. Inès BENJAAFAR
ines.benjaafar@gmail.com  Raisonnement à partir de Cas

 Apprentissage automatique

Sources
Les transparents de ce cours sont basés sur les transparents
des cours suivants :
Belaid. A, Cours Algorithmes de recherche Heuristique,
Université Nancy 2
M1 IDIAG
http://jul.andre.free.fr/Cavaliers/cours3_RechHeuristique.
Année Académique 2018-2019 pdf
Kabanza. F, Cours recherche heuristique, Département
d’informatique, Université de Sherbrooke,
planiart.usherbrooke.ca/kabanza/cours/ift615
Dr. Inès BENJAAFAR
ines.benjaafar@gmail.com

3 4

Exemple : trouver chemin dans


Plan ville
Trouver un chemin de la 9e ave & 50e rue à la 3e ave et 51e rue

Méthodes de recherche heuristique (Illustration par Henry Kautz, U. of Washington)


"Best-First-Search" 53e rue
"Greedy Search " 52e rue
Algorithme A*
G
51e rue
variantes de A*: IDA* et SMA*
S
"Hill climbing" 50e rue
10e ave

9e ave

8e ave

3e ave
7e ave

6e ave

5e ave

4e ave

2e ave

5 6
30/11/2019

Exemple : trouver chemin dans


ville Exemple : Google Maps
Trouver un chemin de la 9e ave & 50e rue à la 3e ave et 51e rue
(Illustration par Henry Kautz, U. of Washington)
53e rue
52e rue
G
51e rue
S
50e rue
10e ave

9e ave

8e ave

3e ave
7e ave

6e ave

5e ave

4e ave

2e ave

7 8

Exemple : livrer des colis Exemple : navigation d’un robot


p1 p2 p3 p4

O3

O1 O2

c1 robot c2

9 10

Exemple : N-Puzzle Plan


Méthodes de recherche heuristique
2 8 3 ? 1 2 3
"Best-First-Search"
1 6 4 8 4
7 5 7 6 5 "Greedy Search "
Algorithme A*
variantes de A*: IDA* et SMA*
Nord Nord Ouest Sud Est
2 3 2 1 2 3 1 2 3
"Hill climbing"
2 8 3 2 8 3 3
1 6 4 1 4 1 8 4 1 8 4 8 4 8 4
7 5 7 6 5 7 6 5 7 6 5 7 6 5 7 6 5

11 12
30/11/2019

Méthodes de recherche Méthodes de recherche


heuristique heuristique
Les méthodes de recherche : Les algorithmes de recherche aveugle ou "non-informés"
– n'exploitent aucune information présente dans l'arbre de recherche
Les algorithmes de recherche aveugle ou "non-informés" pour optimiser la recherche

– mènent une recherche systématique à travers l'espace jusqu'à


Les algorithmes de recherche heuristique
trouver une solution

– ne peuvent pas résoudre beaucoup de problèmes réels à cause de la


complexité de leurs espaces d’états

13 14

Méthodes de recherche
heuristique Fonction heuristique
Les algorithmes de recherche heuristique Une fonction heuristique : h : E → R
– utilisent l'information disponible pour rendre le processus de – fait correspondre à un état s ∈ E (espace d'états) un nombre h(s) ∈ R
recherche plus efficace qui est (généralement) une estimation du rapport coût/bénéfice de
suivre un chemin vers la solution qui passe par l’état s dans E
– une information heuristique est une règle ou une méthode qui – Propriété : h(solution) = 0
permet d’évaluer la probabilité qu’un chemin allant du nœud courant
au nœud solution soit meilleur que les autres
Exemple :
Le nœud A a 3 successeurs pour lesquels:
h(s1) = 0.8 h(s2) = 2.0 h(s3) = 1.6
la poursuite de la recherche par s1
est heuristiquement la meilleure

15 16

Fonction heuristique Fonction heuristique


Exemples de fonctions heuristiques : puzzle-8 Autre exemple : déplacement d’un robot

h(n) = nombre de plaquettes mal


placées = 6

h(n) = somme des distances (Manhattan)


de chaque plaquette à sa position finale
=3+1+3+0+2+1+0+3
= 13

17 18
30/11/2019

Plan Best-First search


Combinaison entre recherche en profondeur et en largeur
Méthodes de recherche heuristique
en profondeur :
"Best-First-Search"
– avantage : solution trouvée sans avoir besoin de calculer tous les
"Greedy Search " nœuds
Algorithme A* en largeur :
variantes de A*: IDA* et SMA* – avantage : ne risque pas de rester pris dans un "cul-de-sac ", à
chaque pas il prend en considération tous les successeurs d’un nœud
"Hill climbing"
pour déterminer l’ensemble h(n)

l'algorithme "Best-First search" permet d'explorer les nœuds


dans l'ordre (croissant/décroissant) de leurs valeurs
heuristiques
19 20

Best-First search Best-First search


Exemple : problème des ponts de Königsberg
– La ville de Königsberg est sur 2 îles. Elle est reliée à la terre ferme par
sept ponts. On doit tracer un itinéraire partant d'un point quelconque de
la ville et permettant de traverser une et une seule fois chacun des sept
ponts pour revenir au point de départ. Le problème consiste à déterminer
Idée : étendre le nœud le plus prometteur selon sa valeur s'il existe un chemin ne passant qu'une seule fois par chaque ligne du
heuristique graphe associé à ce problème

Queuing-Fn = insérer les successeurs dans l'ordre (dé)croissant de


leur valeur heuristique

Cas particuliers de "best-first search"


– greedy search (recherche gourmande)
– A*
21 22

Best-First search Best-First search


Problème des ponts de Königsberg
Problème des ponts de Königsberg – La façon classique de résoudre ce problème est par l'utilisation de la théorie
– Représentation du problème en graphe d’états de graphes

– Dans cette théorie, il est prouvé que pour pouvoir faire le tour en utilisant
tous les arcs (ponts) une seule fois, il faut que chaque nœud possède un
nombre pair d'arcs (Euler)

– Or ce n'est pas le cas dans ce graphe

– Ainsi, la réponse est qu'il n'y a pas de solution possible à ce problème

 Prouvez ce résultat en construisant l’espace d’états et en montrant qu’il n’y


a pas de chemin possible
23 24
30/11/2019

Best-First search Best-First search


Solution : problème de ponts de Königsberg
Solution : problème de ponts de Königsberg
– La recherche explore l'espace d'états pour tenter de trouver une – On voit bien qu’il n’y a pas de chemin possible
solution

– Pour ce problème, on trouve une solution si en partant de l'état de


départ (X, X, {}), on arrive à un état (X, X, {1,2,3,4,5,6,7})

– La question est de savoir si cela est possible

– Pour cela, il faut essayer tous les points de départ possibles

– Prenons d'abord R1 comme le point de départ, on a la structure


partiellement développée suivante
25 26

Best-First search : cas particulier Plan


Recherche gourmande (Greedy Search) Méthodes de recherche heuristique
– Stratégie la plus simple du BFS "Best-First-Search"
h(n) = estimation du coût du nœud n au but "Greedy Search "
– Consiste à minimiser le coût estimé pour atteindre le but Algorithme A*
le nœud qui semble être le plus proche du but sera étendu en priorité variantes de A*: IDA* et SMA*
– Fonctions heuristiques classiques "Hill climbing"
• distance à vol d'oiseau
• distance "Manhattan" : somme des déplacements élémentaires
horizontaux et verticaux

27 28

Greedy Search Greedy Search


Exemple : voyage en Roumanie Distance directe (vol
d’oiseau) à Bucarest

29 30
30/11/2019

Greedy Search Greedy Search


Exemple : voyage en Roumanie
– La solution
Exemple : voyage en Roumanie
h(n) = distance à vol d'oiseau Arad > Sibiu > Fagaras > Bucarest
– les nœuds sont étiquetés avec leurs n'est pas optimale; elle est de 32 km plus longue que
valeurs heuristique Arad > Sibiu > Rimnicu > Pitesti > Bucarest
car "greedy search" ne considère pas la distance déjà parcourue !
– Stratégie :
toujours enlever le plus grand morceau du coût restant pour atteindre
le but (greedy = gourmand), c.à.d minimiser le coût estimé pour
atteindre la solution
– relativement efficace, quoique pas toujours optimal
• susceptible de faux départ
– Exemple : pour aller de Iasi à Fagaras, Greedy-Search considère Neamt
avant Vaului, même si c'est un cul-de-sac
31 32

Greedy Search Greedy Search


Exemple : puzzle-8 (taquin) Exemple : puzzle-8 (taquin)
h(n) = nombre de plaquettes mal placées h(n) = Σ déplacements des plaquettes

33 34

Propriétés de Greedy search Fonction heuristique admissible


Greedy search minimise le coût estimé h(n) du noeud n au but réduisant
ainsi considérablement le coût de la recherche, mais il n'est pas optimal et
pas complet (en général)
l'algorithme de recherche en coût uniforme minimise le coût g(n) depuis
l'état initial au nœud n, il est optimal et complet, mais pas très efficace

idée: combiner les deux algorithmes et minimiser le coût total f(n) du


chemin passant par le nœud n
f(n) = g(n) + h(n)

Théorème : une fonction heuristique est admissible (qui ne surestime


jamais le coût réel) si
∀ n 0 ≤ h(n) ≤ h*(n) avec h*(n) = coût optimal réel de n au but, alors
une fonction heuristique admissible est toujours optimiste!

35 36
30/11/2019

Fonction heuristique admissible Plan


Exemple : puzzle-8 Méthodes de recherche heuristique
"Best-First-Search"
"Greedy Search "
Algorithme A*
h1(n) = nombre de plaquettes mal placées = 6 est admissible variantes de A*: IDA* et SMA*
h2(n) = somme des distances de chaque plaquette au but = 13 est admissible
"Hill climbing"
h3(n) = (somme des distances de chaque plaquette au but)
+ 3 x (somme de la fonction score de chaque plaquette)
= 3+1+3+0+2+1+0+3 + 3x(2+ + 2+0+2+2+2+2) = 49
n'est pas admissible

37 38

Algorithme A* Algorithme A*
Soit la fonction d'évaluation – L’ heuristique dans A* estime le coût total du chemin entre
f(n) = g(n) + h(n) l’état initial et l’état solution qui passe par n : = f(n)
avec: – On remarque qu’il s’agit d’une estimation f(n) obtenue par
g(n) = coût du meilleur chemin jusqu'à n la somme :
h(n) = une fonction heuristique admissible • d’une valeur exacte g(n) issue du chemin parcouru de l’état initial
h(n) ≤ h*(n) où h*(n) est le vrai coût pour aller de n jusqu’au noeud n
vers un état final • et d’une estimation h(n) du coût du chemin optimal qui lie le nœud
n avec le nœud solution

L'algorithme "greedy search" avec la fonction f(n) est appelé : – Pour chaque nœud exploré n, on va étendre le successeur x
algorithme de recherche A* qui minimise la fonction heuristique f()
• f(x) = min {f(s) / s dans Successeurs( n )}

39 40

Algorithme A* Algorithme A*
Exemple : recherche d'un chemin entre deux villes Exemple : recherche d'un chemin entre deux villes
Considérons le problème suivant : Développement
nous devons nous rendre de la ville s à la – Initialement, l'unique chemin pouvant
ville t en passant par le plus court chemin être développé est constitué du nœud
– Nombres associés aux divers racine s
segments = distances physiques séparant – Nous avons le choix entre les
les villes adjacentes nœuds a et e
– Nombres encadrés = estimations h(n) – On obtient :
du chemin qu'il reste à parcourir • f(a) = 2 + 5 = 7
à partir de chaque ville • f(e) = 2 + 7 = 9
– Nous choisissons le nœud a car
• f(a) < f(e)
– L'ensemble des chemins candidats est maintenant composé de
• [s] et [s; a]
41 42
30/11/2019

Algorithme A* Algorithme A*
Exemple : recherche d'un chemin entre deux villes Exemple : Voyage en Roumanie
Arbre de recherche
– Nous pouvons maintenant
développer soit [s; a] vers b,
soit [s] vers e
• f(b) = 4 + 4 = 8
• f(e) = 2 + 7 = 9
– C'est b qui a la plus petite
valeur, c'est donc vers ce
nœud que nous nous dirigeons
– L'exécution se poursuit ainsi
jusqu'a obtention de la solution optimale
• [s; e; f; g; t]

43 44

Algorithme A* Algorithme A*
Exemple : puzzle-8
– f(n) = g(n) + h(n)
– h(n) = nombre de
plaquettes mal placées
– g(n) = longueur du
chemin parcouru (+1 à
chaque niveau)

45 46

Algorithme A* Algorithme A*
Exemple : navigation robotique Exemple : navigation robotique
– Conduire le robot de la case de départ (verte) à la case d’arrivée (rouge) en Premier cas :
utilisant uniquement les cases blanches et en se déplaçant de case en case – f(n) = h(n), avec h(n) = distance de Manhattan = somme des déplacements
unitaires verticaux et horizontaux
• Si on s’éloigne de l’origine, on ajoute 1
• Si on se rapproche de l’origine, on enlève 1

47 48
30/11/2019

Algorithme A* Complétude et optimalité de A*


Exemple : navigation robotique Affirmation
Deuxième cas : S'il existe un chemin allant de l'état initial au but, A* (sans
– f(n) = g(n)+h(n), avec h(n) = distance de Manhattan élimination des états multiples) se termine et trouve le meilleur
– Ex : 0 + 11 : 11=distance de l’origine à l’arrivée chemin
• Donc A* est :
– Complet
– Optimal

49 50

Qualité des fonctions


Propriétés de A* heuristiques
Complétude Oui sauf s'il y a un nombre infini de noeuds
avec une valeur de f ≤ f(G)
Complexité en temps exponentielle
Complexité en espace garde tous les nœuds en mémoire

Optimalité Oui

51 52

Comparaison d'algorithmes de
recherche Dominance
Soient 2 fonctions heuristiques admissibles h1(n) et h2(n)

Si h2(n) ≥ h1(n) ∀n alors on dit que h2 domine h1 et produira


une recherche plus efficace

exemples de coûts typiques de recherche (cf. tableau):


d = 14 IDS = 3'473'941 états
A* (h1) = 539 états
• Comparaison des coûts de recherche (mesurés en nombre de nœuds A* (h2) = 113 états
produits) et des facteurs de branchement effectif pour IDS et A* avec les
fonctions heuristiques h1 et h2
d = 24 IDS = beaucoup trop d'états
• Données moyennées sur 100 instances du puzzle-8 pour diverses valeurs de A* (h1) = 39'135 états
d A* (h2) = 1'641 états

53 54
30/11/2019

Qualité des fonctions


heuristiques Plan
Exercice
– Écrire l’algorithme puis le programme permettant de faire Méthodes de recherche heuristique
passer le robot de la position verte à la position rouge, en "Best-First-Search"
utilisant : "Greedy Search "
– f(n)=g(n)+h(n) où
Algorithme A*
h(n)= distance à vol d’oiseau
– Paramétrez votre programme par : variantes de A*: IDA* et SMA*
• la position des obstacles et "Hill climbing"
les positions de début et fin
du robot
Coût d'un pas horizontal/vertical = 1
Coût d'un pas en diagonale = √2

55 56

Meilleur d'abord incrémental


Variantes de A* IDA*
Les problèmes réels sont souvent très complexes Rappel :
– L'espace de recherche devient très grand – IDS effectue l'approfondissement par rapport à la profondeur limite de
– Même les méthodes de recherche heuristiques deviennent recherche (L = 0, 1, 2, 3, ….)
inefficaces
IDA*
A* connaît alors des problèmes de place-mémoire – Quant à lui, utilise comme limite de l'horizon de recherche la valeur de la
 D’où la recherche d’algorithmes "économes" en place fonction heuristique f(n)
mémoire – Chaque itération de IDA* est une recherche en profondeur qui étend tous les
noeuds à l'intérieur d'un contour délimité par la valeur courante de flimite en
2 variantes de A* : regardant par dessus cette limite pour savoir où se trouvera la prochaine valeur
– IDA* = A* avec approfondissement itératif de flimite
– SMA* = A* avec gestion de mémoire IDA* est :
– complet et optimal
– complexité en place de IDA*: O(bd)

57 58

Meilleur d'abord incrémental Meilleur d'abord incrémental


IDA* IDA*
Exemple : Exemple :

59 60
30/11/2019

Variante de IDA* Variante de IDA*


Meilleur d'abord récursif Meilleur d'abord récursif
– On fait un parcours en profondeur récursif – Lorsqu'on arrive à une situation où tous les nœuds
Lorsqu'on fait l'expansion d'un nœud n, on identifie la valeur best = f(n) successeurs de n ont une valeur f(n) supérieure à celle de la
du meilleur nœud parmi les autres nœuds ouverts
valeur best qui lui est associée, on remonte
Pour ce faire, on identifie la plus petite valeur f(n) parmi ses
nœuds frères • En remontant, on met à jour la valeur f(n) en la remplaçant par celle de
son meilleur fils
Si cette valeur est plus petite que la valeur best associée au parent
de n, c'est elle qu'on choisit, sinon on conserve la valeur best du • Si un des frères de n a une valeur f(n) plus petite que la
parent valeur best du parent de n, on étend ce nœud, sinon on
remonte

61 62

SMA* (Simplified Memory- SMA* (Simplified Memory-


Bounded A*) Bounded A*)
SMA* effectue sa propre gestion de la mémoire Exemple
Principe : – Chaque noeud est
– si la mémoire (file d'attente) est pleine, alors faire de la place en éliminant étiqueté avec sa valeur
le nœud le moins intéressant (celui avec une valeur f élevée) de f=g+h
– retenir dans le nœud-ancêtre la valeur du meilleur descendant oublié
– les noeuds-solutions
sont D, F, I, J
il évolue dans un espace-mémoire alloué par avance
– Objectif : trouver le
il évite les états dupliqués
noeud-solution de
il est complet si l'espace-mémoire alloué est suffisant pour contenir le
moindre coût avec un
chemin-solution le moins profond
espace-mémoire
il est optimal si l'espace-mémoire alloué est suffisant pour contenir le
chemin-solution optimal le moins profond capable de contenir au
dans tous les cas il retourne la meilleure solution accessible étant donné maximum 3 noeuds
l'espace-mémoire alloué
63 64

SMA* (Simplified Memory-


Bounded A*) Plan
Exemple
Méthodes de recherche heuristique
"Best-First-Search"
"Greedy Search "
Algorithme A*
variantes de A*: IDA* et SMA*
"Hill climbing"

65 66
30/11/2019

Recherche Locale Recherche Locale


Idée de cette recherche Convient surtout aux problèmes où seul l'état final nous
intéresse
– Souvent, le chemin qui mène vers une solution n'est pas important – On ne conserve qu'un seul état en mémoire
– L'état lui-même est la solution  soit le nœud courant
 Utile pour des problèmes d'optimisation
– Idée :
– On considère tous les nœuds successeurs du nœud courant qui
Modifier l'état en l'améliorant au fur et à mesure constituent le voisinage

– On choisit un de ces nœuds qui deviendra le nœud courant

– On répète le processus jusqu'à l'obtention de l'état désiré

67 68

Recherche Locale L’algorithme Hill Climbing


Les algorithmes dédiés Principe
– Ascension/descente de gradient (hill climbing) – L’algorithme de recherche "Hill Climbing" se base sur le principe de
choisir le noeud suivant comme étant le noeud le plus proche de la
– Descente de gradient stochastique
solution
– Recuit simulé (Simulated annealing) – L’idée est relativement triviale et peut être illustrée par le fait de choisir le
– Recherche en faisceau (Beam search) chemin le plus court pour gravir une colline
– Recherche en faisceau stochastique – En contrepartie, cette technique comprend d’importants défauts qu’il ne
– Algorithmes génétiques faut pas manquer de prendre en considération
– Par exemple, l’algorithme échoue dans le cas où il existe des maxima
locaux dans l’espace de recherche, mais qui ne font pas partie de la
solution
– C’est pourquoi l’utilisation de cet algorithme est restreinte à un petit
nombre de problèmes et applications

69 70

L’algorithme Hill Climbing Descente de gradient


Problème
– On est coincé à un moment de la résolution dans un minimum
local (situation locale)
– On cherche à s’en sortir en donnant un coup de pousse

Idée :
– On utilise une fonction h(n) qu'il faut minimiser
On calcule h(n') pour tous les nœuds n’ successeurs du nœud courant n
On choisit le nœud n' qui minimise h(n') et tel que h(n')< h(n)

71 72
30/11/2019

Descente de gradient Descente de gradient


Exemple : problème des 8-reines Explications
– On choisit comme coût heuristique h le nombre de paires de reines qui – Ici, seulement 2 reines sont en conflit : 4 et 7
s'attaquent

1 2 3 4 5 6 7 8

73 74

Descente de gradient Descente de gradient


Explications Méthode
Les chiffres dans chaque case indiquent – Faire avancer la reine, le long de sa colonne, dont le nombre de paires de conflit est le
– Ici, il y a 17 cas de prise : le nombre de cas de conflits créé en plus petit pour toutes les reines
mettant la reine de la colonne sur cette
case – Dans la configuration ci-contre, on a le choix entre 2 possibilités :
1. 1-2 avec h=13 concernant les reines 4 et 5
10. 4-5
2. 1-3 – On calcule après déplacement les
11. 4-6
3. 1-5 nombres de conflits autour de la
12. 4-7 reine déplacée
4. 2-3
13. 5-6 – Si le nombre de conflits total ne
5. 2-4
14. 5-7 baisse pas autour de la reine, on
6. 2-6
15. 6-7 revient en arrière pour choisir un
7. 2-8
16. 6-8 autre minimum
8. 3-5
17. 7-8
9. 3-7
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

75 76

Vous aimerez peut-être aussi