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..c425177 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,28 @@ package org.insa.graphs.algorithm.shortestpath; +import org.insa.graphs.model.Graph; + public class AStarAlgorithm extends DijkstraAlgorithm { public AStarAlgorithm(ShortestPathData data) { super(data); } + @Override + protected ShortestPathSolution doRun() { + final ShortestPathData data = getInputData(); + Graph graph = data.getGraph(); + final int nbNodes = graph.size(); + LabelStar[] labels = new LabelStar[nbNodes]; + for (int i = 0; i < nbNodes; i++) { + labels[i] = new LabelStar(i); + final double estimatedCost = graph.getNodes().get(i).getPoint().distanceTo( + data.getDestination().getPoint() + ); + labels[i].setEstimatedCost(estimatedCost); + } + return this.doDijkstra(labels, data, graph); + } + + } 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 2aebcfe..b1dd591 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 @@ -1,10 +1,10 @@ package org.insa.graphs.algorithm.shortestpath; import org.insa.graphs.algorithm.AbstractSolution; +import org.insa.graphs.algorithm.utils.BinaryHeap; import org.insa.graphs.algorithm.utils.ElementNotFoundException; import org.insa.graphs.model.Arc; import org.insa.graphs.model.Graph; -import org.insa.graphs.algorithm.utils.BinaryHeap; import org.insa.graphs.model.Node; import org.insa.graphs.model.Path; @@ -22,15 +22,16 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm { @Override protected ShortestPathSolution doRun() { final ShortestPathData data = getInputData(); - Graph graph = data.getGraph(); final int nbNodes = graph.size(); - - // Initialize array of Labels. Label[] labels = new Label[nbNodes]; for (int i = 0; i < nbNodes; i++) { labels[i] = new Label(i); } + return this.doDijkstra(labels, data, graph); + } + + protected ShortestPathSolution doDijkstra(Label[] labels, ShortestPathData data, Graph graph) { final int origin = data.getOrigin().getId(); final int destination = data.getDestination().getId(); labels[origin].setCost(0); @@ -39,7 +40,7 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm { BinaryHeap