次の問題を考えてください。
セットを考える 整数の、関数 そして 、あるかどうかを決定 そのような 。
これはまだサブセット合計問題と見なされますか?
たとえば、
そして 、サブセットを見つける そのような ために 。この場合、解決策は。
次の問題を考えてください。
セットを考える 整数の、関数 そして 、あるかどうかを決定 そのような 。
これはまだサブセット合計問題と見なされますか?
たとえば、
そして 、サブセットを見つける そのような ために 。この場合、解決策は。
回答:
それはの形に依存します 。もし、その後、subset-sumと同じです。もし、それはとのささいな問題です 解決策:戻る 。あなたはおそらく定義することができます 同様に、質問を多かれ少なかれ難しくする他の方法で。
以下のさまざまな選択肢に対応するミニ複雑な動物園をご覧ください :
誰か他に楽しいものを見ますか?
状況によっては、任意の難しい問題が発生する可能性があります 。
しましょう 言語であること。定義する 次のように:
セットを検討 。空ではないサブセットがあります st iff 。
複雑さの要件を課すことなく あなたは任意の困難の問題を得ることができます。
興味深いケースは、 複雑さが制限されている、たとえば多項式時間計算可能。その場合、それを使用して反転することができます、したがって、問題は任意の多項式時間関数を反転するのと同じくらい難しい場合があります(そして、指数以下の時間で反転するのが難しい多項式時間計算可能な疑似乱数ジェネレータがあると仮定すると、問題を解決できないことを意味します):let 任意の多項式時間計算可能関数です。私たちは与えられていると仮定します そして、私たちは見つけたいです st 。定義する。しましょう 適切な大きな (のプレイメージを確認するために セット内の数値の合計として表すことができます)。各セットで番号を削除します セットから、まだサブセットがあるかどうかを確認します st 。答えが「はい」の場合、その番号を必要としないソリューションがあることがわかっているため、その番号から削除します永久に。答えが「いいえ」の場合、すべてのソリューションでその数が必要であることがわかります。後 セットになるステップ これはソリューションであり、そのサブセットはソリューションではないので、 私たちの答えとして。
一方、 多項式時間計算可能であり、問題は 。
関数が特別な場合 線形なので、 線形関数で通勤する、問題はサブセット合計を解くことと同じです 。線形関数が一定でない限り、問題は部分和と同じくらい難しいでしょう。 (サブセット合計インスタンスを解決したい場合 、適用する のメンバーに 入手する そして、修正されたバージョンを使用します それを解決するために)。
(このトリックは、関数がより一般的なケースでも機能します 多項式時間計算可能であり、逆も多項式時間計算可能です。)
on the other hand'? Your restricted complexity example uses polynomial time computability as your restriction, and then you suggest
一方ではどういう意味ですか?しかし、多項式時間の計算可能性について話し続けますか?また、前の段落では、「線形関数が一定でない限り」というコメントに混乱しましたが、サブセットサム問題は本質的に一定ではありませんか?0、または1?徹底的な返信ありがとうございます。
はい、これはまだサブセット合計問題ですが、合計が、あなたは他のものに等しい合計を持っている必要があります(あなたの例ではそれ3、一般的にそれはです 、これは以下の場合は一連の数値になる可能性があります あるものに多く)。
これは全単射の問題の難しさをあまり変えません 、ただしそれ以外はプリイメージの数に依存 持っています。すでに述べたように、、問題はささいなことになります。