diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/AStarAlgorithm.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/AStarAlgorithm.java index fd172f0..1394c6c 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/AStarAlgorithm.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/AStarAlgorithm.java @@ -1,9 +1,14 @@ package org.insa.graphs.algorithm.shortestpath; -public class AStarAlgorithm extends DijkstraAlgorithm { +import org.insa.graphs.model.Node; +public class AStarAlgorithm extends DijkstraAlgorithm { public AStarAlgorithm(ShortestPathData data) { super(data); } -} + @Override + protected Label createLabel(Node node, ShortestPathData data) { + return new LabelStar(node, data.getDestination()); + } +} \ No newline at end of file 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 5d35836..fa6293b 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 @@ -2,7 +2,6 @@ package org.insa.graphs.algorithm.shortestpath; import java.util.ArrayList; import java.util.Collections; - import org.insa.graphs.algorithm.AbstractSolution.Status; import org.insa.graphs.algorithm.utils.BinaryHeap; import org.insa.graphs.model.Arc; @@ -11,80 +10,68 @@ import org.insa.graphs.model.Node; import org.insa.graphs.model.Path; public class DijkstraAlgorithm extends ShortestPathAlgorithm { - public DijkstraAlgorithm(ShortestPathData data) { super(data); } + protected Label createLabel(Node node, ShortestPathData data) { + return new Label(node); + } + @Override protected ShortestPathSolution doRun() { - // retrieve data from the input problem (getInputData() is inherited from the // parent class ShortestPathAlgorithm) final ShortestPathData data = getInputData(); - // variable that will contain the solution of the shortest path problem ShortestPathSolution solution = null; - Graph graph = data.getGraph(); final int nbNodes = graph.size(); - - - //Remplir le tableau - Label[] labels=new Label[nbNodes]; - for (Node node:graph.getNodes()){ - labels[node.getId()]=new Label(node); - - + // Cas special : origine == destination + if (data.getOrigin().getId() == data.getDestination().getId()) { + return new ShortestPathSolution(data, Status.OPTIMAL, new Path(graph, data.getOrigin())); + } + // Remplir le tableau + Label[] labels = new Label[nbNodes]; + for (Node node : graph.getNodes()) { + labels[node.getId()] = createLabel(node, data); + } + BinaryHeap