This commit is contained in:
Clement Lacau 2024-04-26 17:10:49 +02:00
parent 9e994c2104
commit 73a1e4a058

View file

@ -18,6 +18,7 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm {
@Override @Override
protected ShortestPathSolution doRun() { protected ShortestPathSolution doRun() {
final ShortestPathData data = getInputData(); final ShortestPathData data = getInputData();
ShortestPathSolution solution = null; ShortestPathSolution solution = null;
@ -35,7 +36,7 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm {
// Init Dijkstra // Init Dijkstra
for (Node node : graph.getNodes()) { for (Node node : graph.getNodes()) {
labels.set(node.getId(), new Label(node)); labels.add(new Label(node));
} }
Label s = labels.get(data.getOrigin().getId()); Label s = labels.get(data.getOrigin().getId());
@ -49,10 +50,9 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm {
Label x = s; Label x = s;
int dest_id = data.getDestination().getId(); int dest_id = data.getDestination().getId();
while (!tas.isEmpty() || labels.get(dest_id).getNode().equals(x.getNode())) { while (!tas.isEmpty() && !(labels.get(dest_id).getNode().equals(x.getNode()))) {
x = tas.deleteMin(); x = tas.deleteMin();
x.mark(); x.mark();
// A marked node is considered as reached // A marked node is considered as reached
notifyNodeReached(x.getNode()); notifyNodeReached(x.getNode());
@ -61,7 +61,7 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm {
for (Arc successorArc : x.getNode().getSuccessors()) { for (Arc successorArc : x.getNode().getSuccessors()) {
Label successor = labels.get(successorArc.getDestination().getId()); Label successor = labels.get(successorArc.getDestination().getId());
if (successor.isMarked()) { if (!successor.isMarked()) {
// This loop serves to get the lentgh of the arc as // This loop serves to get the lentgh of the arc as
// we know its origin and destination // we know its origin and destination
for (Arc arc : x.getNode().getSuccessors()) { for (Arc arc : x.getNode().getSuccessors()) {