この問題が多項式時間で解けるかどうか知りたいのですが?
問題は次のとおりです。サイズが2 \ times nの非負の整数値行列と2つの非負の整数値およびcが与えられます。
問題は、列のサブセットの各行の合計がcよりも大きくなるように、最大bのカーディナリティの列のサブセットを見つけることです。そのようなサブセットが存在しない場合は、noを返します。
NP難しいとは言えません。
編集:
硬さを証明するための私の試み:Filmusの提案に従って、PARTITION(インスタンスは負でない整数のセット\ {a_1、\ ldots、a_n \}によって与えられる)を私の問題に削減しようとしました。もちろん失敗しました。私が理解しなかったと思うのは、非負の整数のセットの分割がこの問題にどのように関係しているのですか?私の問題では、何かを最大化するために\ {1、\ ldots、n \}のサブセットを選択したいということです。これがパーティションであることがわかりません。私は多くの考えを試してみましたが、ここにそれらすべてを書くことはできません:
- 最初の行にa_ {2i}のみ、2番目の行にa_ {2i + 1}のみを含む行列を作成しようとしました。
- 最初の行を昇順でソートし、2番目の行を降順でソートするのに疲れました。
- となるように、を2つの値とに分割し、最初の行に、2番目の行にを含む行列を作成しようとしました。
PARTITIONを使用して問題のNP困難さを示すにはどうすればよいですか?あなたは解決策を与える必要はありません。
問題を解決するための私の解決策:
私はこの解決策を試しました。一般性を失うことなく、行列の最初の行が昇順でソートされると仮定します。(行列の2行目は並べ替える必要はありません。そうでない場合、問題は簡単です。)
ここで、行列の最後の列を取ります。
- 最初の行の合計がよりも小さい場合は、完了したときよりも小さくなり。解決策はありません。
- または、最後の列の最初の行の合計がより大きい場合、2番目の行の合計を確認します。
- 最後の列の2番目の行の合計が、よりも大きい場合。最後の列を返します。
- そうでなければ、上の最初の行の合計値列は、より大きいが、上2行目の和列は、以下である。さて、ここに問題があります。