USTL Licence Informatique 2007–2008
UE Projet Logiciel
L’algorithme A∗
L’algorithme A∗permet la recherche d’une solution dans un graphe (espace) d’´
etats `
a partir d’un ´
etat
initial et en calculant un meilleur chemin vers cette solution. Cette notion de “meilleur” est d´
ependante
d’une fonction de coˆ
ut, le chemin calcul´
e´
etant celui de coˆ
ut le plus faible.
On a la garantie que l’algorithme termine et que, s’il existe une solution, il n’y a pas de meilleur chemin
que celui fourni par l’algorithme.
Pour son calcul l’algorithme explore `
a partir de l’´
etat initial l’espace des ´
etats possibles pour le probl`
eme
consid´
er´
e. Le graphe de cet espace est d´
efini implicitement par un op´
erateur successeur permettant
pour chaque ´
etat de connaˆ
ıtre la liste des ´
etats qu’il permet d’atteindre. Comme indiqu´
e pr´
ec´
edemment,
chacune des ces transitions est en plus valu´
ee par un coˆ
ut.
successeur :Etat →Etat∗
e7→ ´
etats atteignables depuis e
cout :Etat, Etat →R
e1, e27→ coˆ
ut de la transition de e1vers e2
L’algorithme. Le principe de fonctionnement de l’algorithme est similaire `
a celui de l’algorithme de
Dijkstra ´
etudi´
e au S4, avec en plus une estimation heuristique du coˆ
ut du chemin restant `
a parcourir entre
un ´
etat et un ´
etat solution1. Pour que les propri´
et´
es de l’algorithme soient v´
erifi´
ees, il est n´
ecessaire et
suffisant que cette estimation minore le coˆ
ut r´
eel (mais inconnu) de ce chemin. Dans le cas contraire,
les propri´
et´
es de terminaison et de correction de l’algorithme sont conserv´
ees, mais pas celle de meilleur
chemin (on parle alors d’alogorithme A).
heuristique :Etat →R+
e7→ coˆ
ut estim´
e du chemin de evers un ´
etat solution
Donc lors de la recherche de solutions, on explore diff´
erents ´
etats et pour chaque ´
etat eon consid`
ere :
•la valeur du chemin d´
ej`
a parcouru depuis l’´
etat initial eipour atteindre e, cette valeur est connue
pr´
ecis´
ement, elle r´
esulte de la somme des coˆ
uts des transitions emprunt´
ees de ei`
ae. Appel´
ee
“terme standard” cette valeur est souvent not´
ee gg(e).
•la valeur heuristique, appel´
ee “terme heuristique”, not´
ee hh(e). On a hh(e) = heurstique(e).
On additionne ces 2 termes pour attribuer la valeur, not´
ee ff(e), d’un ´
etat e:
ff(e) = gg(e) + hh(e)
Le principe de l’algorithme, pr´
esent´
e`
a la page suivante, et de parcourir, en partant de ei, le graphe
d’´
etats, en s´
electionnant `
a chaque ´
etape l’un des ´
etats ede l’espace de recherche dont la valeur ff est
minimale et en ajoutant `
a l’espace de recherche les successeurs de e. Un traitement garantit (seconde
partie de l’algorithme) que, pour chaque ´
etat, l’on conserve le meilleur chemin permettant de l’atteindre
`
a partir de ei. L’algortihme termine d`
es que l’on a atteint l’un des ´
etats solutions.
Pour un mˆ
eme probl`
eme, il peut exister plusieurs fonctions heuristiques. Le choix de telle ou telle
fonction influence le nombre d’´
etats examin´
es par l’algorithme et donc sa rapidit´
e mais, ´
evidemment,
pas son r´
esultat. Si pour deux fonctions heuristiques hh1et hh2d’un mˆ
eme probl`
eme on a
∀e∈Etat, 0≤hh1(e)≤hh2(e) (≤coˆ
ut r´
eel)
alors une recherche utilisant hh2visitera n´
ecessairement moins d’´
etats qu’une autre utilisant hh1(pour
le mˆ
eme ei´
evidemment). On dit que hh2est mieux inform´
ee. Ainsi l’heuristique constante hh = 0 est
toujours possible mais peu (pas) inform´
ee et donc inint´
eressant en pratique.
1Pour un probl`
eme donn´
e, il peut parfois y avoir plusieurs solutions