2013-01-21 3 views
-4

Est-ce que quelqu'un connait l'algorithme pour trouver le chemin k-plus court, j'ai cherché sur Internet et trouvé le Yen mais c'est si complexe?Trouver le chemin K-plus court entre deux nœuds dans le graphique?

Merci beaucoup.

+0

Merci, pense que ce site est juste pour les gens qui savaient tout.Si nous le savions, nous n'allons jamais ici – NoCountry4OldMan

+2

@ DzokerP Je comprends votre frustration, mais ce n'est pas un site pour les gens qui savent tout. Il s'agit cependant d'un site auquel des personnes répondent gratuitement dans notre temps libre. Si vous ne mettez pas beaucoup d'efforts dans une question, les autres ne passeront pas de temps sur une réponse. Essayez de lire les directives de Jon Skeet en posant une bonne question: http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx – HaemEternal

+1

Aussi, je ne pense pas que ce soit notre devoir de lui montrer comment fonctionne l'algorithme. Les algorithmes sont pleins de mathématiques, si il/elle n'est pas capable de comprendre, il/elle devrait apprendre la mathématique. Imho cette question n'a rien à voir avec SO et devrait être placée dans mathematica. En outre, «je trouve que l'algorithme de yen est si long» et «c'est tellement complexe» ne montre aucun effort pour comprendre l'algorithme, mais montre qu'il/elle ne veut tout simplement pas faire le travail. -1 – jAC

Répondre

3

Il ne peut être fait efficacement (polynomiale) - le problème est NP-Hard

penser de cette façon - est que vous pourriez même trouver la longueur du chemin le plus court ak (asssume chemin simple ici) polynomiale, par faire une recherche binaire sur la plage [1,n!] pour k, vous pouvez trouver s'il y a un hamiltonian path dans le graphique (en trouvant un chemin de longueur n).

Comme le hamiltonian path problem est NP-Hard, il en va de même pour ce problème, et il n'y a pas de solution polynomiale connue.


(1) probablement, à moins P=NP, mais la plupart des chercheurs croient CS il est très peu probable

+0

sr mais avez-vous un projet sur ce problème, je trouve que l'algorithme de yen est si long – NoCountry4OldMan

1

Au total, maintenant ...

Google pour l'algorithme de Djikstra. Il y a une implémentation here.

+0

L'algorithme de Dijkstra trouve le chemin le plus court, pas le kième chemin le plus court. – amit

+0

Pas de problème, mais le titre de votre question est ambigu. – Matt

+0

ouais, Dij est pour le chemin le plus court ;-( – NoCountry4OldMan

0

Ceci est résolu avec l'ensemble de dissociation. Google, mais en un mot, vous avez 2 vecteurs. un pour les parents initialisé avec -1. l'autre pour le rang initialisé avec zéro. Commencez maintenant par le noeud source. vous allez pour chaque noeud possible, vous pouvez obtenir à partir de là. ajoutez-les à votre ensemble en faisant leur parent [i] = noeud actuel. La décision que l'on sera le parent de qui est fait en fonction du rang [i] qui détient le numéro

+0

merci, je vais essayer ... – NoCountry4OldMan

Questions connexes