Bonjour à toutes et à tous !
Je suis en train de travailler sur l'algorithme de plus court chemin (un noeud vers tous les autres noeuds) dans le cas des graphes (aussi connu sous le nom : "Algorithme de Dijkstra").
J'ai déjà cherché les pseudo code et essayer de comprendre comment cet algorithme fonctionne.
Mon problème se situe au niveau de l'implémentation en Java.
Le chemin obtenu à l'exécution n'est pas le bon, ce qui me frustre beaucoup car je n'arrive pas à le corriger.
Pouvez vous m'aider ?
Globalement, j'ai deux vecteurs, Initial qui contient l'ensemble des noeuds de mon graphe et Solution qui contient les noeuds dans l'ordre du parcours le plus court. Donc au fur et à mesure, je parcours, je supprime les noeuds plus cours et l'ajoute dans le vecteur solution. Quand le vecteur Initialest vide, cela sera fini et j'aurais parcouru en entier le graphe.
J'ai commenté mon code et mis des variables au nom explicite pour une meilleur compréhension (pièce jointe)
J'utilise 4 classes:
* graphe (construit le graphe et implement dijkstra)
* Liste (Liste d'adjacence)
* noeud (créer un noeud)
* test
Voici un exemple de Graphe graphe.jpg
J'ai implémenté ce graphe directement dans mon programme (vous n'avez donc qu'à exécuter).
J'obtiens en résultat :
A partir du noeuds S0, la plus petite distance pour aller au noeuds
0 est 0
1 est 11
2 est 18
3 est 11
4 est 18
5 est 9999 (Infini)
Logiquement, j'aurais du obtenir :
A partir du noeuds S0, la plus petite distance pour aller au noeuds
0 est 0
1 est 2
2 est 5 (par S1 et S4)
3 est 7 (par S1 et S4)
4 est 3
5 est 9999 (Infini)
Je vous remercie d'avance pour votre aide
-----