グラフがダイクストラのアルゴリズムを適用するのに有効である、すなわち負のエッジ重みがないと考えてください。 Dijkstraのアルゴリズムは、各ラウンドの最小距離ノードが抽出されるように選択されている場合にのみ機能します。最小距離ノード以外を抽出するとダイクストラのアルゴリズムが失敗するという証拠は何になるでしょうか? 私は良い議論を探していますが、サポートの例は大歓迎です。Dijkstraのアルゴリズムが各ラウンドでminを抽出することが必須であるのはなぜですか?
3
A
答えて
5
非最小ノードを抽出すると、抽出時に最短距離が分からなかったノードが抽出されます。後で計算されますが、ノードは再度抽出されないため、最後に少なくとも1つの間違った最小距離が残されます。
例:
あなたはそれを抽出するだけなので、あなたはこれを抽出し、d[1] = 0
を持つことになります。
d[3] = 3
d[2] = 1
は今、あなたは
2
を抽出する必要がありますが、あなたは
3
を抽出しましょう:
これが設定されます。
d[4] = 4
と設定します。
次に、2
を抽出し、d[3] = 2
と設定したとします。
次に、4
のみが抽出されます。あなたはそれを抽出し、あなたは完了です。
d[4] = 3
ではなく、d[4] = 4
という間違った値が残っています。
これは、ノードを複数回抽出できないことを前提としています(これは、古典的Dijkstraのアルゴリズムでは不可能です)。あなたがこれを許せば、あなたが提案するものはうまくいくが、間違いなく効率的でもダイクストラのものでもない。
関連する問題
- 1. SagePay v3.0で配信アドレスが必須であるのはなぜですか?
- 2. Angular2でrouterLinkを必須とするのはなぜですか?
- 3. なぜC#ラウンド関数とSQLラウンド関数が異なる出力をもたらすのですか?
- 4. Ford-Fulkersonアルゴリズムでバックエッジが必要なのはなぜですか?
- 5. このアルゴリズムでJavaが長さ> 10000の出力に誤りがあるのはなぜですか?
- 6. ここで二重キャストする必要があるのはなぜですか?
- 7. なぜdata = copy.deepcopy(G)はKarger min cutアルゴリズムの問題ですか?
- 8. なぜmin属性がngChangeを呼び出すのですか?
- 9. Dijkstraのアルゴリズム(Pythonで)
- 10. beforeEach()でspyOnを呼び出す必要があるのはなぜですか?
- 11. 無向グラフのDijkstraのアルゴリズム実装がJavaで動作しないのはなぜですか?
- 12. xsd:enumerationタグを必須/必須にすることはできますか?
- 13. この例では、detachを変数で呼び出す必要があるのはなぜですか?
- 14. 必須プロパティが、Entity Frameworkコアでカスケードされないのはなぜですか?
- 15. iOSでのdijkstraのアルゴリズム
- 16. どのパラメータが必須か、どのパラメータが必須でないかを確認するには? (Visual C++)
- 17. java.sql.Statementが抽象クラスではなく、インタフェースであるのはなぜですか?
- 18. TensorFlow:tf.placeholderとtf.Variable - ディメンションは必須ではないのはなぜですか?
- 19. Gitではマージが必須ですか?
- 20. ここでtypenameが必要なのはなぜですか?
- 21. ここでコンテキストが必要なのはなぜですか?
- 22. ここでエンディアンが必要なのはなぜですか?
- 23. ここでロックが必要なのはなぜですか?
- 24. ここでキャストが必要なのはなぜですか?
- 25. Emberコンポーネントライフサイクルフックメソッド - スーパーを呼び出すことは必須ですか?私のプロジェクトで
- 26. なぜ必須で、デフォルトはndbでは排他的ですか?
- 27. PLSQLブロックでカーソルを閉じることは必須ですか
- 28. 抽象クラスがあるときにインターフェイスが必要なのはなぜですか?
- 29. selectOneMenuで必須となるのはtrueのみですか?
- 30. JSONオクテットとは何ですか。なぜ2つの必須の要素がありますか?