Ajout des notify pour Dijkstra et vérification de Dijkstra visuellement

This commit is contained in:
knzrd 2025-05-24 18:28:16 +02:00
parent dc63c1178f
commit a9cfc4d635

View file

@ -60,6 +60,8 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm {
// on met le label du sommet origine dans le tas
// il n'est pas nécessaire de réordonner le tas car cela est implémenté dans la méthode insert
tas.insert(tableau_label[origin.getId()]);
// On notifie le fait qu'on a pris en compte l'origine
notifyOriginProcessed(origin);
// variable qui nous permet de garder les arcs ajoutés pour les mettre dans le path plus tard
List<Arc> arcsajout = new ArrayList<Arc>();
// itération
@ -70,7 +72,9 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm {
// inutile : tas.findMin().setmarque(true);
labelcourant = tas.deleteMin();
labelcourant.setmarque(true);
// on notifie le fait qu'on a un node marqué
//on appelle directement la fonction car DjikstraAlgorithm hérite de la classe ShortestPathAlgorithm
notifyNodeMarked(labelcourant.getsommetcourant());
// pour l'ensemble des arts existants à partir du nodecourant
for (Arc arcscourants : labelcourant.getsommetcourant().getSuccessors()){
// Utilisation condition pour savoir si un arc peut être utilisé ou pas en fonction
@ -92,6 +96,8 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm {
labelchanger.setcoutrealise(cout_nv);
// on indique que l'arc pere est arcscourants
labelchanger.setarcperefils(arcscourants);
// On notifie le fait qu'on a un nouveau node accessible
notifyNodeReached(labelchanger.getsommetcourant());
try {
// on met ce noeud dans le tas si il n'y a jamais été mis auparavant
tas.remove(labelchanger);
@ -113,6 +119,8 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm {
solution = new ShortestPathSolution(data, AbstractSolution.Status.INFEASIBLE);
}
else {
// On notifie le fait qu'on a trouvé la destination
notifyDestinationReached(destination);
// stockage de la liste des arcs de l'origine a la destination (on a besoin de le faire dans l'ordre inverse)
Arc dernier_arc_traite = tableau_label[destination.getId()].getarcpere_fils();
// avec la condition du while on s'arrete à l'origine