Vous êtes sur la page 1sur 14

‫وزارة التعليم العالي والبحث العلمي‬

Université Badji Mokhtar


- Annaba – ‫جامعة باجي مختار‬
Badji Mokhtar – Annaba ‫عنابـــــــــــــــة‬
University
Faculté : Technologie
Département : Informatique
Domaine : Mathématique-Informatique
Filière : Informatique
Spécialité : Intelligence artificielle et traitement d’information

Thème:
Réalisation d’algorithme A star (A*) dans les graphes

Présenté par : Mr.Mekersi Ilyes


Mr.Laraba Abd Raouf

Mr.Maghri Zine Eddine

1
Table de matière

1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 figure 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 figure 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . … 4
2 Définition A* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ….. 5
4 code python de l'algorithme A*. . . . . . . . . . . . . . . . . . . . . . . . . . .6
4.1 code de A* en python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.2 Résultat d’un graphe donné en python. . . . . . . . . . . . . . . 7

4.3 Résultat d’un graphe donné en python(plot). . . . . . . . . ..7

5 Les exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.1 exemple 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ….. 8
5.2 les tableaux de A* de l'exemple 1 . . . . . . . . . . . . . . . . . . . . .8
5.2 plus cours chemin de ex1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.3 exemple 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . 9
5.4 plus cours chemin de ex 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.5 exemple 3 . . . . . . . . . . . . . . . . . . . . . . …. . . . . . . . . . . . . . . .10
5.6 plus cours chemin de ex 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6 Complexité A* . . . . . . . . . . . . . . . . . . …… . . . . . . . . . . . . . .. . . . .11
7 Avantages et inconvénient de A* . . . . . . . . .. . . . . . . . . . . . . . .12
8 Conclusion . . . . . . . . . . . . . . . . . . . ………….. . . . . . . . . . . . . . . . . .12

Introduction
2
Les algorithmes de recherche occupent une place centrale dans le
domaine de l'informatique et de l'intelligence artificielle, étant à la base
de nombreuses applications requérant la découverte de solutions
optimales ou une navigation efficace à travers un espace de possibilités.
Leur importance s'étend à divers secteurs tels que la robotique, la
planification de trajets, les jeux, la reconnaissance de formes, et bien
d'autres .

Ces mécanismes algorithmiques ont pour objectif de déterminer la


meilleure solution parmi un ensemble de possibilités, en tenant compte de
diverses contraintes et critères de qualité. Parmi les approches de
recherche, l'algorithme A* se distingue par son efficacité et sa polyv alence.

Ce rapport se consacre à l'exploration des bases des algorithmes de


recherche, en mettant un accent particulier sur l'algorithme A*. Nous
analyserons en détail son fonctionnement, sa logique sous-jacente, et
fournirons des exemples concrets pour illustrer sa mise en œuvre pratique.
En outre, nous aborderons les avantages et les inconvénients de l'algorithme
A*, tout en identifiant ses domaines d'application privilégiés. Cette étude vise
à offrir une compréhension approfondie de cette technique de recherche
puissante.

Voici un exemple réel de l’utilisation de A* dans les cartes interactives :

Figure 1 : A* dans les cartes interactives

3
Dans cet exemple on va voir une petite comparaison de la recherche du plus
court chemin dans une labyrinthe entre A* et Dijkstra :

Figure2 : recherche du plus court chemin dans une labyrinthe entre A* et


Dijkstra

Définition de A*
L'algorithme de recherche A* (qui se prononce A étoile, ou A star à l'anglaise)
est un algorithme de recherche de chemin dans un graphe entre un nœud initial
et un nœud final tous deux donnés. De par sa simplicité il est souvent présenté
comme exemple typique d'algorithme de planification, domaine de l'intelligence
artificielle.

Le fonctionnement de l'algorithme A* est basé sur l'idée de minimiser la


somme F = G + H, où G est la distance parcourue depuis le point de départ et
H l'estimation de la distance restante à en fonction de l'heuristique définie
au départ de l'algorithme

L'algorithme A* garantit une solution en sortie, mais la solution fournie en


sortie n'est pas nécessairement optimale

Voici une explication simplifiée du fonctionnement de l'algorithme A*:

1. Initialisation : Le nœud initial est ajouté à l'ensemble des nœuds


explorés (openSet)

4
2. Pour chaque nœud dans l'ensemble des nœuds explorés, on vérifie s’il
est un nœud final ou s’il est un nœud intermédiaire ayant une distance
plus courte du nœud final que de tout nœud précédent

 Si le nœud est un nœud final, il est ajouté à l'ensemble des nœuds


terminés (closedSet)
 Si le nœud n'est pas un nœud final et qu'il est plus proche du nœud
final que tout nœud précédent, il est ajouté à l'ensemble des nœuds
terminés et le nœud précédent est supprimé de l'ensemble des nœuds
explorés

3. Si l'ensemble des nœuds explorés n'est pas vide, le nœud avec la valeur
F la plus faible est sélectionné et ajouté à l'ensemble des nœuds
terminés
4. Si l'ensemble des nœuds explorés est vide, le nœud avec la valeur F la
plus grande est ajouté à l'ensemble des nœuds terminés

L'algorithme A* est connu pour sa complexité spatiale, car il stocke tous les
nœuds générés en mémoire. Cependant, il est largement utilisé dans diverses
applications en raison de son efficacité et de son approche systématique pour
trouver des solutions de chemin.

Historique
En 1968, le chercheur en intelligence artificielle Nils Nilsson essayait
d'améliorer la planification de Shakey le robot, un robot prototype qui se
déplace dans une pièce avec des obstacles. L'algorithme pour trouver un
chemin, que Nilsson appelait A1, était une version plus rapide que la méthode
la plus connue à l'époque, l'algorithme de Dijkstra, pour trouver des plus
courts chemins dans un graphe. Bertram Raphael a suggéré des
améliorations, donnant lieu à la version révisée A2. Puis, Peter E. Hart a
apporté des améliorations mineures à A2. Hart, Nilsson et Raphael ont alors
montré que A2 est optimal pour trouver des plus courts chemins sous
certaines conditions.

5
Code python de l’algorithme A* :
Ce code Python utilise la bibliothèque NetworkX pour créer, visualiser, et
résoudre un graphe pondéré non orienté. L'utilisateur est invité à entrer le
nombre de nœuds, les noms et coûts associés à chaque nœud, ainsi que les
relations entre les nœuds avec leurs poids. L'algorithme A* est ensuite
appliqué pour trouver le chemin optimal entre un nœud de départ et un
nœud d'arrivée. La visualisation du graphe est réalisée avec l'aide de la
bibliothèque Matplotlib, mettant en évidence le chemin trouvé en rouge.
L'utilisateur peut également quitter la saisie des relations en entrant 'exit'.

Figure 3 : code de A* en python

6
Figure 4 : Résultat d’un graphe donné en python

Figure 5 : Résultat d’un graphe donné en python(plot)

7
Les exemples

Figure 6 : exemple 1

Recherche du plus court chemin entre A et G dans le graphe de l’exemple 1


avec (A*) :
FERMÉ : {} OUVERT : A (11) FERMÉ : {A (11)} OUVERT : B (8), E (10)

FERMÉ :{ } OUVERT : FERMÉ :{ } OUVERT :A(11)

FERMÉ : {A (11), B (8)} OUVERT : E (10), C (102), G (11) FERMÉ : {A (11), B (8), E (10)} OUVERT : C (102), G (11), D (10)

FERMÉ : {A (11), B (8), E (10), D (10)} OUVERT : C (102), G (11) FERMÉ : {A (11), B (8), E (10), D (10)} OUVERT : C (102), G (10)

8
Figure 6.1 : plus cours chemin de A vers G (ex 1)

Figure 7 : exemple 2

9
Figure 7.1 : plus court chemin de A vers J (ex2)

Figure 8 : exemple 3

10
Figure 8.1 : plus court chemin de A vers E (ex3)

La complexité de A *
L'algorithme A* est réputé pour sa complexité spatiale en raison de la
nécessité de stocker en mémoire tous les nœuds générés. Malgré cela, il
demeure largement adopté dans diverses applications en raison de son
efficacité et de son approche méthodique pour résoudre des problèmes de
chemin. La complexité de l'algorithme A* est intrinsèquement liée à la qualité
de l'heuristique employée et à la structure de données utilisée pour la
conservation des nœuds explorés. En règle générale, la complexité
temporelle de l'algorithme A* est de l'ordre de O(b^d), où b représente le
facteur de branchement et d la profondeur de la solution optimale. Toutefois,
l'utilisation d'une heuristique admissible permet de réduire cette complexité
à O(d log b), conférant ainsi à l'algorithme A* une efficacité remarquable dans
le domaine de la recherche de chemin.

11
Avantages et inconvénients de l’algorithme A*
L'algorithme A* (A étoile) présente plusieurs avantages et inconvénients :

Avantages :

 L'algorithme A* est reconnu comme un algorithme de recherche


optimal en termes d'heuristique, le plaçant parmi les meilleures
techniques de recherche heuristique.

 Il est largement employé pour résoudre des problèmes de recherche


complexes.
 Aucun autre algorithme optimal n'est assuré de développer moins de
nœuds que A*.
 En utilisant une heuristique admissible, l'algorithme A* garantit la
découverte du chemin le plus court.
 Il est complet, capable de trouver une solution s'il en existe une.
 En général, il privilégie la recherche des chemins les plus courts, ce qui
le rend efficace pour de nombreux problèmes de recherche de chemin.

Inconvénients :

 La complétude de l'algorithme A* dépend du fait que le facteur de


branchement soit fini et que chaque action ait un coût fixe.
 La performance de la recherche A* est influencée par la précision de
l'algorithme heuristique utilisé pour calculer la fonction h(n).
 L'algorithme A* peut nécessiter une quantité significative de mémoire,
car il stocke tous les nœuds générés.
 Pour garantir l'optimalité, l'algorithme nécessite une heuristique
admissible, ce qui peut être difficile à obtenir pour certains problèmes.

Conclusion
En conclusion, l'algorithme A* se distingue comme une méthode de
recherche heuristique optimale, offrant des avantages significatifs dans la
résolution de problèmes complexes. Sa capacité à garantir la découverte du
chemin le plus court, en utilisant une heuristique admissible, en fait un choix
privilégié pour de nombreuses applications de recherche de chemin. Sa
complétude et son efficacité dans la priorisation des chemins les plus courts
en font un outil robuste pour résoudre divers problèmes. Cependant, il est
important de noter que la performance de l'algorithme dépend de la qualité
12
de l'heuristique utilisée et qu'il peut nécessiter une utilisation significative de
la mémoire. Malgré ses inconvénients, l'algorithme A* demeure une solution
puissante et polyvalente pour des problèmes de recherche et d'optimisation,
illustrant son importance dans le domaine de l'informatique et de
l'intelligence artificielle.

13
Les références
1. https://www.wikipedia.org/
2. https://www.simplilearn.com/tutorials/artificial-
intelligence-tutorial/a-star-algorithm
3. https://datascientest.com/lalgorithme-a-a-star-
algorithm
4. https://graphonline.ru/fr/
5. https://fr.scribd.com/presentation/602860324/algorit
hme-Aetoile

14

Vous aimerez peut-être aussi