Version Fonctionnelle : Ajout fonctions createPathsFromNodes PATH A JOUR

This commit is contained in:
Paul Faure 2020-03-19 11:49:53 +01:00
parent 3303f2400c
commit 241ff4901e

View file

@ -3,6 +3,7 @@ package org.insa.graphs.model;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Iterator;
/**
* <p>
@ -29,13 +30,42 @@ public class Path {
*
* @throws IllegalArgumentException If the list of nodes is not valid, i.e. two
* consecutive nodes in the list are not connected in the graph.
*
* @deprecated Need to be implemented.
*/
public static Path createFastestPathFromNodes(Graph graph, List<Node> nodes)
throws IllegalArgumentException {
List<Arc> arcs = new ArrayList<Arc>();
// TODO:
if (nodes.size() == 0) {
return new Path(graph);
} else if (nodes.size() == 1) {
return new Path(graph, nodes.get(0));
} else {
Iterator<Node> iterateur= nodes.iterator();
Node nodeOrigin;
Node nodeDest = iterateur.next();
while (iterateur.hasNext()) {
nodeOrigin = nodeDest;
nodeDest = iterateur.next();
List<Arc> successeurs = nodeOrigin.getSuccessors();
Arc shortestArc = null;
double minTravelTime = Float.MAX_VALUE;
for (Arc arc : successeurs) {
if (nodeDest.equals(arc.getDestination()) && (arc.getMinimumTravelTime() < minTravelTime)) {
minTravelTime = arc.getMinimumTravelTime();
shortestArc = arc;
}
}
if (shortestArc == null) {
throw new IllegalArgumentException();
} else {
arcs.add(shortestArc);
}
}
}
return new Path(graph, arcs);
}
@ -50,14 +80,43 @@ public class Path {
*
* @throws IllegalArgumentException If the list of nodes is not valid, i.e. two
* consecutive nodes in the list are not connected in the graph.
*
* @deprecated Need to be implemented.
*/
public static Path createShortestPathFromNodes(Graph graph, List<Node> nodes)
throws IllegalArgumentException {
List<Arc> arcs = new ArrayList<Arc>();
// TODO:
return new Path(graph, arcs);
if (nodes.size() == 0) {
return new Path(graph);
} else if (nodes.size() == 1) {
return new Path(graph, nodes.get(0));
} else {
Iterator<Node> iterateur= nodes.iterator();
Node nodeOrigin;
Node nodeDest = iterateur.next();
while (iterateur.hasNext()) {
nodeOrigin = nodeDest;
nodeDest = iterateur.next();
List<Arc> successeurs = nodeOrigin.getSuccessors();
Arc shortestArc = null;
float minLength = Float.MAX_VALUE;
for (Arc arc : successeurs) {
if (nodeDest.equals(arc.getDestination()) && (arc.getLength() < minLength)) {
minLength = arc.getLength();
shortestArc = arc;
}
}
if (shortestArc == null) {
throw new IllegalArgumentException();
} else {
arcs.add(shortestArc);
}
}
return new Path(graph, arcs);
}
}
/**