Étant donné un digraphe pondéré et une fonction de pondération, d ( u , v ) , on peut normalement utiliser l'algorithme de Dijkstra pour obtenir le chemin le plus court. Ce que je suis intéressé, est de savoir comment obtenir le 2 n d chemin -shortest, le 3 r d -shortest, et ainsi de suite.
Des questions:
Existe-t-il un algorithme efficace pour obtenir le ième chemin le plus court entre deux nœuds dans un graphique pondéré?
Existe-t-il un algorithme efficace pour obtenir les k chemins les plus courts entre deux nœuds dans un graphe pondéré?
Une réponse à l'une ou l'autre est OK, bien que je me demande si une réponse à la deuxième question peut être faite plus efficacement que appels à une réponse à la première question.
algorithms
graphs
shortest-path
graph-traversal
Realz Slaw
la source
la source
Réponses:
Si vous interdisez les cycles, vous voudrez peut-être regarder l'algorithme de Hershberger et al. [2].
[1] Eppstein, David. "Trouver les k chemins les plus courts." SIAM Journal on computing 28.2 (1998): 652-673. [ CiteSeerX ]
[2] Hershberger, John, Matthew Maxel et Subhash Suri. "Trouver les k chemins simples les plus courts: un nouvel algorithme et sa mise en œuvre." Transactions ACM sur algorithmes (TALG) 3.4 (2007): 45. [ CiteSeerX ]
la source