4
I - Questions de préparation
Qu'est-ce qu'un Graphe de Résolution de Problème (GRP), relativement à un
problème donné ?
UN GRP est un graphe où :
● c’est un graphe connexe et sans cycle : une arborescence
● les sommets sont les états possibles du problème
● on distingue l’état initial et les états finaux
● le coût c(u) associé à l’arc u = (i, j) représente une règle permettant de passer
de l’état i à l’état j
● le chemin de l’état initial à un état final constitue une solution au problème
Quel GRP proposeriez-vous pour le problème du Voyageur de Commerce ?
Pour le problème du Voyageur de Commerce, nous proposerions un GRP dont les
nœuds sont les villes parcourues.
Quel est, schématiquement, le fonctionnement d'un algorithme A* ?
1. On initialise une liste OUVERTE on y ajoute le nœud initial et une liste FERMEE
vide.
2. On prend le 1er élément de la liste OUVERTE et on le met dans la liste FERME.
3. On rentre dans la grande boucle du programme A*.
4. On développe le dernier nœud de la liste FERMEE (celui que l’on vient d’ajouter
dans cette liste à l’instant, c’est-à-dire que l’on ajoute ses successeurs potentiels
du GRP dans la liste OUVERTE)
5. On prend le nœud de la liste OUVERTE qui minimise la fonction d’évaluation F =
G + H et on l’ajoute à la liste FERMEE.
6. Si le nœud ajouté à la liste fermée est le nœud final (correspond à la condition de
fin de la boucle), on continue en 7, sinon, on reboucle en 3.
7. On termine l’algorithme.
Ainsi, la liste OUVERT représente l’ensemble des nœuds étudiés et la liste FERME
représente l’ensemble des nœuds ayant été considérés comme faisant partie du
chemin solution mais qui n’en font pas partie forcément.
Que représentent les symboles g, h et f dans l'algorithme ?
Soit n, un sommet pris au hasard dans le GRP, dans l’algorithme, on a :
● Le symbole g représente le coût du sommet initial au sommet n,
● Le symbole h représente la fonction heuristique choisie,
● Le symbole f représente la fonction d’évaluation définie par f(n) = g(n) + h(n)
Quelle est la condition sur h pour que l'on parle d'algorithme A* ?
On parle d’algorithme A* si, pour tout sommet n, h(n) ⪯ h(n*) donc que l’algorithme A
trouve un chemin optimal du sommet initial à un but s’il en existe.