recherche de chemins de coût minimal avec l’algorithme a* mise en œuvre pratique
DESCRIPTION
Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique. Olivier NOCENT. IUT de Reims-Châlons-Charleville rue des crayères, BP 1035 51687 Reims Cedex 2. Introduction. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/1.jpg)
Recherche de cheminsde coût minimal
avec l’algorithme A*Mise en œuvre pratique
Olivier NOCENTIUT de Reims-Châlons-Charlevillerue des crayères, BP 103551687 Reims Cedex 2
![Page 2: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/2.jpg)
Introduction
Objectif : Déterminer, pour un agent* donné, un chemin de coût minimum depuis un sommet source vers un sommet destination au sein d’un graphe orienté.
Un agent est un objet informatique autonome utilisé pour représenter une entité mobile dotée d’un comportement (humain, animal, véhicule, …)
![Page 3: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/3.jpg)
Applications
Jeux vidéo Animation des personnages non joueurs (RPG, FPS) Déplacement réaliste d’un personnage contrôlé par le
joueur vers un objectif désigné par le joueur (RTS)
Simulation – vie artificielle Etude du comportement d’une foule, du traffic
automobile, … Effets spéciaux (scènes de bataille, …)
![Page 4: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/4.jpg)
Représentation du graphe à partir d’informations topographiques
![Page 5: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/5.jpg)
Relations d’adjacence : grille carrée
Prairie
Rivière
Pont
![Page 6: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/6.jpg)
Relations d’adjacence : grille hexagonale
Prairie
Rivière
Pont
![Page 7: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/7.jpg)
Relations d’adjacence : points visibles
Obstacles
Couloirs
![Page 8: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/8.jpg)
Coût des arcs
Signification du coût d’un arc :
Distance kilométrique Recherche de chemins de longueur minimale
Temps (nécessaire au franchissement de l’arc) Recherche de chemins en temps minimum
Consommation de carburant Rechercher de chemins « économes »
![Page 9: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/9.jpg)
Coût des arcs : grille carrée
1010
10
10
![Page 10: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/10.jpg)
Coût des arcs : grille hexagonale
10
10
1010
10
10
10
10
10
10
10
10
Triangle équilatéral
![Page 11: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/11.jpg)
Coût des arcs : pondération en fonction de la nature de l’environnement
10 1010
4010
4010
10
1040
10
10
10
80
10
40
10
40 80
40 40
80
40
80
Prairie
Montagne
![Page 12: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/12.jpg)
Coût des arcs : pondération en fonction de la nature de l’agent
C C
Coût du franchissement d’un pont
C = 10 pour un humain.
C = 50 pour une voiture.
C = 500 pour un semi-remorque.
![Page 13: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/13.jpg)
Algorithme A*
![Page 14: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/14.jpg)
Principe général : évaluation du coût total d’un sommet
Coût total (F) = Coût depuis la source (G) + Coût vers la destination (H)
G : Coût depuis la source Algorithmes classiques (Ford, Bellman, Dijkstra) Gi = min Gj + Cij / i prédecesseur de j
Cij coût de l’arc (i,j)
H : Coût vers la destination Difficile puisque le reste du chemin (vers la
destination) est encore inconnu.
![Page 15: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/15.jpg)
Coût vers la destination
Pourquoi évaluer un coût vers la destination ?Afin de resserrer l’ensemble des sommets à explorer en privilégiant les sommets « qui semblent » nous rapprocher de la destination.
RemarqueDans le cas d’un algorithme de recherche plus classique (Dijsktra), on effectue une recherche exhaustive parmi TOUS les sommets.
Conséquencel’algorithme A* est plus performant que n’importe quel autre algorithme puisqu’il diminue l’ensemble des sommets à explorer.
![Page 16: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/16.jpg)
Coût vers la destination
Comment évaluer un coût vers la destination ?En utilisant des heuristiques (prédictions) afin d’évaluer un coût vers la destination INFERIEUR au coût réel (encore inconnu).
A ce titre, A* est un algorithme optimiste.
RemarqueSi l’heuristique était supérieur au coût réel, on risquerait de générer un chemin qui ne soit pas minimal.
![Page 17: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/17.jpg)
Distance euclidienne
S
D
40
H 20
Théorème de Pythagore
H 2 = (Coté oppose) 2 +
(Coté adjacent) 2
H 2 = 40 2 + 20 2
= 2000
H = 20 x (5) 1/2
![Page 18: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/18.jpg)
Distance de Manhattan
S
D
Nombre de cellules, en horizontal et en vertical entre la source et la destination.
Plus conforme à la nature des déplacements autorisés (haut, bas, gauche, droite)
![Page 19: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/19.jpg)
Algorithme A*InitialisationSommet source (S)Sommet destination (D)Liste des sommets à explorer (E) : sommet source SListe des sommets visités (V) : vide
Tant que (la liste E est non vide) et (D n’est pas dans E) Faire+ Récupérer le sommet X de coût total F minimum.+ Ajouter X à la liste V+ Ajouter les successeurs de X (non déjà visités) à la liste E en évaluant leur coût total F et en identifiant leur prédécesseur.
+ Si (un successeur est déjà présent dans E) et (nouveau coût est inférieur à l’ancien) Alors
Changer son coût totalChanger son prédécesseur
FinSiFinFaire
![Page 20: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/20.jpg)
Exemple 1
S
D
S
D
Sommet source
Sommet destination
Obstacle
![Page 21: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/21.jpg)
Exemple 1
S
D10 + 30
10 + 50
10 + 50
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
![Page 22: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/22.jpg)
Exemple 1
S
D10 + 30
10 + 50
10 + 50
20 + 40
20 + 40 Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
![Page 23: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/23.jpg)
Exemple 1
S
D10 + 30
10 + 50
10 + 50
20 + 40
20 + 40
20 + 60
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
![Page 24: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/24.jpg)
Exemple 1
S
D10 + 30
10 + 50
10 + 50
20 + 40
20 + 40
20 + 60
20 + 60
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
![Page 25: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/25.jpg)
Exemple 1
S
D10 + 30
10 + 50
10 + 50
20 + 40
20 + 40
20 + 60
20 + 60
30 + 50 Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
![Page 26: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/26.jpg)
Exemple 1
S
D10 + 30
10 + 50
10 + 50
20 + 40
20 + 40
20 + 60
20 + 60
30 + 50 30 + 30 Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
![Page 27: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/27.jpg)
Exemple 1
S
D10 + 30
10 + 50
10 + 50
20 + 40
20 + 40
20 + 60
20 + 60
30 + 50 30 + 30 40 + 20 Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
![Page 28: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/28.jpg)
Exemple 1
S
D10 + 30
10 + 50
10 + 50
20 + 40
20 + 40
20 + 60
20 + 60
30 + 50 30 + 30 40 + 20 50 + 10
50 + 10
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
![Page 29: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/29.jpg)
Exemple 1
S
10 + 30
10 + 50
10 + 50
20 + 40
20 + 40
20 + 60
20 + 60
30 + 50 30 + 30 40 + 20 50 + 10
50 + 10
60 + 20
60 + 0
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
![Page 30: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/30.jpg)
Exemple 1
S
D
![Page 31: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/31.jpg)
Exemple 2
S
D
S
D
Sommet source
Sommet destination
Obstacle
![Page 32: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/32.jpg)
Exemple 2
S
D
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
10 + 50 10 + 30
![Page 33: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/33.jpg)
Exemple 2
S
D
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
10 + 50 10 + 30
![Page 34: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/34.jpg)
Exemple 2
S
D
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
10 + 50 10 + 30
20 + 60
20 + 40
![Page 35: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/35.jpg)
Exemple 2
S
D
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
10 + 50 10 + 30
20 + 60
20 + 40
30 + 50
![Page 36: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/36.jpg)
Exemple 2
S
D
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
10 + 50 10 + 30
20 + 60
20 + 40
30 + 50
![Page 37: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/37.jpg)
Exemple 2
S
D
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
10 + 50 10 + 30
20 + 60
20 + 40
30 + 50
30 + 70
![Page 38: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/38.jpg)
Exemple 2
S
D
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
10 + 50 10 + 30
20 + 60
20 + 40
30 + 50
30 + 70
40 + 60
40 + 80
![Page 39: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/39.jpg)
Exemple 2
S
D
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
10 + 50 10 + 30
20 + 60
20 + 40
30 + 50
30 + 70
40 + 60
40 + 80 50 + 70
50 + 50
![Page 40: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/40.jpg)
Exemple 2
S
D
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
10 + 50 10 + 30
20 + 60
20 + 40
30 + 50
30 + 70
40 + 60
40 + 80 50 + 70
50 + 50
60 + 60
60 + 40
![Page 41: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/41.jpg)
Exemple 2
S
D
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
10 + 50 10 + 30
20 + 60
20 + 40
30 + 50
30 + 70
40 + 60
40 + 80 50 + 70
50 + 50
60 + 60
60 + 40
70 + 50
70 + 30
![Page 42: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/42.jpg)
Exemple 2
S
D
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
10 + 50 10 + 30
20 + 60
20 + 40
30 + 50
30 + 70
40 + 60
40 + 80 50 + 70
50 + 50
60 + 60
60 + 40
70 + 50
70 + 30
80 + 40
80 + 20
![Page 43: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/43.jpg)
Exemple 2
S
D
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
10 + 50 10 + 30
20 + 60
20 + 40
30 + 50
30 + 70
40 + 60
40 + 80 50 + 70
50 + 50
60 + 60
60 + 40
70 + 50
70 + 30
80 + 40
80 + 20
90 + 10
![Page 44: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/44.jpg)
Exemple 2
S
Sommet déjà visité
Sommet à explorer
G + H
Coût depuisla source
Coût versla destination
Référence auprédécesseur
10 + 50 10 + 30
20 + 60
20 + 40
30 + 50
30 + 70
40 + 60
40 + 80 50 + 70
50 + 50
60 + 60
60 + 40
70 + 50
70 + 30
80 + 40
80 + 20
90 + 10
100 + 0
![Page 45: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/45.jpg)
Exemple 2
S
D
![Page 46: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/46.jpg)
Structure des données : détail d’implémentation
InitialisationSommet source (S)Sommet destination (D)Liste des sommets à explorer (E) : sommet source SListe des sommets visités (V) : vide
Tant que (la liste E est non vide) et (D n’est pas dans E) Faire+ Récupérer le sommet X de coût total F minimum.+ Ajouter X à la liste V+ Ajouter les successeurs de X (non déjà visités) à la liste E en évaluant leur coût total F et en identifiant leur prédécesseur.
+ Si (un successeur est déjà présent dans E) et (nouveau coût est inférieur à l’ancien) Alors
Changer son coût totalChanger son prédécesseur
FinSiFinFaire
![Page 47: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/47.jpg)
Structure des données : détail d’implémentation
Nécessité de mettre en œuvre un conteneur permettant de :
Récupérer un élément de coût total minimum. Insérer un nouvel élément et trier le conteneur. Mettre à jour le coût total d’un élément déjà présent dans le
conteneur. Déterminer si le conteneur est vide.
![Page 48: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/48.jpg)
Solution « élégante » : files
Template <class T>class std::queue{public:
…bool empty();T pop() {return pop_front();}void push(T t) { push_back(t);}
};
tpush(t) pop()
![Page 49: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/49.jpg)
Solution « élégante » : files à priorité
Le type T doit surcharger l’opérateur de comparaison <
Template <class T>
class std::priority_queue
{
public:
…
bool empty();
T pop() {return pop_front();}
void push(T t) { /*insertion triée*/ }
};
tpush(t) pop()
![Page 50: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/50.jpg)
Insertion triée « efficace »
Utilisation d’un arbre binaire d’éléments Le fils gauche est strictement inférieur au nœud courant. Le fils droit est supérieur ou égal au nœud courant.
5
3 12
41 7 20
15 25
![Page 51: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/51.jpg)
Structure des données : std::priority_queue
Nécessité de mettre en œuvre un conteneur permettant de :
Récupérer un élément de coût total minimum : OUI Insérer un nouvel élément et trier le conteneur : OUI Mettre à jour le coût total d’un élément déjà présent dans le
conteneur : NON Déterminer si le conteneur est vide : OUI
![Page 52: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/52.jpg)
Structure de données personnalisée : MyPriorityQueue
template<class T>class MyPriorityQueue{public :
T pop();void push();
private: std::vector<T> heap;
};
![Page 53: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/53.jpg)
Structure de données personnalisée : MyPriorityQueue
template<class T>T MyPriorityQueue::pop(){
// L’élément le plus grand est au début// du conteneur heap : position 0.T value = heap.front();
// 1. Déplace le premier élément à la position N-1.// 2. Trie les éléments de la position 0 à N-2std::pop_heap(heap.begin(), heap.end(), Inf());
// Supprime l’élément en position N-1// c’est à dire, l’ancien premier.
heap.pop_back();
return value;}
![Page 54: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/54.jpg)
Structure de données personnalisée : MyPriorityQueue
template<class T>T MyPriorityQueue::push(T value){
// Ajout de la valeur en queue du conteneur// position N.heap.push_back(value);
// Trie les éléments de la position 0 à N.std::push_heap(heap.begin(), heap.end(), Inf());
return value;}
![Page 55: Recherche de chemins de coût minimal avec l’algorithme A* Mise en œuvre pratique](https://reader034.vdocuments.site/reader034/viewer/2022051216/56814eb5550346895dbc5bf8/html5/thumbnails/55.jpg)
Un peu de lecture
Game Programming Gems 1
by Mark de DeLoura
(Charles River Media )
August, 2000
http://www.gamedev.net
http://www.gamasutra.com