USTL Licence Informatique 2007–2008
UE Projet Logiciel
L’algorithme A
L’algorithme Apermet 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
eEtat, 0hh1(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
Les donn´
ees. Pour un probl`
eme donn´
ee, il faut connaˆ
ıtre la d´
efinition d’un ´
etat (se repr´
esentation),
l’op´
erateur successeur et la fonction cout ainsi que les ´
etats solution (ou une description de ceux-ci),
fournis dans un ensemble Solutions.
Pour un calcul particulier on doit fournir l’´
etat initial eiainsi que la fonction heuristique hh utilis´
ee
Algorithme A–A
Debut
a–voir← {ei}
deja–vus← {}
gg(init)0
pere(init)nil
trouvefaux
tantQue a–voir n’est pas vide et trouve est faux faire
meilleursensemble des ´
etats de a–voir tel que ff est minimale
si meilleurs est un singleton
alors soit Ml’unique ´
el´
ement de meilleurs
sinon Si il y a des ´
el´
ements de Solutions dans meilleurs
alors soit Ml’un d’eux
sinon soit Mun ´
el´
ement quelconque de meilleurs
enlever Mde a–voir et ajouter M`
adeja–vus
si Mappartient `
aSolutions
alors trouvevrai
sinon g´
en´
erer l’ensemble fils des successeurs de M
pour chaque Ndans fils faire
si Nn’est ni dans a–voir ni dans deja–vus alors
gg(N)gg(M) + cout(M, N)
ff(N)gg(N) + hh(N)
pere(N)M
ajouter N`
aa–voir
finAlors
sinon /* Nest dans a–voir ou deja–vus */
soit P=pere(N)
compare [gg(M) + cout(M, N )] [gg(P) + cout(P, N)]
/* compare = diff´
erence en passant par Mou par P*/
si compare<0alors
/* si passage par Mmoins couteux que par P*/
gg(N)gg(N) + compare
ff(N)ff(N) + compare
pere(N)M
si Mest dans deja–vus alors
inserer Mdans a–voir et le supprimer de deja–vus
finAlors
finSinon
finPour
finSinon
finTantQue
si trouve est faux alors "Pas de solution"
sinon calculer et afficher le chemin solution (r´
ecup´
erer les pere de Mjusqu’`
ainit)
Fin
NB : En programmation, ne pas confondre le nom d’un ´
etat et la valeur de ce ´
etat. Ainsi un test tel que
Nest dans a–voir” se comprend en fait “la valeur de Nest la valeur d’un des ´
etats de a–voir”.
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !