Let
a_1, ..., a_n
俳優。各俳優の費用はc_1, ..., c_n
です。また、我々は投資家がb_1,..., b_m
を持っているので、各投資家はq_j
を私たちの映画のお金に使っています。投資家が彼の好きな俳優のすべてが私達の映画の中にあれば、投資家は私たちの映画にお金を入れるでしょう。 もちろん、複数の投資家がいるかもしれません。私たちの利益(投資マイナス給与の合計の、すなわち合計)最も収益性の高い手配を見つける最大の流れ
は、基本的には解決策が重量q_i
の縁と各投資家にいくつかの頂点s
を接続することですを最大化するために俳優/投資家のサブセットを検索します。次に、各投資家を重みの端のある俳優に接続します。infinity
最後に、各アクターを、ある程度の頂点t
に接続し、エッジの重みはc_i
です。
次に、最大フローを探します。
私の質問は以下のとおりです。
- なぜそれが動作しますか?
- 私は、これらの俳優/投資家のサブセットを見つけるには、最小限のカット
(S,T)
を見る必要があり、次に、picked_investors = S ∩ investors
とpicked_actors = S ∩ actors
があると言われました。あなたはそれを説明できますか? - フローが2つのサブセットを見つけるためにどこを見てもらえませんか?
詳細な回答ありがとうございます。私はまだ何かを完全に理解していません。我々はマックスフローを探しています。したがって、私たちは、俳優に配られた金を増やすことを考えています(もっと多くの流れが「t」に行くでしょう)。しかし、実際には最小限に抑える必要があります。あなたは私の誤解を明らかにすることができますか? – Elimination
最大の流れ自体を忘れて、私は混乱がそれから来ると思います。上記のように、問題文はミニカット問題に変換されます。ここではmaxflowはありません(二重性を無視します)。だから最小のカット問題を解決したい。どうすればいいの?そのための最良のアルゴリズムは、二重問題(maxflow)に行き、それを解決し、それをミニカットに変換します。 – AlexAlvarez