重み付けされた頂点を持つ2部グラフの最小頂点カバーを見つけるアルゴリズムは何ですか?


10

重み付けされていない2部グラフの場合、最初に最大マッチングを見つけ、ケーニッヒの定理を使用してそれを頂点カバーに変えることで、最小頂点カバーを見つけることができることを知っています。ノードが重み付けされている場合に使用できる変更はありますか?


1
Shiva Kintaliによって与えられた解決策はあなたの問題を解決しますが、私は簡単なコメントを付け加えたいと思います:ケーニッヒの定理はすべてカーディナリティに関するものです。重みを追加して、最小コストの最大2部マッチングを見つけることもできます(これにはエッジウェイトのアルゴリズムがあります。代わりにノードの重みを使用するのが簡単です)。ただし、最小コストの最小頂点カバーを取得するだけではありません。最小コストの頂点カバー(つまり、より多くのノードで構成される可能性があります)。カーディナリティーの制約/最適化のない最小コストのマッチングは空になります(正の重みの場合)…
Magnus Lie Hetland

回答:


18

重み付き頂点カバーの問題は、整数プログラムとして定式化できます(http://en.wikipedia.org/wiki/Vertex_coverを参照)。入力グラフが2部グラフの場合、このIPの制約行列は完全にユニモジュラです。したがって、このIPは多項式時間で解決できます。

総ユニモジュラ行列と対応するアルゴリズムの詳細については、Alexander Schrijverによる優れた(3巻)本を参照してください。


6
より正確には、IPは、LP緩和を解決するだけで解決できます。さらに、LPの双対は(頂点カバーインスタンスの頂点の重みに対応する容量を使用した)マッチングの一般化であり、通常の方法で最大フローに削減することで解決できることに気づくでしょう。
Chandra Chekuri

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.