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 bbe10db..165f596 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 @@ -4,6 +4,8 @@ import java.util.ArrayList; import java.util.List; import org.insa.graphs.algorithm.AbstractSolution; +import org.insa.graphs.algorithm.ArcInspector; +import org.insa.graphs.algorithm.ArcInspectorFactory; import org.insa.graphs.algorithm.utils.BinaryHeap; import org.insa.graphs.algorithm.utils.ElementNotFoundException; import org.insa.graphs.model.Arc; @@ -24,12 +26,17 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm { // retrieve data from the input problem (getInputData() is inherited from the // parent class ShortestPathAlgorithm) final ShortestPathData data = getInputData(); + // on crée un inspector qui nous permettra de savoir si on peut ou pas utiliser un arc + ArcInspector inspector = data.getArcInspector(); + // on change l'inspector au mode qui nous intéresse soit ici voiture ( qui est a la deuxieme case du tableau) + //inspector = ArcInspectorFactory.getAllFilters().get(1); final Graph graph = data.getGraph(); 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()); // variable that will contain the solution of the shortest path problem ShortestPathSolution solution = null; @@ -66,7 +73,10 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm { // pour l'ensemble des arts existants à partir du nodecourant for (Arc arcscourants : labelcourant.getsommetcourant().getSuccessors()){ - Node successeur = arcscourants.getDestination(); + // Utilisation condition pour savoir si un arc peut être utilisé ou pas en fonction + // du mode de transport (piéton ou voiture ) + if(inspector.isAllowed(arcscourants)){ + Node successeur = arcscourants.getDestination(); // si le successeur n'est pas marqué on vérifie son coût courant if(!(tableau_label[successeur.getId()].getmarque())) { // on accède au cout de l'arc (partie inspirée de BellmanFord) @@ -92,6 +102,8 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm { } } } + } + } diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/ShortestPathData.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/ShortestPathData.java index 4041eb3..a9b2cf9 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/ShortestPathData.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/ShortestPathData.java @@ -40,6 +40,11 @@ public class ShortestPathData extends AbstractInputData { return destination; } + // Ajout : getter pour l'arc Inspector + public ArcInspector getArcInspector(){ + return this.arcInspector; + } + @Override public String toString() { return "Shortest-path from #" + origin.getId() + " to #" + destination.getId()