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 9bae6bd..0ea7fc9 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 @@ -17,7 +17,7 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm { super(data); } - final private boolean DEBUG = false; + final private boolean DEBUG = true; @Override protected ShortestPathSolution doRun() { @@ -51,6 +51,7 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm { this.log("Cout marqué : " + parentLabel.getCost()); this.log("Nb successeurs : " + parentNode.getNumberOfSuccessors()); + this.log("tas valide : " + heap.isValid(0)); for (Arc arc : parentNode.getSuccessors()) { Label currentLabel = labels[arc.getDestination().getId()]; diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinaryHeap.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinaryHeap.java index a21e211..8b28f73 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinaryHeap.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinaryHeap.java @@ -188,6 +188,29 @@ public class BinaryHeap> implements PriorityQueue { return minItem; } + @Override + public boolean isValid(int index) { + if (this.currentSize <= index) + return true; + + boolean valid = true; + E current = this.array.get(0); + int ileft = indexLeft(index); + int iright = ileft + 1; + + if (ileft < this.currentSize) { + E left = this.array.get(ileft); + if (current.compareTo(left) < 0) + valid = this.isValid(ileft); + } + if (iright < this.currentSize) { + E right = this.array.get(iright); + if (current.compareTo(right) < 0) + valid = this.isValid(iright); + } + return valid; + } + /** * Creates a multi-lines string representing a sorted view of this binary heap. * diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinarySearchTree.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinarySearchTree.java index 32dfbb1..2be6a8c 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinarySearchTree.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinarySearchTree.java @@ -61,4 +61,10 @@ public class BinarySearchTree> implements PriorityQueue< return min; } + @Override + public boolean isValid(int index) { + System.out.println("TODO implement isValid"); + return false; + } + } diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/PriorityQueue.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/PriorityQueue.java index 104f79e..5c807df 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/PriorityQueue.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/PriorityQueue.java @@ -78,4 +78,11 @@ public interface PriorityQueue> { */ public E deleteMin() throws EmptyPriorityQueueException; + /** + * Checks if the current queue is valid + * + * @return If the queue is valid + */ + public boolean isValid(int index); + }