グラフ内の頂点間の最小距離とパスを取得する方法を見つけようとしています。私は自分の必需品に適応したソリューションを見つけました。私施行私は話している:http://www.vogella.com/tutorials/JavaAlgorithmsDijkstra/article.html#shortestpath_problemDijkstraアルゴリズム複数の辺が最小値を見つける
私が約質問している一つの問題があります。あなたが見ることができるように、2つの頂点を結ぶ唯一の辺があります。その場合、私は必要な結果を得ます。 しかし、テストクラスで私はちょうどのは、このような他のものよりも低体重で頂点1と頂点2を言わせてリンクする別のエッジを追加した場合:(
addLane("Edge_0", 0, 1, 85);
addLane("Edge_1", 0, 2, 217);
addLane("Edge_12", 0, 2, 210); //as you can see, added this one
addLane("Edge_2", 0, 4, 173);
addLane("Edge_3", 2, 6, 186);
addLane("Edge_4", 2, 7, 103);
addLane("Edge_5", 3, 7, 183);
addLane("Edge_6", 5, 8, 250);
addLane("Edge_7", 8, 9, 84);
addLane("Edge_8", 7, 9, 167);
addLane("Edge_9", 4, 9, 502);
addLane("Edge_10", 9, 10, 40);
addLane("Edge_11", 1, 10, 600);
この場合は、イム検索しようと言うことができます10の頂点0からのパス/距離)私はまだ正しいパス(Vertex_0取得 - > Vertex_2 - > Vertex_7 - > Vertex_9 - > Vertex_10を)しかし、私はちょうど行う場合:
dijkstra.getShortestDistance(nodes.get(10)); //to get the distance from the source to the destination which in this case is the Vertex_10
それは私に間違った距離を与えます私は頂点_0から頂点_2までの別の辺を低い重みで追加したので、520となるはずです(527)。ゲー
私は自分自身を明確にしたかどうか分かりませんが、もしあなたがアイデアを持っていれば、私はそれを感謝します。
注:私は、これは巨大な取得が、リンクをチェックしないと、ここで休息を貼り付けていなかった、それがための方法getDistanceのすべてが
:実装を次のダイクストラの適切な実施を作るのいずれかが見つかりました[ここ](https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm#Pseudocode)または単にトラバース2つのノード間の最短エッジ(最小ウェイト) – Paul
それらの距離を歌う?それらのメソッドはプライベートです.... –
私はそれを適合させる前に私は私が公共に必要なものを作った – anthony