Ajout des notify pour Dijkstra et vérification de Dijkstra visuellement
This commit is contained in:
parent
dc63c1178f
commit
a9cfc4d635
1 changed files with 11 additions and 3 deletions
|
@ -34,7 +34,7 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm {
|
||||||
final int nbNodes = graph.size();
|
final int nbNodes = graph.size();
|
||||||
final Node destination = data.getDestination();
|
final Node destination = data.getDestination();
|
||||||
final Node origin = data.getOrigin();
|
final Node origin = data.getOrigin();
|
||||||
|
|
||||||
// affichage de l'inspector utilisé
|
// affichage de l'inspector utilisé
|
||||||
System.out.println("Inspector utilisé est : " + inspector.toString());
|
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
|
// 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
|
// 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()]);
|
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<Arc> arcsajout = new ArrayList<Arc>();
|
List<Arc> arcsajout = new ArrayList<Arc>();
|
||||||
// itération
|
// 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)
|
// 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);
|
// inutile : tas.findMin().setmarque(true);
|
||||||
labelcourant = tas.deleteMin();
|
labelcourant = tas.deleteMin();
|
||||||
labelcourant.setmarque(true);
|
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
|
// pour l'ensemble des arts existants à partir du nodecourant
|
||||||
for (Arc arcscourants : labelcourant.getsommetcourant().getSuccessors()){
|
for (Arc arcscourants : labelcourant.getsommetcourant().getSuccessors()){
|
||||||
// Utilisation condition pour savoir si un arc peut être utilisé ou pas en fonction
|
// 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);
|
labelchanger.setcoutrealise(cout_nv);
|
||||||
// on indique que l'arc pere est arcscourants
|
// on indique que l'arc pere est arcscourants
|
||||||
labelchanger.setarcperefils(arcscourants);
|
labelchanger.setarcperefils(arcscourants);
|
||||||
|
// On notifie le fait qu'on a un nouveau node accessible
|
||||||
|
notifyNodeReached(labelchanger.getsommetcourant());
|
||||||
try {
|
try {
|
||||||
// on met ce noeud dans le tas si il n'y a jamais été mis auparavant
|
// on met ce noeud dans le tas si il n'y a jamais été mis auparavant
|
||||||
tas.remove(labelchanger);
|
tas.remove(labelchanger);
|
||||||
|
@ -113,6 +119,8 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm {
|
||||||
solution = new ShortestPathSolution(data, AbstractSolution.Status.INFEASIBLE);
|
solution = new ShortestPathSolution(data, AbstractSolution.Status.INFEASIBLE);
|
||||||
}
|
}
|
||||||
else {
|
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)
|
// 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();
|
Arc dernier_arc_traite = tableau_label[destination.getId()].getarcpere_fils();
|
||||||
// avec la condition du while on s'arrete à l'origine
|
// avec la condition du while on s'arrete à l'origine
|
||||||
|
|
Loading…
Reference in a new issue