私はこのアルゴリズムを有向グラフに実装しています。しかし、このグラフノードに関する興味深い点は、独自のフロー容量も持っています。私は、元の問題のこの微妙な変更を特別な方法で処理しなければならないと考えています。元々の最大流量問題では、最初から最後までパスを見つけることは大丈夫でした(実際には、Edmonds-Karpアルゴリズムでは、BFSを実行し、最後のノードに到達する最初のパスを選択する必要があります)私たちは「このパス選択」の仕事にもっと注意する必要があります。元のアルゴリズムを実装し、max-flowよりも小さなフロー値を得ていることがわかったので、このノード容量制限と関係があるのかどうかは疑問です。Edmonds-Karpフロー容量のノードを持つグラフのアルゴリズム
私はこれに多くの努力を払い、自己ループを追加することによってノードに容量制限のないグラフに初期グラフを変換するような考えを思いつきました(各ノードに自己ループを追加し、 - 経路上の各ノードのループ)、または重みが初期のノード容量の制約を上回る仮想ノードとエッジを追加することです。しかし、これらのどれもがこの問題の解決策であるとは確信していません。
どんな考えでも大歓迎です。
ありがとうございます。あなたのグラフのすべての頂点v
については
、2つの頂点v_in
とv_out
と交換してください:
私は最初の質問とはあまり関係がありませんが、Edmonds-Karpアルゴリズムを使用する前にグラフでサイクルを処理するような削減があるかどうかを知りたいのです。サイクルが適切に処理されないと、何らかの形でmax-flowが変化するためです。 私が思うに、それはあなたが言ったようなものを減らすことができます。そのサイクル内のすべての頂点の代わりに、cycle_inとcycle_outという頂点カップルを持つことができます。また、cycle_inとcycle_outから同じ容量のエッジで、サイクル内の頂点からのすべての入/切エッジを置き換えることができます。それはOKだろうか? – bfaskiplar
(cycle_in、cycle_out)エッジの容量について忘れてしまった。これは、すべての古いエッジおよびノードの容量の最小値でなければなりません。しかし、循環グラフの最大流量問題のために、これが間違った構成であると私は思いついています。 – bfaskiplar