サブセット合計要件


7

次の問題を考えてください。

セットを考える S 整数の、関数 f:ZZ そして kZ、あるかどうかを決定 XS そのような f(xXx)=k

これはまだサブセット合計問題と見なされますか?

たとえば、

S={7,3,2,5,8}

そして k=0、サブセットを見つける X そのような f(xXx)=0 ために f(y)=3+y。この場合、解決策はX={3,2,8}


じゃない k=0一般性を失うことなく?
JeffE 2012

@ジェフそうそう。ためにf そして k0、同等のものがあります fk=0
Patrick87 2012

「これはまだサブセット合計問題と見なされますか」とはどういう意味ですか?そのような問題のインスタンスを呼び出すことができるかどうかを尋ねていますか(つまり、f)「サブセット合計のバリアント」として?
Aryabhata

回答:


7

それはの形に依存します f。もしf(x)=x、その後、subset-sumと同じです。もしf(x)=0、それはとのささいな問題です O(1) 解決策:戻る true。あなたはおそらく定義することができますf 同様に、質問を多かれ少なかれ難しくする他の方法で。

以下のさまざまな選択肢に対応するミニ複雑な動物園をご覧ください f

  • ために f(x)=c、 問題は O(1)true iffを返すc=0)。
  • ために f(x)=0 ために x0 そして f(x)=1 そうでなければ、問題は O(n)0より大きい任意の数値の線形検索
  • ために f(x)=0 ために xcc>0f(x)=1 そうでなければ、問題は O(nlogn)(セット内の項目を降順で並べ替え、接頭辞が合計して実用的なソリューションになるかどうかを確認します
  • ために f(x)=ax+b、問題はサブセットサムと同じくらい難しいです(非公式な意味で、サブセットサムからこれへの削減を実証するための構造は提供していません...これについて間違っている場合は、私に知らせてください!)
  • ために f(x)=0 によってエンコードされたチューリングマシン xのバイナリ表現が与えられると、のバイナリ表現は停止します x 入力として(または、空のテープが入力として与えられた場合、同様の種類の停止問題)、および f(x)=1それ以外の場合、問題は特定できません(この問題の解決策f停止問題を解決できます

誰か他に楽しいものを見ますか?


1)「問題はサブセット合計と同等です」-これは文字通り、または「同じくらい難しい」という意味ですか?2)最後の箇条書きであなたは与えるべきですxTMへの入力として。それがあるとして、あなたは解決するいくつかの停止問題ではなく、標準的なものを。
ラファエル

1)はい、私は一種の非公式な意味で「と同じくらい難しい」を意味します。もちろん私はそのための構造を提供していませんが、それは正しいようです...もちろん、私は以前に驚いたことがあり、これは間違っている可能性があります。これを明確にするための編集。2)そう、最初はそうするべきかどうかを最初に議論したが、あなたの話を聞いた方が私にはそれで十分であると言った方が良いと聞いた。
Patrick87

「同じくらい難しい」ということは、問題がNP-Completeであることを意味します。それはサブセットの合計または3-CNF SATの削減になるでしょうか?値が整数であり、解が0である方程式を持っているこの特別なケースでサブセットの還元可能性を明らかにする証拠はありますか?
Char

@ Patrick87あなたの2番目の弾丸は、私の調査が私を導いているのと同等です。この部分を拡張して、そのNP完全性について詳細に説明できますか?
Char

@Char Subset-sumは、 f(x)=ax+b(a = 1、b = 0とします)。他の削減を確認するには、f(x)=x+b/aすべてのセット要素をaで除算した後(問題はスケール不変です)。他の人が指摘したように、問題はf(x)=x+c 正準サブセット和と同じくらい難しい(つまり、 f(x)=x)。
Patrick87 2012

6

状況によっては、任意の難しい問題が発生する可能性があります f

しましょう A言語であること。定義するf 次のように:

f(x)={0xA1o.w.

セットを検討 S={x}。空ではないサブセットがありますXS st f(ΣxXx)=0 iff xA

複雑さの要件を課すことなく f あなたは任意の困難の問題を得ることができます。

興味深いケースは、 f複雑さが制限されている、たとえば多項式時間計算可能。その場合、それを使用して反転することができますf、したがって、問題は任意の多項式時間関数を反転するのと同じくらい難しい場合があります(そして、指数以下の時間で反転するのが難しい多項式時間計算可能な疑似乱数ジェネレータがあると仮定すると、問題を解決できないことを意味します):let g任意の多項式時間計算可能関数です。私たちは与えられていると仮定しますyRange(g) そして、私たちは見つけたいです x st g(x)=y。定義するf(x)=g(x)。しましょうS={0,1,2,4,8,,2m} 適切な大きな m (のプレイメージを確認するために yセット内の数値の合計として表すことができます)。各セットで番号を削除します2i セットから、まだサブセットがあるかどうかを確認します X st f(ΣxXx)=y。答えが「はい」の場合、その番号を必要としないソリューションがあることがわかっているため、その番号から削除しますS永久に。答えが「いいえ」の場合、すべてのソリューションでその数が必要であることがわかります。後m セットになるステップ S これはソリューションであり、そのサブセットはソリューションではないので、 x=ΣxSx 私たちの答えとして。

一方、 f 多項式時間計算可能であり、問​​題は NP

関数が特別な場合 f 線形なので、 Σ 線形関数で通勤する、問題はサブセット合計を解くことと同じです f(S)={f(x)xS}。線形関数が一定でない限り、問題は部分和と同じくらい難しいでしょう。NP-hard (サブセット合計インスタンスを解決したい場合 (S,k)、適用する f1 のメンバーに S 入手する S そして、修正されたバージョンを使用します (S,k) それを解決するために)。

(このトリックは、関数がより一般的なケースでも機能します f 多項式時間計算可能であり、逆も多項式時間計算可能です。)


任意の場合、自分の関数がNP困難な複雑さを生成するかどうかをどのように判断しますか?直線性?この証拠を入手できますか?また、on the other hand'? Your restricted complexity example uses polynomial time computability as your restriction, and then you suggest 一方ではどういう意味ですか?しかし、多項式時間の計算可能性について話し続けますか?また、前の段落では、「線形関数が一定でない限り」というコメントに混乱しましたが、サブセットサム問題は本質的に一定ではありませんか?0、または1?徹底的な返信ありがとうございます。
Char

私は私の答えでそれを仮定しました f事前に固定された関数です。入力の一部にしたい場合は、方法を定義する必要がありますf最初に与えられます。それが、それを計算するチューリングマシンのコードである有限の文字列として与えられているとしましょう。特定のチューリングマシンの複雑さが決定的な問題ではない理由を知りたい場合は、別の質問をする必要があります。
カヴェ

「この証拠を入手できますか?」どういう意味かわかりません。
Kaveh

「一方で」はまだ多項式時間についてです f、違いは、問題の複雑さの上限を与えていることです。
Kaveh

もし f は定数関数であり、問​​題は何から独立しているので簡単です X あなたが選択し、 f(ΣxXx)同じになります。「サブセット合計の問題は本質的に一定ではないのですか?0、または1?」繰り返しますが、私はあなたの意味がわかりません。
Kaveh

0

はい、これはまだサブセット合計問題ですが、合計が0、あなたは他のものに等しい合計を持っている必要があります(あなたの例ではそれ3、一般的にそれはです f1(0)、これは以下の場合は一連の数値になる可能性があります fあるものに多く)。

これは全単射の問題の難しさをあまり変えません f、ただしそれ以外はプリイメージの数に依存 f1(0)持っています。すでに述べたように、f(y)=0、問題はささいなことになります。


ここでの問題は、f(x)が0に等しい場合にx = 3の数値を探しているが、それが必要な値であるかわからず、方程式を解く代わりに、サブセットの合計を使用して値を見つけることです。関数が0を返すかどうかを確認するためのテスト
チャー

2
この点を明確にするために質問を編集する必要があります。言ったように、すべてがに依存しますf。あなたがそれを「知らない」場合(しかし、ブラックボックスへのアクセスしか持っていない場合)、答えは異なります(@ patrick87によって示されているように)
Ran G.

ええと f、 あなたは知らない x。質問の書き直しを提案できますか。私は私が何を意味しているのかを理解することにハンディキャップがあり、さらに明確にするために質問を言い換えることが難しいと感じています。それを読んでいる人たちにはまだ何が不明瞭ですか?
Char

お探しの内容がよくわかりません。あなたが知っていればf、(それが単純であると仮定して)、なぜそれを逆にしてその根を見つけることができないのですか? f(x)=0、次にこの値をターゲットとしてサブセット合計を解決しますか?
Ran G.

1
@RanG。単純な関数は、反転するのが必ずしも簡単ではありません。公開鍵暗号のすべてをご覧ください!
JeffE
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.