グラフ内の最大フローを見つけるには、バックエッジを考慮せずに、そのパス内の最小エッジ容量ですべての拡張パスを飽和させるだけで十分ではありませんか?私はそれからの流れを仮定すると、それは後端と呼ぶ点は何ですか?Ford-Fulkersonアルゴリズムでバックエッジが必要なのはなぜですか?
12
A
答えて
15
選択したパスが最終的なフローの一部ではない場合に、Ford-Fulkersonアルゴリズムを実行するときに、バックエッジが必要です。
バックエッジが必要であり、このフローネットワークを考える例として:
s
/\
a b
\/\
c d
\/
t
は、すべてのエッジがダウンポイントとすべてのエッジが容量1を持っていて、T秒からの流れを見つけたいということと仮定。 Ford-Fulkersonの最初の反復で、s→b→c→tの経路を取るとします。この時点で、sからtへの1単位のフローをプッシュしました。あなたが任意のバックエッジには追加しない場合、あなたはこれで左にしている:
s
/
a b
\ \
c d
/
t
そこにはより多くのS-Tのパスはありませんが、それはあなたが最大の流れを持って意味するものではありません。 s→a→c→tの経路とs→b→d→tの経路に沿って、2つの単位フローをsからtにプッシュすることができます。残りのフローネットワークにバックエッジがなければ、この他のパスは決して見つけられません。
希望すると便利です。
関連する問題
- 1. なぜEdmonds-Karp Maximum Flowでバックエッジを考慮する必要がありますか?
- 2. なぜPDFファイルにLOG4JとSLF4Jが必要ですか?なぜ.Docファイルには必要ないのですか?
- 3. MTLVertexAttributeDescriptorsは必要ですか?彼らはなぜ必要なのですか?
- 4. ここでtypenameが必要なのはなぜですか?
- 5. ここでコンテキストが必要なのはなぜですか?
- 6. Redexで評価コンテキストが必要なのはなぜですか?
- 7. ビーコンパーザでパワーバイトが必要なのはなぜですか?
- 8. MFCでランタイムクラス情報が必要なのはなぜですか?
- 9. ここでエンディアンが必要なのはなぜですか?
- 10. Fluxでディスパッチャが必要なのはなぜですか?
- 11. Pythonで「finally」節が必要なのはなぜですか?
- 12. JavaでPropertiesクラスが必要なのはなぜですか?
- 13. ポインタ変換で(void *)が必要なのはなぜですか?
- 14. JSでプロミスが必要なのはなぜですか
- 15. F#関数でカッコが必要なのはなぜですか?
- 16. ここでロックが必要なのはなぜですか?
- 17. gitでSSH鍵が必要なのはなぜですか?
- 18. selectステートメントでINTO句が必要なのはなぜですか?
- 19. Railsでattr_accessorが必要なのはなぜですか?
- 20. lexでルールが必要なのはなぜですか?
- 21. コントローラでInit関数が必要なのはなぜですか?
- 22. Dockerでベースイメージが必要なのはなぜですか?
- 23. ここでキャストが必要なのはなぜですか?
- 24. JavaでString [] argsが必要なのはなぜですか?
- 25. Pythonでコルーチンが必要なのはなぜですか?
- 26. C++ 11でweak_ptrが必要なのはなぜですか?
- 27. FiddlerでHTTP CONNECTトンネルが必要なのはなぜですか?
- 28. なぜ必要なのですか$ = jQuery
- 29. なぜバイナリコードコンバータが必要ですか?
- 30. なぜNotificationCompatが必要ですか?
具体的なケースでバックグラウンドを構成するものについてもっと詳しく調べてください。ありがとうございました! – bluejamesbond
@bluejamesbondここでは、バックエッジはbからs、cからb、tからcを指しています(これは、パスに沿ったエッジの逆です)。これらのエッジは、フローが最大ではないことを示すsからtへの拡大経路を与える。 – templatetypedef
しかし、そのパスはいつかかりますか? – bluejamesbond