ダイクストラのアルゴリズムが負のエッジを持つ非巡回有向グラフで機能しない理由を理解できません。私が理解しているように、ダイクストラはグラフの幅優先トラバーサルを行い、適切なときにリラックスします。たとえば、次のグラフを考えてみましょう。
S->A (3)
S->B (4)
B->A (-2)
ここで、S はソース ノードです。これは私がそれが機能していると想像する方法です:
1) 距離 3 で A をマークします。距離 4 で B をマークします。
2) A を再帰します。A はノードを指していないので、何もしません。
3) B を再帰します。B は A を指しているので、B の距離 + B->A が A の現在の距離よりも小さいかどうかを確認します。2 < 3 なので、距離 2 で A をマークします。
しかし、私が使用している本は、ネガが機能しない理由を示すためにまさにこのグラフを示しているため、明らかにこれは機能する方法ではありません. 本の説明についていけない。ダイクストラはこのグラフをどのように処理するのでしょうか?また、なぜ彼らは私が想像している方法を使用しないのでしょうか?