J'utilise actuellement l'algorithme de Dijkstra pour trouver le plus court chemin. Cet algorithme me donne le meilleur chemin le plus court mais je veux avoir 2 chemins ou plus. Comment puis-je atteindre cet objectif?multiples chemins les plus courts en utilisant Dijkstra
algorithme est le suivant:
public class Dijkstra
{
public static void computePaths(Vertex source)
{
source.minDistance = 0.;
PriorityQueue<Vertex> vertexQueue = new PriorityQueue<Vertex>();
vertexQueue.add(source);
while (!vertexQueue.isEmpty()) {
Vertex u = vertexQueue.poll();
// Visit each edge exiting u
for (Edge e : u.adjacencies)
{
Vertex v = e.target;
double weight = e.weight;
double distanceThroughU = u.minDistance + weight;
if (distanceThroughU < v.minDistance) {
vertexQueue.remove(v);
v.minDistance = distanceThroughU ;
v.previous = u;
vertexQueue.add(v);
}
}
}
}
que voulez-vous dire par 2 ou plus par an ça? Si le chemin le plus court a une longueur 'x', voulez-vous * tous * chemins de longueur' x'? Ou voulez-vous les 2 chemins les plus courts (où le second pourrait être '> x')? –
https://code.google.com/p/k-shortest-paths/ –
http://en.wikipedia.org/wiki/K_shortest_path_routing –