From dab81d1bca034e0dc96ed52a04b56e81da85c87a Mon Sep 17 00:00:00 2001 From: Cavailles Kevin Date: Thu, 2 Apr 2020 21:37:47 +0200 Subject: [PATCH] algorithme de dijkstra + commentaires --- .../shortestpath/DijkstraAlgorithm.java | 124 ++++++++++++++++-- .../graphs/algorithm/shortestpath/Label.java | 54 ++++++++ .../graphs/algorithm/utils/BinaryHeap.java | 17 +++ .../org/insa/graphs/gui/simple/Launch.java | 38 ++++-- .../main/java/org/insa/graphs/model/Path.java | 22 ++-- 5 files changed, 223 insertions(+), 32 deletions(-) create mode 100644 be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/Label.java 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..9fafe4c 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,17 +1,121 @@ package org.insa.graphs.algorithm.shortestpath; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.PriorityQueue; + +import org.insa.graphs.algorithm.AbstractSolution.Status; +import org.insa.graphs.algorithm.utils.BinaryHeap; +import org.insa.graphs.model.Arc; +import org.insa.graphs.model.Graph; +import org.insa.graphs.model.Node; +import org.insa.graphs.model.Path; + public class DijkstraAlgorithm extends ShortestPathAlgorithm { - public DijkstraAlgorithm(ShortestPathData data) { - super(data); - } + public DijkstraAlgorithm(ShortestPathData data) { + super(data); + } - @Override - protected ShortestPathSolution doRun() { - final ShortestPathData data = getInputData(); - ShortestPathSolution solution = null; - // TODO: - return solution; - } + @Override + protected ShortestPathSolution doRun() { + final ShortestPathData data = getInputData(); + Graph graph = data.getGraph(); + + final int nbNodes = graph.size(); + + // Create the heap and a static array to store the labels + org.insa.graphs.algorithm.utils.PriorityQueue