Bellman-Ford アルゴリズムは単一ソースの最短経路アルゴリズムであるため、エッジの重みが負の場合、グラフ内の負のサイクルを検出できます。
2 つの唯一の違いは、Bellman-Ford は負の重みも処理できるのに対し、ダイクストラ アルゴリズムは正の重みしか処理できないことです。
ウィキから
ただし、ダイクストラのアルゴリズムは、まだ処理されていない最小の重みのノードを貪欲に選択し、すべての出力エッジでこの緩和プロセスを実行します。対照的に、Bellman–Ford アルゴリズムは単純にすべてのエッジを緩和し、これを |V | 行います。− 1 回、ここで |V | グラフの頂点の数です。これらの繰り返しのそれぞれで、正しく計算された距離を持つ頂点の数が増え、最終的にすべての頂点が正しい距離を持つことになります。この方法により、Bellman–Ford アルゴリズムを Dijkstra よりも広いクラスの入力に適用できます。
ただし、典型的なバイナリ ヒープ優先度キューの実装には O((|E|+|V|)log|V|) 時間の複雑さがある [フィボナッチ ヒープ優先度キューは O( |V|log|V| + |E|)]、Bellman-Ford アルゴリズムの複雑さは O(|V||E|) です。