└── Dijkstra /Dijkstra: -------------------------------------------------------------------------------- 1 | public static Graph calculateShortestPathFromSource(Graph graph, Node source) { 2 | source.setDistance(0); 3 | 4 | Set settledNodes = new HashSet<>(); 5 | Set unsettledNodes = new HashSet<>(); 6 | 7 | unsettledNodes.add(source); 8 | 9 | while (unsettledNodes.size() != 0) { 10 | Node currentNode = getLowestDistanceNode(unsettledNodes); 11 | unsettledNodes.remove(currentNode); 12 | for (Entry < Node, Integer> adjacencyPair: 13 | currentNode.getAdjacentNodes().entrySet()) { 14 | Node adjacentNode = adjacencyPair.getKey(); 15 | Integer edgeWeight = adjacencyPair.getValue(); 16 | if (!settledNodes.contains(adjacentNode)) { 17 | calculateMinimumDistance(adjacentNode, edgeWeight, currentNode); 18 | unsettledNodes.add(adjacentNode); 19 | } 20 | } 21 | settledNodes.add(currentNode); 22 | } 23 | return graph; 24 | } 25 | --------------------------------------------------------------------------------