dijkstra は、パスのコストが単調に増加していると仮定します。それに加えて、(プライオリティ キューを使用した) 順序付けされた検索により、最初にノードに到達したときに、最短パスを介して到達したことがわかります。
これは、負の重みには当てはまりません。負の重みで dijkstra を使用すると、後のパスが前のパスよりも優れていることがわかる場合があります (負の重みが後のステップでパスを改善したため)。
そのため、ベルマンフォードでは、ノードに到着したら、新しいパスが短いかどうかをテストします。対照的に、ダイクストラを使用すると、ノードをカリングできます
いくつかの (ほとんどの) 場合、dijkstra はすべての完全なパスを探索しません。たとえば、G が C のみにリンクされている場合、G を通るパスは、C を通るパスよりもコストが高くなります。bellman-ford は、G を経由して F に至るすべてのパスを引き続き考慮します (ダイクストラは、コストが高く、 C) を通過します。これを行わないと、負のループを見つけることを保証できません。
以下に例を示します。上記はパスAGEFを計算しません。E は、G から到着するまでに既に訪問済みとしてマークされています。