diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm.java index 165f596..df37bf8 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithm.java @@ -34,7 +34,7 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm { final int nbNodes = graph.size(); final Node destination = data.getDestination(); final Node origin = data.getOrigin(); - + // affichage de l'inspector utilisé System.out.println("Inspector utilisé est : " + inspector.toString()); @@ -60,7 +60,9 @@ 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()]); - // variable qui nous permet de garder les arcs ajoutés pour les mettre dans le path plus tard + // 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 arcsajout = new ArrayList(); // itération // condition d'arrêt 1: tas vide (soit on a réellement fini soit le point de destination ne fait pas parti de la même composante connexe) @@ -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