..
Rapport de PR-3602
Approfondissement en informatique
Thème « Graphes et algorithmes »
Boravy CHIN
Baptiste DURAND
E3
http://perso.esiee.fr/~durandb/
1
2
Table des matières
0 - Introduction générale ............................................................................................ 3
I - Questions de préparation ....................................................................................... 4
II - Problèmes introductifs ........................................................................................... 5
II - A - Problème d’affectation .................................................................................. 5
II - B - Problème de la carte routière ....................................................................... 7
III - Travail demandé .................................................................................................. 8
III A Enoncé ...................................................................................................... 8
III B Indications concernant la théorie ............................................................... 8
III B 1 Le Graphe de résolution de problèmes ............................................ 9
III B 2 Le Graphe de carte........................................................................... 9
III C Indications concernant la mise en pratique ............................................. 10
III C 1 Le choix du langage JAVA ............................................................. 10
III C 2 Le Graphe de résolution de problèmes .......................................... 10
III C 3 Le Graphe de carte ........................................................................ 10
III D Heuristiques ............................................................................................ 11
III D 1 Introduction .................................................................................... 11
III D 2 Explication des différentes heuristiques ......................................... 11
III D 3 Comparaison des différentes heuristiques ..................................... 12
III D 4 Synthèse ........................................................................................ 13
III E Déroulement de notre programme ........................................................... 14
III E 1 Déroulement ................................................................................... 14
III E 2 Tests de débogage ......................................................................... 14
III E L’interface graphique ............................................................................... 15
III E 1 Introduction ..................................................................................... 15
III E 2 Principe d’utilisation ........................................................................ 15
IV Liens utiles ........................................................................................................ 17
V Remerciements .................................................................................................. 18
3
0 - Introduction générale
Le but du projet PR-3602 est de réaliser proposer et d'implémenter une méthode de
résolution au célèbre problème du voyageur de commerce. C'est un problème
d'optimisation fort simple à comprendre, mais dont on n'a pour l'instant pas encore
trouvé de solution de résolution en temps de complexité polynomial.
Qu'est-ce que le problème du voyageur de commerce ? Le problème du voyageur de
commerce consiste en un voyageur (de commerce) qui souhaite parcourir un certain
nombre de villes de manière à minimiser la distance totale parcourue et revenant au
point de départ. Le problème revient donc à trouver le plus court-circuit hamiltonien.
Pour ce faire, nous utilisons une implémentation commentée et expliquée de
l'algorithme A*, un algorithme informatique constituant une approche très utilisée
notamment dans l'intelligence artificielle et qui nous permet de résoudre ce problème
en un temps non factoriel.
Nous coderons cet algorithme en langage JAVA pour plus de commodité en évitant
ainsi les différents problèmes des langages de bas-niveaux (problèmes de mémoire
entre autres), tout en permettant la programmation orientée objet et l'utilisation de
classes toutes faites très intéressantes pour la gestion des tableaux à taille variable
(ArrayList).
Ce projet utilise quatre classes :
•Starter pour démarrer le projet
•Node le noeud du Graphe de résolution de problème
•Graph pour générer et afficher le graphe de carte sous forme de matrice carrée des
distances
•GUI notre interface graphique
Le site web du projet est accessible à l’adresse indiquée en fin de rapport.
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.
1 / 19 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 !