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 7c7c148..0d8a9f8 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 @@ -78,11 +78,15 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm { // Si le noeud n'a pas déjà était rajouté au tas, on le rajoute // isReached permet de vérifier en complexité O(1) // C'est un léger coût en mémoire pour un gain en vitesse - if (!successor.isReached()) { - tas.insert(successor); + if (successor.isReached()) { + // removing then inserting resorts the binary heap + tas.remove(successor); + } else { successor.markReached(); notifyNodeReached(successor.getNode()); } + + tas.insert(successor); } } }