私は、パスファインディングの形式を実装するように任命されました(コースワーク@大学)。さて、仕様では、検索するノードの数に制限があるため、ブルートフォースを実装することもできます(最初、途中で2つ、最後)が、このコードを再利用して、ダイクストラを実装するようになりました。アルゴリズム。
私はウィキペディアで疑似を見たことがあり、友人も私のためにいくつか書いていますが、それは意味がありません。アルゴリズムは非常に単純に見え、それを理解することは私にとって問題ではありませんが、私はそのようなことを実現するコードを視覚化することはできません。
何か提案/ヒントはありますか?
いくつかの混乱のために編集してください:
はい、ターゲットノードとソースノードがあります。
後でコードを再度使用したいので、「2つの中間停止のみ」の場合ではなく、一般的な場合にダイクストラを実装しようとしています。それ以外の場合は、ブルートフォース実装を作成するだけです。
私が少し問題を抱えている特定の問題は、それらが最適になる可能性がある場合に備えて、次善の半分の形式のパスを保存することです。特定のノードにアクセスしているときに、そのノードを通過するすべての接続を更新する方法がわかりません。
さらに編集:
今すぐいくつかの答えを調べて、試してみてください。
本当に編集:深刻な問題について言及するのを忘れました。これは、任意の2つの頂点間で最大UINT_MAXの異なる距離を持つことができるということです。ごめん。実際、私がこれに対処するのを忘れたという事実は、おそらくそもそもひどい問題の原因ですが、解決策は、幸いなことに、最短のものを選ぶことは私には明らかです。他の人の距離変数の疑似が私の可変距離を考慮していなかったのも不思議ではありません。