Vous êtes sur la page 1sur 29

` Resolution de problemes par recherche Recherche en Intelligence Articielle Profondeur dabord/Largeur dabord Recherche de graphes Recherche heuristique: A*

Algorithmes de recherche en intelligence articielle ` Un grand nombre de problemes IA ne sont pas species par une procedure effective, mais par des ` ` criteres de succes. Par exemple: inference logique: chercher une inf erence qui remplit les conditions buts.

planication: chercher la bonne s equence


doperateurs pour atteindre un but.

conception: chercher une structure qui atteint les


specications. casse-tetes: trouver les op erations pour remettre en ordre le Rubics cube. Dans ce cas, on doit rechercher la solution parmi un ensemble dalternatives algorithmes de recherche.

` Elements dun systeme de recherche

Noeuds de recherche Fonction de successeur


` ` Critere de succes

Noeud de recherche Decrit lenvironnement courant Exemples:

ensemble des buts dans un syst a chanage eme `


` arriere

solution abstraite: structure partiellement d ee etaill


qui permet potentiellement datteindre les specications. solution partielle: etat intermediaire du Rubiks cube

Fonction de generation de successeurs succ(n) = liste des noeuds atteignables de n Exemples: inference logique: application des r` egles dans un moteur dinference. planication: generation des situations atteignables par application des actions disponibles. conception: elaboration de details dune structure. casse-tete: completer la solution partielle dun casse-tete.

` ` Critere de succes La recherche commence avec un ou plusieurs noeuds initiaux, et se termine avec un noeud qui remplit la condition de terminaison, appel le noeud nal. ee Le noeud initial et la fonction de successeurs succ(n) denissent un espace de recherche. Il sagit dun graphe dirige dont les arcs repr esentent les noeuds atteignables par la fonction succ(n). Un algorithme de recherche effectue une exploration ` ` locale du graphe de maniere a trouver la solution avec un temps de calcul minimal. Normalement, on cherche une seule solution.

Graphe de recherche

succ(n) Noeud final (but) Noeud initial n

algorithmes generaux pour trouver le noeud nal dans un temps minimal

Exemple: inference logique

7x+xy = (x+y)z

noeud initial

x(7+y) = (x+y)z

7x+xy = xz+yz 7x+xyyz = xz

x(7+yz) = yz

7xxz = yzyx

x = yz/(7+yz) noeud but

7xxz = y(zx)

Loptimalite dans la recherche La solution peut etre: a) le noeud nal: par exemple, dans un syst` eme dinference ou de conception. b) le chemin au noeud nal: par exemple, dans un ` systeme de planication. Surtout dans le cas b), la notion du cout est importante: le chemin doit etre le plus court possible. ` Pour cela, on associe a chaque noeud un cout, qui est la somme des couts des transitions entre le noeud initial et le noeud nal. Il existe des algorithmes qui garantissent loptimalit de la solution trouv e ee.

La recherche en profondeur dabord (DFS) Espace de recherche consider comme arbre invers e e: 1

3 6

Profondeur dabord (Depth-rst): ` expansion du premier noeud trouv jusqua ce quil e ny a plus de successeurs. ` retour en arri` (backtrack): retour a un niveau ere superieur et essai de la prochaine possibilit e. Avantage: peu de memoire requise: liste des noeuds ouverts et de leurs successeurs encore non explor es.
10

La recherche en largeur dabord (BFS)


Couche 0 Couche 1 1

Couche 2

Largeur dabord (breadth-rst): g eration de larbre en de recherche couche par couche. Trouve toujours le chemin le plus court. Exige beaucoup de memoire pour stocker toutes les ` alternatives a toutes les couches.

11

Algorithmes Profondeur dabord:

1.Q (Noeud initial) 2.loop 3. si Q est vide, return ECHEC 4. n premier lment de Q e e 5. si n est un noeud but, retourne n 6. S succ(n) 7. Q append(S, reste de Q)
Largeur dabord: echanger lordre dans le pas 7:

7. Q append(reste de Q, S)

12

Recherche en profondeur limit (DLS) ee Faiblesse de la recheche en largeur dabord: exige une quantite de memoire exponentielle. pas corrigeable! Faiblesse de la recherche en profondeur dabord: peut ` descendre tres loin dans un chemin inutile. ` limiter a une profondeur maximale l.: ` pour tout noeud a profondeur l, on ne ` considere pas ses successeurs. Comment choisir la limite l?

13

Iterative Deepening

l2
repeat

solution DLS(l) l l+1 until solution = {}


` Si solution a profondeur l, lalgorithme a explor tous e les espaces de profondeur l, l 1, ..., 2. Pour un nombre de noeuds c(l) totale est:
l i=2 l

= bl , la complexite

c(i) = = b

bi b

i=2 l2 l i i=0

b < 2bl < b b1


l

si b

complexite pas plus que doublee


14

La recherche de graphes Un meme noeud peut etre atteint par plusieurs chemins duplication du travail:
x=a(b+c)-x-ab x=ab+ac-x-ab x=ac-x =cycle! 2x=ac =! 2x=ac 2x=a(b+c)-ab 2x=ab+ac-ab

15

Recherche avec detection de cycles

1.Q Noeud initial 2.C vide 3.loop 4. si Q est vide, retourne chec e 5. n premier lment de Q , e e Q reste(Q) 6. si n est un noeud but, retourne n 7. si n nest pas membre de C alors ` 8. ajouter n a C 9. S succ(n) 10. Q append(S, Q) 11. nsi 12.n

16

Exemple dune recherche


a e b d c f g i l h n k

Recherche en profondeur dabord: abfgh Recherche en largeur dabord: a {b,c,d} {f,g,h,i,l,k}

17

La recherche heuristique ` Supposons quon cherche a minimiser le cout de la solution.

guider la recherche pour garantir que la solution est


optimale. ` Chaque chemin menant a un noeud n a un cout g(n). Approche: guider la recherche pour explorer dabord les solutions les plus prometteuses. Cela peut etre exprime par une fonction heuristique: ` h(n) = estimation du cout minimal a partir du noeud n jusquau but. Si g(n) = cout du chemin jusquau noeud n, alors: f(n) = g(n) + h(n) est une estimation du cout du chemin optimal qui passe par n.

privil egier lexploration des noeuds dont la valeur de


f(n) est basse.
18

Lalgorithme A*

1.Q noeud initial 2.C vide 3.loop 4. si Q est vide, retourne chec e e e 5. n premier lment de Q, Q reste(Q) 6. si n est un noeud but, retour avec succ`s et n e 7. si n C ou a un cot infrieur alors u e 8. ajouter n ` C a 9. S succ(n) 10. S sort(S,f) 11. Q merge(Q,S,f) (Q trie par ordre croissant e de f(n) = g(n) + h(n)) 12. nsi 13.n
19

Exemple dune recherche heuristique


a(10) 7 b(12) 8 10 f(7) 3 g(4) i(4) 5 h 4 3 l(1) 1 3 n 8 5 c(4) 7 d(5) 4 3 5 k(2) 2 1 m(1) 2 e(4)

Ordre de lexploration: (a(10)) (d(8),c(12),b(19))

(k(9),l(10),c(12),i(14),b(19))

(m(10),n(11),c(12),i(14),e(16),b(19)) (n(10),c(12),i(14),e(16),b(19))
(l(9),m(10),c(12),i(14),e(16),b(19)) solution!

20

Loptimalite de la solution de A* Les performances de A* dependent beaucoup de la fonction heuristique. Si la fonction heuristique est toujours h(n)

= 0, on

explore les noeuds dans lordre de leur cout: la solution optimale est garantie. Lorsque lalgorithme doit choisir entre deux noeuds n et n, si la fonction h(n) surestime le vrai cout h (n) restant dun certain noeud n, on peut avoir:

g(n)+h(n)<g(n)+h(n) (>g(n)+h (n))


meme si le cout total du chemin par n est moins important que celui par n:

g(n)+h (n)>g(n)+h (n)

lalgorithme pourrait sarr avec la solution n qui eter


est sous-optimale! On peut prouver que A* trouve toujours la solution optimale tant que h(n) sous-estime le vrai cout jusquau noeud nal.
21

Limitations de memoire ` La queue Q de A* peut devenir tres longue Idees:

Beam Search: garder les n meilleurs noeuds


seulement, jamais explorer les autres.

Iterative Deepening A : effectuer un depth-rst


search jusqu` un certain seuil de la fonction a devaluation. Attention: on ne peut augmenter le ` seuil quen tres petits incr ements!

Memory-bounded A : techniques pour oublier et


regenerer des noeuds.

22

Le traitement de cycles ` Quand on trouve un nouveau chemin a un noeud n, ` deja visite, il se peut que le chemin est meilleur: 1. si n navait pas encore ete etendu: ` mettre a jour son cout, chemin et position dans Q. ` ` 2. si n avait deja ete etendu ( C): mettre a jour les successeurs de n dans Q. e Exemple: chemin d l remplac par d k l Si h(k) = 4, on aurait etendu l avant de trouver le meilleur chemin par k.

23

` Le critere de monotonicite Pour eviter le r earrangement encombrant du graphe de recherche, il serait souhaitable que lalgorithme trouve ` toujours dabord le meilleur chemin a un noeud. Cela peut etre garanti par la restriction de monotonicite:

h(n1 ) h(n2 ) c(n1 , n2 )


= la difference entre les fonctions heuristiques de deux noeuds ne doit jamais depasser le cout n ecessaire ` pour passer de lun a lautre. les chemins ne doivent jamais etre revises.

24

Profondeur/Largeur dabord... A* peut simuler lalgorithme de profondeur dabord:

g(n) = 0, h(n) = < ordre dans succ(n) >


A* peut aussi simuler lalgorithme de largeur dabord:

g(n) = < longueur du chemin >, h(n) = 0

le comportement de A* se trouve entre les deux


algorithmes.

25

Temps de calcul dun algorithme de recherche Temps minimal Temps maximal ` longueur du chemin a la solution exploration de tout le graphe

Depend uniquement de lordre de lexploration! ` tres imprevisible

26

Temps de calcul moyen 3 cas:

beaucoup doptions, beaucoup de noeuds naux: probabilite elevee de tomber sur une solution temps de calcul faible peu doptions, pas de noeuds naux: graphe de recherche petit parcours complet en peu de temps beaucoup doptions, un seul noeud nal: parcourir la moiti du graphe e temps de calcul eleve

27

Transitions de phase

temps

|options|

classication des algorithmes selon la forme de la


courbe.

28

Resume Les algorithmes de recherche sont une technologie de base importante en Intelligence Articielle. Recherche darbres en profondeur dabord: utilise peu de memoire, mais peut rater la solution optimale. Recherche darbres en largeur dabord: gourmande en memoire, mais trouve toujours la solution optimale. Recherche de graphes avec detection de cycles. Recherche heuristique: A* peut trouver la solution ` optimale de maniere efcace.

29

Vous aimerez peut-être aussi