Pourriez-vous recommander une bibliothèque Java qui implémente l'algorithme K-Shi-shirt -> Recherche de manière alternative, pas la seule la seule la plus courte dans MultiCraph? P>
Je n'ai trouvé que JGRAPHT, mais il y a en réalité un bug (que j'ai soumis) mais il faudra beaucoup de temps pour le réparer, je suppose, y a-t-il d'autres implémentations disponibles? Sauf jgrapht je n'ai trouvé que de petits projets uniques: / p>
ou serait difficile de modifier Disjktra Le chemin le plus court alg pour afficher des chemins alternatifs? p>
merci p>
3 Réponses :
Il y a eu une demande similaire auparavant, mais à la recherche de tous les chemins sur Stackoverflow. Trouvez tous les chemins dans un graphique avec DFS P>
J'espère que cela aide, il a été répondu mais non avec la solution exacte, mais plus d'un guide p>
2 options possibles: p>
Option 1. Le Option 2. Vous pouvez également essayer ceci à partir de code.google.com
Cela semble être un effort d'une personne, mais la bonne chose est que l'algorithme est partagé: le classement de Yen - les détails sont ici. ( Notez également que les chemins Code> K-K-shordest CODE> pour des graphiques riches ont tendance à être légères variations du chemin le plus court (DIJKSTRA) - des chemins alternatifs entre les sommets sur le chemin le plus court avec des coûts légèrement supérieurs. P >
Je sais que l'OP a demandé l'OP pour les implémentations Java, mais si les gens ont un choix et que R est une option, alors le espère que cela aide. P> Classe KshortestPath code> de Le paquet MASCOPT est une bonne option pour une implémentation Java de chemins K-Les plus courts. P>
kbestshortestpaths code> paquet de Cran est une très bonne option également. P>
Je viens d'essayer l'option 2: l'algorithme de Yen et ça fonctionnait des merveilles! Heure d'exécution pour un graphique avec ~ 400 nœuds ~ 1000 liaisons est descendue de 3000 ms (pour la mise en œuvre de JGRAPHT) à 0,3 ms pour la mise en œuvre de l'algorithme d'yen. Ouais, 3000 -> 0.3. Ce n'est pas une faute de frappe.
Rechercher les chemins K-shordest sont liés mais pas le même problème que les chemins alternatifs. Les bons chemins alternatifs sont plus compliqués. avoir une lecture où d'autres approches similaires sont décrites: p>
La méthode Plateau est un peu illustrée ici . P>
S'il vous est possible de lire l'allemand, alors Cette conférence est belle : p>
Page 5 P>
Si l'intuition nous dit: une alternative doit avoir une distance ou une durée presque identique. mais devrait être différent significatif. Donc, la première idée: Trouvez un chemin qui minise la longueur et la similarité. Problème: Il pourrait y avoir des détours locaux. P>
Page 6 P>
Nous introduisons un 3ème critère: optimumité locale em>: chaque sous-path court doit être un chemin le plus court. P>
Êtes-vous intéressé par
k code> -Shortest Edge Disjoint ou nœud disjoint chemins? Pour la première fois, regardez dans les algorithmes de flux MIN coûteux.