質問

バイパリットグラフ $ g=(v_1 \ cup v_2、e)$ とset $ v '\(V_1 \ CUP V_2)$ $ g $ で最大マッチングを見つけるのは、 $ x $ verticesからのの頂点からの複雑さとは何ですか?SPAN CLASS="Math-Container"> $ v '$

役に立ちましたか?

解決

set $ v_i '= v_i \ cap v' $ 。これを解決するには、 $ k $ verticesを使用して最大マッチングを見つけることができ、 $ v_1 '$ $ v_2 '$ v_2' $ v_2 '$ x from $ xk $ $ k \ in [0、x] $ 。これは最大の流れで見つけることができます。

この最大マッチングを見つけるために、私たちは最大限のフローを通常の低減を変更します。 $ s $ をソースと $ t $ になります。 $ l $ $ r $ を補助頂点にする。 $ s $ から capacity $ K $ 、および $ r $ から $ t $ からのエッジ $ xk $ 。他のすべてのエッジには容量 $ 1 $ があります。 $ l $ からエッジを追加する $ x \ x \ x \ x \ x¥x¥span>、 $ s $ v_1 \ setminus v_1 '$ ごとの $ x \ x \ $ \ \ $ y \ inv_2 '$ から $ r $ から$ r $ へのエッジを追加します。 class="math-container"> $ y \ in v_2 \ setminus v_2 '$ $ t $ $(x、y)\ in $ の場合は、 $ x $ から $ Y $ 。現在、最大フローは、 $ v_1 '$ $ k $ verticesを使用して最大のマッチングを与えます。 span class="math-container"> $ xk $ $ v_2 '$

$ \ mathcal {}(x \ cdot m)$ の問題を解決することができます $ m $ は最大フローの複雑さです。最大流動問題は非常によく似ているので、これを改善することができます。

$ \ mathcal {の最大フローを維持しながら、 $ 1 $ によるエッジの容量を増減することができます。 o}(| e |)$ 。まず、 $ v '$ の頂点がないことを使用して最大マッチングを計算します。その後、エッジの容量を $ S $ から $ x $ 。次に、すべてのステップで、 $ r $ から $ t $ へのエッジの容量を増やし、容量を減らす $ s $ から $ L $ へのエッジの最大フローを維持します。出力された最大のマッチングを出力します。複雑さは $ \ mathcal {}(| | e | \ sqrt {|} + x \ cdot | e | e | e | DINICを使用する場合初期のバイパリートマッチング

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top