燃やす埋める(Project Selection Problem)の練習問題についての解説です。
問題はこちら
ポイント
- 最大化を最小化へ言い換える
- グラフ表現可能なコストの性質
- 2部グラフの性質を用いたの選択肢の順序変更
問題概要
頂点数最大重み独立集合とは独立集合のうち、頂点の重みの和が最大となるもののことです。
解説
燃やす埋める問題に関する基礎知識は以下の記事を参考にしてください.kanpurin.hatenablog.com
各頂点を独立集合として[選ばない/選ぶ]を選択します。頂点を選ぶ際のコストは以下のようになります。[選ぶ]と
の利得が発生するので
のコストがかかると考えます。これは頂点
を選んだ際も同様です。

各辺について、頂点
と頂点
をともに[選ぶ]ことはできないのでともに[選ぶ]を選択すると
のコストが発生するようにします。

このままだとうまくグラフを作ることができないので二部グラフの性質を利用します。頂点の選択肢の順番を入れ替えると以下のようにグラフで表せるコストの形になりました。二部グラフであることから、
と
を結ぶ辺しかなく、全てのコストがこの形で書けることが分かります。

負の辺()が存在するため、あらかじめ
を加算しておくことで、[選ばない]を選択した際に
がかかると考えることができます。
以上をまとめるとコストは以下のようになります。

この最小コストが最小カットとなるようなグラフが構築でき、例えば入力例2では以下のようなグラフが構築できます。を[選ぶ]ときは
側の集合に、[選ばない]ときは
側の集合に割り当てることを意味し、
を[選ぶ]ときは
側の集合に、[選ばない]ときは
側の集合に割り当てることを意味します。このときの
側の頂点から
側の頂点に向かう辺の重みの和がカットのコストとなります(この辺の話は他の資料が詳しいです)。

として、頂点数は
、辺数は
です。Dinicを用いると時間計算量
で解くことができます。
他の燃やす埋める問題(Project Selection Problem)の例題については以下にまとめています。
kanpurin.hatenablog.com
提出プログラム
[]感想
燃やす埋めるの基本的な問題でした。タイトルがヒントになっているので難易度は水色にしました。