Vous êtes sur la page 1sur 28

FONDEMENT DE L’IA

Chapitre 3 :
Recherche dans les arbres
(Méthode de recherche aveugles)

Ali Ben Mrad

A.U : 2020/2021 ISAAS 2ème LIG


Passage d’un graphe à un arbre
2

Soit un graphe G ayant un état initial I et un état final F.


La transformation de ce graphe en un arbre doit respecter les règles
suivantes :
 I et F sont respectivement l’état initial et l’état final
 Jamais de retour en arrière (pas de cycle)
 Les boucles sont interdites

Graphe d’état général Représentation en un arbre


Etat vs. Nœud
3

Etat vs. Nœud

 Un état est une configuration (représentation) physique


 Un nœud est une structure de données qui garde une trace de :
 un état
 un nœud parent (nœud qui a généré ce nœud)
 une action (action appliquée au parent pour obtenir le nœud)
 un coût de chemin (de l'état initial au nœud courant)
 la profondeur (itération)
Méthodes de recherche
4

Stratégies d’exploration
 Méthodes de recherche « aveugles » = Explorations non
informées
 recherche en largeur
 recherche en profondeur
 recherche en profondeur limitée
…
 Méthodes de recherche heuristiques = Explorations informées
Méthodes de recherche aveugles
5
(non informées)
 Ce sont des techniques de parcours d’arbres de recherche
 Exploration de l’espace d’état en générant les états
successeurs des états déjà explorés
 Les méthodes de recherche diffèrent les unes des autres selon
l’ordre dans lequel les nœuds sont explorés
 en largeur
 en profondeur
 profondeur limitée
…
Critères d'évaluation
6

 Complétude : est-ce que la méthode garantit de trouver une solution


si elle existe ?
 Complexité en temps : combien de temps faut-il pour trouver la
solution ?
 Complexité en espace : quel espace mémoire faut-il pour effectuer la
recherche ?
 Optimalité : est-ce que la méthode trouve la meilleure solution s'il en
existe plusieurs ?
Critères d'évaluation : complexité
7

 Les complexités en temps et en espace sont mesurée en fonction de :


 b = facteur de branchement maximum de l'arbre de recherche
(facteur de branchement: le nombre maximum de successeurs à un
nœud)
 d = profondeur à laquelle se trouve le (meilleur) nœud-solution
 m = profondeur maximum de l'espace de recherche (espace
d'états ou arbre de recherche)
Critères d'évaluation : complexité
8

 Les complexités en temps et en espace sont mesurée en fonction de :


 b = facteur de branchement maximum de l'arbre de recherche
(facteur de branchement: le nombre maximum de successeurs à un
nœud)
 d = profondeur à laquelle se trouve le (meilleur) nœud-solution
 m = profondeur maximum de l'espace de recherche (espace
d'états ou arbre de recherche)

Ici;
b=4
d=2
m=3
Algorithme général
9

fonction recherche_generale (problème, stratégie) rend solution ou echec

initialiser l’arbre de recherche par l’état initial du problème

boucle

si il n’y a pas de candidats pour l’expansion alors rendre echec

sinon choisir une feuille pour l’expansion en fonction de la stratégie

si le nœud contient un état final alors rendre la solution

sinon étendre le nœud et ajouter les nœuds fils dans l’arbre

fin
Recherche en largeur
10

 Développer successivement les nœuds d’un même niveau


de profondeur
 On s’arrête dès qu’on rencontre un état but
 Les nœuds sont rangés dans une liste FIFO

 Garantie de trouver une solution si elle existe


 arbre avec un nombre de branches fini

 Pas adopté aux problèmes avec plusieurs chemins longs


menant à la solution
Recherche en largeur :
Exemple d’arbre de recherche
11
Exemple : recherche en largeur
(taquin 3x3)
12

 Appliquer la recherche en largeur d’abord sur la donnée


suivante :
Exemple : recherche en largeur
(taquin 3x3)
13
Exemple : recherche en largeur
14

Stratégie : étend le nœud le moins profond


Implémentation : insertion des successeurs à la fin de la file d'attente
fonction recherche_largeur (problème) rend solution ou echec
recherche_generale (problème, insere-a-la-fin)
Exemple : recherche en largeur
15

Stratégie : étend le nœud le moins profond


Implémentation : insertion des successeurs à la fin de la file d'attente
fonction recherche_largeur (problème) rend solution ou echec
recherche_generale (problème, insere-a-la-fin)
Nœuds Nœuds à
étendus étendre
{S}
S {A, B, C}
A {B, C, D, E}
B {C, D, E, G}
C {D, E, G, F}
D {E, G, F, H}
E {G, F, H, G}
G
Exemple : recherche en largeur
16

Stratégie : étend le nœud le moins profond


Implémentation : insertion des successeurs à la fin de la file d'attente
fonction recherche_largeur (problème) rend solution ou echec
recherche_generale (problème, insere-a-la-fin)
Nœuds Nœuds à
étendus étendre Chemin* : S, B, G
{S} Coût : 8
S {A, B, C} Nœuds testés : 7
A {B, C, D, E}
B {C, D, E, G}
C {D, E, G, F} * La solution est obtenue
D {E, G, F, H} en suivant le chaînage
E {G, F, H, G}
arrière du nœud but trouvé
vers la racine
G
Propriétés de la recherche en largeur
17

 Complétude : Oui (si b est fini)

 Complexité en temps :
1 + b + b2 + b3 + … + bd = O(bd) (exponentiel en d)

 Complexité en espace : O(bd) (il faut garder chaque nœud en


mémoire)

 Optimalité : Oui (si coût = 1 par étape )


Recherche en profondeur
18

 Explorer le graphe en allant vers les degrés de profondeur


croissants
 En cas d’échec
 On revient en arrière (nœud père)
 On recherche une autre branche à explorer
 Les nœuds sont rangés dans une pile LIFO
 Peut conduire à des chemins infiniment longs sans succès
 Solution : la recherche en profondeur limitée
 La recherche se fait jusqu’à une limite prédéfinie Lp
 Cas d’insuccès : on augmente Lp
Recherche en profondeur :
Exemple d’arbre de recherche
19
Exemple : recherche en profondeur
20

Stratégie : étend le nœud le plus profond


Implémentation : insertion des successeurs en tête de la file d'attente
fonction recherche_profondeur (problème) rend solution ou echec
recherche_generale (problème, insere-en-tete)
Exemple : recherche en profondeur
21

Stratégie : étend le nœud le plus profond


Implémentation : insertion des successeurs en tête de la file d'attente
fonction recherche_profondeur (problème) rend solution ou echec
recherche_generale (problème, insere-en-tete)

Nœuds Nœuds à
étendus étendre
{S}
S {A, B, C}
A {D, E, B, C}
D {H, E, B, C}
H {E, B, C}
E {G, B, C}
G
Exemple : recherche en profondeur
22

Stratégie : étend le nœud le plus profond


Implémentation : insertion des successeurs en tête de la file d'attente
fonction recherche_profondeur (problème) rend solution ou echec
recherche_generale (problème, insere-en-tete)

Nœuds Nœuds à
étendus étendre Chemin* : S, A, E, G
{S}
Coût : 15
Nœuds testés : 6
S {A, B, C}
A {D, E, B, C}
D {H, E, B, C}
H {E, B, C} * La solution est obtenue
en suivant le chaînage
E {G, B, C}
arrière du nœud but trouvé
G vers la racine
Propriétés de la recherche en profondeur
23

 Complétude : Non
échoue dans les espaces infinis ou avec cycle
complet dans les espaces finis acycliques

 Complexité en temps :
O(bm) = terrible si m est beaucoup plus grand que d

 Complexité en espace : O(b * m) linéaire

 Optimalité : Non
Recherche en profondeur limité :
Exemple d’arbre de recherche (L = 2)
24
Recherche en profondeur limité :
Exemple d’arbre de recherche
25

L=1 L=2 L=3 L=4


Exemple : recherche en profondeur limitée
26

Stratégie : étend le nœud le plus profond si sa profondeur d’exploration L ne


dépasse pas la limite sinon passe au suivant
Implémentation : insertion des successeurs en tête de la file d'attente si L ≤ limite
(On rajoute les successeurs d’un état uniquement si on n’a pas dépassé la limite)
fonction recherche_profondeur_limite (problème, L) rend solution ou echec
recherche_generale (problème, insere-en-tete-si-inf-limite)
Soit limite = 1
Exemple : recherche en profondeur limitée
27

Stratégie : étend le nœud le plus profond si sa profondeur d’exploration L ne


dépasse pas la limite sinon passe au suivant
Implémentation : insertion des successeurs en tête de la file d'attente si L ≤ limite
(On rajoute les successeurs d’un état uniquement si on n’a pas dépassé la limite)
fonction recherche_profondeur_limite (problème, L) rend solution ou echec
recherche_generale (problème, insere-en-tete-si-inf-limite)

Soit limite = 1

Nœuds Nœuds à
étendus étendre
{S}
S {A, B, C}
A {B, C}
B {C}
C {}
Exemple : recherche en profondeur limitée
28

Stratégie : étend le nœud le plus profond si sa profondeur d’exploration L ne


dépasse pas la limite sinon passe au suivant
Implémentation : insertion des successeurs en tête de la file d'attente si L ≤ limite
(On rajoute les successeurs d’un état uniquement si on n’a pas dépassé la limite)
fonction recherche_profondeur_limite (problème, L) rend solution ou echec
recherche_generale (problème, insere-en-tete-si-inf-limite)

Soit limite = 1

Nœuds Nœuds à Chemin : -


étendus étendre
Coût : -
{S} Nœuds testés : 4
S {A, B, C}
A {B, C}
B {C}
C {}

Vous aimerez peut-être aussi