私はこのような問題を抱えています:
2部グラフが表示されます。例えば
A1 B1
A2 B2
A3 B3
A4
そして、これが隣接リストの表現です(グラフが双方向であると仮定します)
B1 -> A2, A3
B2 -> A2, A3, A4
B3 -> A1
最終的な結果として、左側(As)のすべてのノードに正確に1つの入力エッジがあり、同時に、個々のBノードから出る必要のあるエッジの最大数を最小限に抑える必要があります。この場合、答えは次のようになります。
B3 can connect to A1
B2 can connect to A2, A4
B1 can connect to A3
したがって、ここでは、単一のBsノードから出る必要のあるエッジの最大数は2です。すべてのAsをカバーすることはできません。同時に、Asをカバーするために2つのエッジが出ていないBノードがあります。
もう一つの例:
A1 B1
A2 B2
A3 B3
A4 B4
B1 -> A1, A2, A3
B2 -> A1, A2, A3, A4
B3 -> A1, A2, A3
B4 -> A1, A2, A3
この場合、答えは次のようになります。
B1 can connect to A1
B2 can connect to A4
B3 can connect to A3
B2 can connect to A2
このようにして、すべてのAsを1回だけカバーすると同時に、個々のBから出る必要のあるエッジの最大数を最小限に抑えます。したがって、ここでは、単一のBsノードから出る必要のあるエッジの最大数は1です。
もう一つの例:
A1 B1
A2 B2
A3 B3
A4
A5
A6
B1 -> A6
B2 -> A1, A2, A3, A4, A5
B3 ->
この場合、答えは5になります。つまり、単一のBから出る必要のあるエッジの最大数は5です。それより少なくすることはできません。
私は基本的なフォードフルカーソンアルゴリズムを実装しました。これもネットワークフローであることは知っていますが、それにどのように関連付けるかはわかりません。
誰かがグラフについてのヒントを与えることができれば素晴らしいでしょう。
ありがとう