FICHE SYNOPTIQUE


Candidat : RIPPLINGER Victor

Sujet : algorithmes d'optimisation de trajectoire

Introduction

Pour se déplacer d'un point à un autre sur une carte, il est souvent utile de connaître le plus court chemin. Un réseau de sommets étant fixé, vient le problème de détermination de chemins optimaux dans le réseau. J'aborderai ici d'abord le problème de plus courts chemins d'un sommet à un autre avec les algorithmes de Bellmann-Ford, et A*. La complexité des réseaux nécessite parfois l'intervention de l'informatique, et donc la recherche d'algorithmes efficaces. L'algorithme de Bellmann-Ford résout le problème formellement, tandis que l'algorithme A* en est une résolution plus efficace, adaptée aux jeux vidéo. Enfin, on peut aussi avoir besoin de rechercher le plus court chemin passant par tous les sommets : c'est le problème du voyageur de commerce, résolu par les algorithmes 2-opt et de Lin-Kernighan.


Méthode de travail, expériences personnelles

Lors de l'étude de différents algorithmes de plus courts chemins, j'ai souhaité faire moi-même des tests sur ordinateur pour les expérimenter. J'ai ainsi réussi à programmer l'algorithme de Bellman-Ford en langage Caml, puis l'algorithme A* en ActionScript (Flash), qui m'a donné beaucoup de difficultés à cause de son implémentation complexe. Pour la suite, il se trouvait qu'un ami s'intéressait au même domaine que moi pour les TIPE. Nous nous sommes donc associés et nos recherches se sont orientées vers le problème du voyageur de commerce. L'algorithme le plus simple de résolution de ce problème s'appelait le 2-opt, dont nous avons trouvé un algorithme. Nous avons donc essayé de l'interpréter en Caml. Ce n'est qu'après de nombreux essais d'implémentations que nous somme parvenus à obtenir un programme opérationnel satisfaisant. Mais nous ne voulions pas nous arrêter là. Il existe un autre algorithme, dit de Lin-Kernighan, plus efficace mais plus subtil à comprendre et plus compliqué à implémenter, permettant de résoudre ce problème. Ayant trouvé une documentation complète de cet algorithme, j'ai décidé de le programmer lui aussi, malgré les difficultés supplémentaires qui s'annonçaient par rapport au 2-opt. Le document fournissait là encore l'algorithme, mais cette fois destiné à un langage impératif. Il m'a donc fallu réécrire l'ensemble du code pour adapter les structures impératives au langage Caml. Alors, j'ai pu aborder l'interprétation du code en Caml, bien que le programme que j'ai produit ne s'avère pas très satisfaisant pour la tâche qu'il devrait accomplir.
Commentaire : Après la rédaction de cette fiche synoptique, j'ai continué à travailler sur l'algorithme. Il suffisait de résoudre encore quelque bugs et celui-ci a fini par marcher correctement.


Plan

Parmi tous les algorithmes que j'ai étudiés, j'ai choisi d'en présenter trois, chacun représentant un problème différent et un principe de base différent, pour avoir une vision globale du sujet :
* L'algorithme de Bellmann-Ford
* L'algorithme A*
* L'algorithme de Lin-Kernighan


Contacts avec des professionnels

Pour la recherche de plus courts chemins :
* Sociétés de calculs d'itinéraire en ligne : Google Maps, ViaMichelin, Mappy
* Sociétés proposant des services de GPS : Mappy GPS et Tomtom
* Développeurs de jeux vidéo utilisant : Gas Powered Games
Les sociétés ayant répondu ont dit transférer mes demandes à leurs experts, mais sans suite.

Pour le problème du voyageur de commerce :
* Giga-Concept, Opti-Time : refus de dévoiler leurs algorithmes
* Keld Helsgaun, professeur associé en informatique : pas de réponse


Bibliographie

Livre :
* Introduction à l'algorithmique de Thomas H. Cormen, Charles E. Leiseron, éditions Dunod, partie "plus courts chemins à origine unique"

Sites Internet :
* http://www.policyalmanac.org/games/aStarTutorial.htm - Pathfinding A* pour les débutants
* http://fr.wikipedia.org/wiki/2-opt - présente l'algorithme 2-opt en pseudo-code
* http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.25.4908&rep=rep1&type=pdf - Une implémentation de l'algorithme de Lin-Kernighan