From 7776e34f92c8aafc9af48c4c82bec7a6da9d3709 Mon Sep 17 00:00:00 2001 From: Yohan Simard Date: Wed, 22 Apr 2020 18:32:33 +0200 Subject: [PATCH] Dijkstra tests --- .../graphs/algorithm/ArcInspectorFactory.java | 29 ++++++++ .../shortestpath/DijkstraAlgorithm.java | 11 +++ .../graphs/algorithm/utils/BinaryHeap.java | 30 ++++++++ .../shortestpath/DijkstraAlgorithmTest.java | 74 +++++++++++++++++++ 4 files changed, 144 insertions(+) create mode 100644 be-graphes-algos/src/test/java/org/insa/graphs/algorithm/shortestpath/DijkstraAlgorithmTest.java diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java index d43df60..84a845f 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/ArcInspectorFactory.java @@ -168,6 +168,35 @@ public class ArcInspectorFactory { } }); + + // No filter (all arcs allowed), time: + filters.add(new ArcInspector() { + @Override + public boolean isAllowed(Arc arc) { + return true; + } + + @Override + public double getCost(Arc arc) { + return arc.getMinimumTravelTime(); + } + + @Override + public int getMaximumSpeed() { + return GraphStatistics.NO_MAXIMUM_SPEED; + } + + @Override + public Mode getMode() { + return Mode.TIME; + } + + @Override + public String toString() { + return "Fastest path, all roads allowed"; + } + }); + // Add your own filters here (do not forget to implement toString() // to get an understandable output!): 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 6e759a4..fb1e027 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 @@ -42,12 +42,20 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm { heap.insert(labels.get(originId)); notifyOriginProcessed(data.getOrigin()); +// int iterationCounter = 0; + while (!heap.isEmpty()) { +// iterationCounter++; // Get the node with the minimum cost Label currentLabel = heap.deleteMin(); currentLabel.mark(); Node currentNode = currentLabel.getNode(); +// System.out.printf("Label marked : cost = %f; %d succesors; heap valid = %b \n", +// currentLabel.getCost(), +// currentNode.getSuccessors().size(), +// ((BinaryHeap