2013-10-18 4 views

答えて

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

具体的なケースでバックグラウンドを構成するものについてもっと詳しく調べてください。ありがとうございました! – bluejamesbond

+0

@bluejamesbondここでは、バックエッジはbからs、cからb、tからcを指しています(これは、パスに沿ったエッジの逆です)。これらのエッジは、フローが最大ではないことを示すsからtへの拡大経路を与える。 – templatetypedef

+0

しかし、そのパスはいつかかりますか? – bluejamesbond

関連する問題