TP2
Recherche du plus court chemin
Partie I
• Définir une structure permettant de stocker un graphe;
• Ecrire une procédure permettant de lire un graphe contenu dans un fichier texte et de créer la structure correspondante ;
• Ecrire des procédures permettant de manipuler le graphe (tester si un arc existe, obtenir la valuation d'un arc, retirer un arc du graphe, imprimer la matrice des valuations) ;
Partie II : Implémentation de l'algorithme DIJKSTRA
• initialiser trois structures de données permettant de stocker les sommets visités (initialement, aucun), les sommets atteints (initialement, aucun), les autres sommets (initialement, tous) ;
• initialiser deux structures de données permettant, pour chaque sommet S, de stocker la longueur du plus court chemin connu de X à S, ainsi que le prédécesseur de S dans le plus court chemin de X à S ;
• indiquer que X est atteint, à distance 0 de X, avec comme prédécesseur X ;
• tant qu'il y a encore au moins un sommet atteint
• prendre le sommet Y atteint le plus proche de X ;
• indiquer que Y est visité ;
• pour chaque arête issue de Y et ayant pour extrémité un sommet Z non visité
• si Z n'est pas encore atteint, indiquer qu'il est atteint à partir de Y, en initialisant la longueur du plus court chemin ;
• sinon (Z était déjà atteint), comparer la longueur du chemin allant de X à Z passant par Y à la longueur du plus court chemin connu pour le moment ; si cette longueur est plus petite, mettre à jour le plus court chemin (modifier la longueur, indiquer Y comme prédécesseur)
• on a fini lorsque les n-1 sommets ont été visités ;
• le tableau des prédécesseurs permet de reconstruire (en sens inverse) tous les plus courts chemins ;
Partie III. Complexité
Etudier la complexité des différentes implémentations fournies.
Objet : Calcul de plus courts chemins dans un graphe orienté valué positif, en utilisant l'algorithme de Dijkstra.