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 bacb8e3..21cf642 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,6 +1,9 @@ package org.insa.graphs.algorithm.shortestpath; +import org.insa.graphs.algorithm.utils.BinaryHeap; + public class DijkstraAlgorithm extends ShortestPathAlgorithm { + public DijkstraAlgorithm(ShortestPathData data) { super(data); @@ -11,6 +14,38 @@ public class DijkstraAlgorithm extends ShortestPathAlgorithm { final ShortestPathData data = getInputData(); ShortestPathSolution solution = null; // TODO: + + //initialisation + BinaryHeap tas=new BinaryHeap(); + Label[] tablabel=new Label[data.getGraph().size()]; + for (int i=0;itablabel[x].cout+(int)tablabel[y].pere.getMinimumTravelTime()) { + tablabel[y].cout=tablabel[x].cout+(int)tablabel[y].pere.getMinimumTravelTime(); + if (exist y in tas) { + tas.update(y); + }else { + tas.insert(y); + } + } + } + } + + exnonmar=false; + } + return solution; } diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/Label.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/Label.java index c8f447d..ac618fd 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/Label.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/Label.java @@ -5,10 +5,6 @@ import org.insa.graphs.model.Node; public class Label { - //comment avoir le nombre de nodes dans le graph? (pour lier un unique label à chaque node) - private Label[] tablabel=new Label[50000000];//5000000 placeholder - - //quelles valeurs de protection? protected Node sommet_courant; @@ -24,29 +20,20 @@ public class Label { //constructeur public Label(Node sommet,Arc padre, int prix) { - if (tablabel[sommet.getId()]==null) - this.sommet_courant=sommet; + this.sommet_courant=sommet; this.pere=padre; this.cout=prix; this.marque=false;//!\\ pas sûr que ce soit une bonne idée - tablabel[sommet.getId()]=this; - } + } - //la condition tablabel==null est un placeholder /!\ public Label(Node sommet,Arc padre, int prix, boolean mark) { - if (tablabel[sommet.getId()]==null) - this.sommet_courant=sommet; + this.sommet_courant=sommet; this.pere=padre; this.cout=prix; this.marque=mark; - tablabel[sommet.getId()]=this; } - public Label getLabel(Node unnode) { - return tablabel[unnode.getId()]; - } - public int getCost() { return this.cout; }