TP 3 : Programmer l’algorithme de Dijkstra

Lors de ce TP, nous allons programmer l’algorithme de Dijkstra pour trouver un plus court chemin pour attraper un unique morceau de fromage dans un labyrinthe contenant de la boue.

File de priorité

La bibliothèque Python heapq permet de réaliser facilement une file de priorité. Voici un lien vers la doc officielle.

Avec ce module, vous pouvez créer une file de priorité simplement comme suit :

Les éléments sont ajoutés à la file via la fonction heappush, et retirés via la fonction heappop. Cette dernière fonction renvoie (en le retirant de la structure) l’élément minimum. Pour associer une clé aux éléments de la liste, il suffit d’insérer une paire dans la file de priorité, comme suit :

Dijkstra

Implémenter l’algorithme de Dijkstra, ainsi que le routage permettant de reconstruire un plus court chemin d’un point A à un point B.

Quoi faire ensuite ?

Les résultats obtenus en suivant ce TP seront présentés lors de l’entretien de la séance 6.

Ramassez un morceau de fromage dans un labyrinthe pondéré (ou non) en utilisant un chemin le plus court.

Tracez l’influence de la taille du labyrinthe (ou d’un autre paramètre plus intéressant) sur la longueur du chemin le plus court.

Allez plus loin ! Quelques pistes : comparaisons avec Floyd-Warshall, lien mesures/complexité, meilleure implémentation de l’algorithme, etc.

Publié le

Laisser un commentaire