ジェネリックネガティブサイクルキャンセリングアルゴリズムを使用して、最小コストフローの問題を解決したいと考えています。つまり、ランダムな有効フローから始めて、最小平均コストサイクルなどの「良い」負のサイクルは選択せず、Bellman-Fordを使用して最小サイクルを発見し、発見されたサイクルに沿って拡張します。ましょうグラフ内のノードの数であり、Aのエッジの数、Uグラフにおけるエッジの最大容量、Wグラフにおけるエッジの最大コスト。次に、私の学習資料は次のように主張しています。
- 最初の最大コストはA U W以下にする必要があります
- 1つの負のサイクルに沿った増加により、コストが少なくとも1ユニット削減されます
- 負のコストを許可しないため、最小コストの下限は0です。
- 負の各サイクルは
そして、アルゴリズムの複雑さはであると彼らは言う。私は各主張の背後にある論理を理解していますが、複雑さは異なると思います。具体的には、拡張の最大数は、拡張ごとに1単位のフローによって与えられ、A U Wからゼロまでのコストを取って、最大A U Wの拡張を提供します。それぞれについて負のサイクルを発見する必要があるので、増加の最大数にサイクルを発見するのに必要な時間(V A)を掛けてO (A 2 V Uアルゴリズム。
これは学習教材の誤り(これは、コースからの学生のメモではなく、教授から提供されたテキストです)ですか、それとも私の論理は間違っていますか?