Vous êtes sur la page 1sur 19

FONDEMENT DE L’IA

Chapitre 4 :
Les méthodes heuristiques
(Algorithme A*)

Ali Ben Mrad

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


Introduction aux heuristiques
2

 Les méthodes aveugles (non informées) sont des méthodes


systématiques peu efficaces
 Il existe des limites pratiques sur le temps d’exécution et l’espace
mémoire pour appliquer ces méthodes sur une grande catégorie
de problèmes
 Toute technique visant à accélérer la recherche est basée sur une
information appelée heuristique
 Une heuristique signifie ‘aider à découvrir’
 Ils utilisent des sources d’information supplémentaires. Ces
algorithmes parviennent ainsi à des performances meilleures
 Les méthodes utilisant des heuristiques sont dites méthodes de
recherche heuristiques
Introduction aux heuristiques
3

 Une heuristique doit guider le choix des états à tester et les


ordonner selon leurs ‘promesses de rapprocher d’un but’.
 Une heuristique dépend fortement du problème à traiter
 Une heuristique pauvre basée sur des propriétés trop simples
du problème sera peu efficace,
 Une heuristique riche basée sur des propriétés approfondies du
problème sera efficace, mais est difficile à établir.
Algorithme A*
4

 Fonction d’évaluation : f(n) = g(n) + h(n), où :


 g(n) : coût de l’état initial (I) jusqu’à n
 h(n) : heuristique estimant le coût de n à un état But (B)
 f(n) : coût total estimé pour aller d’un état initial vers un état But
en passant par n .
 A* utilise une heuristique admissible :
h est admissible si pour tout état n on a :
0 ≤ h(n) ≤ h*(n)
où h*(n) est le vrai coût pour aller de n à un état final
 A* demande aussi que h(B) = 0 pour tous les buts B
Algorithme A* : Dominance
5

 h1 domine h2 si h1 et h2 sont admissibles et que h1(n) ≥ h2(n)


pour tout n
 Dans ce cas, on choisit plutôt l’heuristique dominante
 h1 est alors meilleure pour la recherche
 Une heuristique dominante peut réduire l’espace de recherche
considérablement.
Exemples d’heuristique :
6
Jeu de taquin

Etat initial (I) Etat final (B)


 h1(n) : nombre de carreaux ne se trouvant pas à leur emplacement
final.
 h1(I) = 8
 h2(n) : distance Manhattan (nombre de cases entre l’emplacement
courant et l’emplacement but pour chaque carreau).
 h2(I) = 3+1+2+2+2+3+3+2 = 18
Algorithme A*
7

Initialisation
Sommet Initial (I)
Sommet final (B)
Liste des sommets à explorer (OUVERT) : sommet source I
Liste des sommets visités (FERME) : vide
Tant que (la liste OUVERT est non vide) et (B n’est pas dans FERME) Faire
+ Récupérer le sommet X de coût total f minimum.
+ Ajouter X à la liste FERME
+ Ajouter les successeurs de X (non déjà visités) à la liste OUVERT
en évaluant leur coût total f et en identifiant leur prédécesseur.
+ Si (un successeur est déjà présent dans OUVERT) et
(nouveau coût est inférieur à l’ancien) Alors
Changer son coût total
Changer son prédécesseur
FinSi
FinFaire
Exercice
8

Soit le graphe suivant, la valeur portée sur chaque arc correspond au coût de
passage d'une extrémité de l'arc à l'autre. On souhaite calculer le plus court
chemin de A à H.

On a de plus la fonction heuristique h qui estime le coût pour atteindre H depuis


chaque sommet. h est donnée par le tableau ci dessous.
A B C D E F G H I J
9 7 3 2 6 1 2 0 4 6
1. Appliquez l’algorithme A* avec la fonction h sur ce graphe.
2. Donnez le plus court chemin de A à H ainsi que sa valeur que vous avez
trouvé dans la question précédente.
Exercice (Correction)
9

On représente le déroulement de l’algorithme sous forme de tableau. Chaque


ligne du tableau correspond à un tour de boucle de l’algorithme. La première
colonne indique le numéro de tour de l’algorithme, dans la deuxième colonne
on indique le sommet choisi.
Dans la troisième colonne l’ensemble des ouverts de l’étape courante est
représenté, chaque état est noté sous le format :
sommet(g(x), f(x) = g(x) + h(x))
La dernière colonne contient l’ensemble des fermés de l’étape courante.
Exercice (Correction)
10

Etape Choix Ouverts Fermés


Init {A(0, 9)} ∅

– A l’initialisation, on met dans Ouverts, le sommet de départ ;


– A chaque étape on choisit dans Ouverts un sommet s tel que f(s) = g(s) + h(s)
soit minimal.
Pour tous les voisins v de s, si v n’appartient ni à Ouverts ni à Fermés, on ajoute
v à Ouverts.
Sinon on remet v dans Ouverts avec une nouvelle valeur de g(v) seulement si
g(s)+cout(sv) est inférieur à la valeur de g(v) mémorisée.
Exercice (Correction)
11

Etape Choix Ouverts Fermés


Init {A(0, 9)} ∅
1 A(0, 9) {B(2, 9); C(5, 8); E(3, 9)} {A(0, 9)}

– A chaque étape on choisit dans Ouverts un sommet s tel que f(s) = g(s) + h(s)
soit minimal.
Pour tous les voisins v de s, si v n’appartient ni à Ouverts ni à Fermés, on ajoute
v à Ouverts.
Sinon on remet v dans Ouverts avec une nouvelle valeur de g(v) seulement si
g(s)+cout(sv) est inférieur à la valeur de g(v) mémorisée.
Exercice (Correction)
12

Etape Choix Ouverts Fermés


Init {A(0, 9)} ∅
1 A(0, 9) {B(2, 9); C(5, 8); E(3, 9)} {A(0, 9)}
2 C(5, 8) {B(2, 9); E(3, 9); D(9, 11); F (9, 10); {A(0, 9); C(5, 8)}
G(14, 16)}

– A chaque étape on choisit dans Ouverts un sommet s tel que f(s) = g(s) + h(s)
soit minimal.
Pour tous les voisins v de s, si v n’appartient ni à Ouverts ni à Fermés, on ajoute
v à Ouverts.
Sinon on remet v dans Ouverts avec une nouvelle valeur de g(v) seulement si
g(s)+cout(sv) est inférieur à la valeur de g(v) mémorisée.
Exercice (Correction)
13

Etape Choix Ouverts Fermés


Init {A(0, 9)} ∅
1 A(0, 9) {B(2, 9); C(5, 8); E(3, 9)} {A(0, 9)}
2 C(5, 8) {B(2, 9); E(3, 9); D(9, 11); F (9, 10); {A(0, 9); C(5, 8)}
G(14, 16)}
3 B(2, 9) {E(3, 9); D(7, 9); F (9, 10); G(14, 16)} {A(0, 9); C(5, 8); B(2, 9)}

– A l’étape 3, après sélection du sommet B, la valeur de g(D) dans Ouverts


passe de 9 à 7
Exercice (Correction)
14

Etape Choix Ouverts Fermés


Init {A(0, 9)} ∅
1 A(0, 9) {B(2, 9); C(5, 8); E(3, 9)} {A(0, 9)}
2 C(5, 8) {B(2, 9); E(3, 9); D(9, 11); F (9, 10); {A(0, 9); C(5, 8)}
G(14, 16)}
3 B(2, 9) {E(3, 9); D(7, 9); F (9, 10); G(14, 16)} {A(0, 9); C(5, 8); B(2, 9)}
4 E(3, 9) {D(7, 9); F (9, 10); G(14, 16); C(4, 7); {A(0, 9); B(2, 9); E(3, 9)}
I(14, 18)}

– A l’étape 4, après sélection du sommet E, la valeur de g(C) passe de 5 à 4


et C passe des Fermés aux Ouverts
Exercice (Correction)
15

Etape Choix Ouverts Fermés


Init {A(0, 9)} ∅
1 A(0, 9) {B(2, 9); C(5, 8); E(3, 9)} {A(0, 9)}
2 C(5, 8) {B(2, 9); E(3, 9); D(9, 11); F (9, 10); {A(0, 9); C(5, 8)}
G(14, 16)}
3 B(2, 9) {E(3, 9); D(7, 9); F (9, 10); G(14, 16)} {A(0, 9); C(5, 8); B(2, 9)}
4 E(3, 9) {D(7, 9); F (9, 10); G(14, 16); C(4, 7); {A(0, 9); B(2, 9); E(3, 9)}
I(14, 18)}
5 C(4, 7) {D(7, 9); F(8, 9); G(13, 15); I(14, 18)} {A(0, 9); B(2, 9); E(3, 9);
C(4, 7)}

– A l’étape 5, les valeurs de g de F et G dans Ouverts passent respectivement


de 9 à 8 et de 14 à 13.
Exercice (Correction)
16

Etape Choix Ouverts Fermés


Init {A(0, 9)} ∅
1 A(0, 9) {B(2, 9); C(5, 8); E(3, 9)} {A(0, 9)}
2 C(5, 8) {B(2, 9); E(3, 9); D(9, 11); F (9, 10); {A(0, 9); C(5, 8)}
G(14, 16)}
3 B(2, 9) {E(3, 9); D(7, 9); F (9, 10); G(14, 16)} {A(0, 9); C(5, 8); B(2, 9)}
4 E(3, 9) {D(7, 9); F (9, 10); G(14, 16); C(4, 7); {A(0, 9); B(2, 9); E(3, 9)}
I(14, 18)}
5 C(4, 7) {D(7, 9); F(8, 9); G(13, 15); I(14, 18)} {A(0, 9); B(2, 9); E(3, 9);
C(4, 7)}
6 D(7, 9) {F (8, 9); G(13, 15); I(14, 18)} {A(0, 9); B(2, 9); E(3, 9);
C(4, 7); D(7, 9)}
Exercice (Correction)
17

Etape Choix Ouverts Fermés


Init {A(0, 9)} ∅
1 A(0, 9) {B(2, 9); C(5, 8); E(3, 9)} {A(0, 9)}
2 C(5, 8) {B(2, 9); E(3, 9); D(9, 11); F (9, 10); {A(0, 9); C(5, 8)}
G(14, 16)}
3 B(2, 9) {E(3, 9); D(7, 9); F (9, 10); G(14, 16)} {A(0, 9); C(5, 8); B(2, 9)}
4 E(3, 9) {D(7, 9); F (9, 10); G(14, 16); C(4, 7); {A(0, 9); B(2, 9); E(3, 9)}
I(14, 18)}
5 C(4, 7) {D(7, 9); F(8, 9); G(13, 15); I(14, 18)} {A(0, 9); B(2, 9); E(3, 9);
C(4, 7)}
6 D(7, 9) {F (8, 9); G(13, 15); I(14, 18)} {A(0, 9); B(2, 9); E(3, 9);
C(4, 7); D(7, 9)}
7 F (8, 9) {G(13, 15); I(14, 18); H(10, 10)} {A(0, 9); B(2, 9); E(3, 9);
C(4, 7); D(7, 9); F (8, 9)}
Exercice (Correction)
18

Etape Choix Ouverts Fermés


Init {A(0, 9)} ∅
1 A(0, 9) {B(2, 9); C(5, 8); E(3, 9)} {A(0, 9)}
2 C(5, 8) {B(2, 9); E(3, 9); D(9, 11); F (9, 10); {A(0, 9); C(5, 8)}
G(14, 16)}
3 B(2, 9) {E(3, 9); D(7, 9); F (9, 10); G(14, 16)} {A(0, 9); C(5, 8); B(2, 9)}
4 E(3, 9) {D(7, 9); F (9, 10); G(14, 16); C(4, 7); {A(0, 9); B(2, 9); E(3, 9)}
I(14, 18)}
5 C(4, 7) {D(7, 9); F(8, 9); G(13, 15); I(14, 18)} {A(0, 9); B(2, 9); E(3, 9);
C(4, 7)}
6 D(7, 9) {F (8, 9); G(13, 15); I(14, 18)} {A(0, 9); B(2, 9); E(3, 9);
C(4, 7); D(7, 9)}
7 F (8, 9) {G(13, 15); I(14, 18); H(10, 10)} {A(0, 9); B(2, 9); E(3, 9);
C(4, 7); D(7, 9); F (8, 9)}
8 H(10, 10)
Exercice (Correction)
19

Etape Choix Ouverts Fermés


Init {A(0, 9)} ∅
1 A(0, 9) {B(2, 9); C(5, 8); E(3, 9)} {A(0, 9)}
2 C(5, 8) {B(2, 9); E(3, 9); D(9, 11); F (9, 10); G(14, 16)} {A(0, 9); C(5, 8)}
3 B(2, 9) {E(3, 9); D(7, 9); F (9, 10); G(14, 16)} {A(0, 9); C(5, 8); B(2, 9)}
4 E(3, 9) {D(7, 9); F (9, 10); G(14, 16); C(4, 7); I(14, 18)} {A(0, 9); B(2, 9); E(3, 9)}
5 C(4, 7) {D(7, 9); F(8, 9); G(13, 15); I(14, 18)} {A(0, 9); B(2, 9); E(3, 9);
C(4, 7)}
6 D(7, 9) {F (8, 9); G(13, 15); I(14, 18)} {A(0, 9); B(2, 9); E(3, 9);
C(4, 7); D(7, 9)}
7 F (8, 9) {G(13, 15); I(14, 18); H(10, 10)} {A(0, 9); B(2, 9); E(3, 9);
C(4, 7); D(7, 9); F (8, 9)}
8 H(10, 10)

– Le plus court chemin de A à H est A-E-C-F-H avec un coût égale à 10.

Vous aimerez peut-être aussi