Teilmengenanforderungen

7

Betrachten Sie das folgende Problem.

Wenn eine Menge von ganzen Zahlen gegeben ist, entscheiden eine Funktion und , ob es so dass .Sf:ZZkZXSf(xXx)=k

Wird dies immer noch als Teilmengenproblem betrachtet ?

Zum Beispiel gegeben

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

und , finde eine Teilmenge so, dass für . In diesem Fall ist eine Lösung .k=0Xf(xXx)=0f(y)=3+yX={3,2,8}

Verkohlen
quelle
Ist ohne Verlust der Allgemeinheit? k=0
JeffE
@ Jeff Scheint so. Für und gibt es ein Äquivalent mit . fk0fk=0
Patrick87
Wann genau meinen Sie mit "Wird dies immer noch als Teilmengenproblem betrachtet"? Fragen Sie sich, ob Sie eine Instanz eines solchen Problems (dh ein ) als "Variante der Teilmengen-Summe" bezeichnen können? f
Aryabhata

Antworten:

7

Es kommt auf die Form von . Wenn , ist es identisch mit der Teilmengen-Summe. Wenn , ist es ein triviales Problem mit einer -Lösung: return . Sie können möglicherweise auch auf andere Weise definieren, um die Frage auch mehr oder weniger schwierig zu machen.ff(x)=xf(x)=0O(1)truef

Unten sehen Sie einen Mini-Komplexitätszoo, der verschiedenen Auswahlmöglichkeiten von :f

  • für ist das Problem ( return true, wenn ).f(x)=cO(1)c=0
  • für für und andernfalls ist das Problem ( lineare Suche nach einer beliebigen Zahl größer als 0 )f(x)=0x0f(x)=1O(n)
  • für für , , andernfalls ist das Problem nicht mehr als ) ( sortieren Sie die Elemente in der Menge in absteigender Reihenfolge und prüfen, ob ein Präfix zu einer funktionierenden Lösung passt )f(x)=0xcc>0f(x)=1O(nlogn
  • für ist das Problem so schwer wie die Teilmengen-Summe (im informellen Sinne, und ich biete keine Konstruktion an, um die Reduktion von Teilmengen-Summe auf diese zu demonstrieren ... wenn ich es bin falsch darüber, bitte lass es mich wissen!)f(x)=ax+b
  • für , wenn die Turing Maschine durch codierte ‚s Binärdarstellung anhält , wenn die Binärdarstellung von gegebenen als Eingabe (alternativ, wenn das leere Band als Eingabe und ähnliche Arten von Anhalten Problemen gegeben), und sonst ist das Problem unentscheidbar ( eine Lösung des Problems für dieses könnte das Halteproblem lösen )f(x)=0xxf(x)=1f

Hat jemand etwas anderes Spaß gemacht?

Patrick87
quelle
1) "das Problem ist gleichbedeutend mit Teilmengen" - meinst du das wörtlich oder "so schwer wie"? 2) In der letzten Kugel sollten Sie gebenxals Eingabe in das TM; So wie es ist, lösen Sie ein Halteproblem, aber nicht das kanonische.
Raphael
1) Ja, ich meine "so hart wie" in einer Art informellem Sinne. Natürlich biete ich keine Konstruktion dafür an, aber es scheint richtig zu sein ... natürlich war ich schon einmal überrascht, und das könnte falsch sein. Bearbeiten, um dies zu verdeutlichen. 2) Richtig, ich habe zuerst darüber diskutiert, ob ich das tun soll oder nicht, aber wenn ich höre, dass es besser ist, reicht es mir.
Patrick87
Bedeutet "so schwer wie", dass das Problem NP-vollständig ist. Wäre das eine Reduzierung der Teilmenge oder des 3-CNF-SAT? Gibt es einen Beweis, der die Reduzierbarkeit einer Teilmenge mit diesem speziellen Fall einer Gleichung offenbart, deren Werte ganze Zahlen sind und deren Lösung 0 ist?
Char
@ Patrick87 Ihre zweite Kugel entspricht dem, wohin mich meine Anfrage führt. Können Sie diesen Teil erweitern, um seine NP-Vollständigkeit im Detail zu diskutieren?
Char
@Char Subset-Summe ist ein Sonderfall von f(x)=ax+b(sei a = 1, b = 0). Um die andere Reduzierung zu sehen, lösen Sie nachf(x)=x+b/anach dem Teilen aller gesetzten Elemente durch a (Problem ist skalierungsinvariant). Wie andere darauf hingewiesen haben, ist es bereits bekannt, dass das Problem mitf(x)=x+c ist "so schwer wie" die kanonische Teilmengen-Summe (dh wo f(x)=x).
Patrick87
6

Abhängig von Ihrem können Sie beliebig schwierige Probleme bekommen f.

Lassen Aeine Sprache sein. Definierenf wie folgt:

f(x)={0xA1o.w.

Betrachten Sie Set S={x}. Es gibt eine nicht leere TeilmengeXS st f(ΣxXx)=0 iff xA.

Ohne Komplexitätsanforderungen zu stellen f Sie können Probleme von beliebiger Schwierigkeit bekommen.

Ein interessanter Fall ist, wenn fist von eingeschränkter Komplexität, zB Polynomzeit berechenbar. In diesem Fall können wir es zum Invertieren verwendenfDaher können die Probleme so schwierig sein wie das Invertieren einer beliebigen Polynomzeitfunktion (und unter der Annahme, dass es polynomialzeitberechnbare Pseudozufallszahlengeneratoren gibt, die in subexponentieller Zeit schwer zu invertieren sind, bedeutet dies, dass Sie das Problem nicht lösen können): let geine beliebige polynomialzeitberechnbare Funktion sein. Angenommen, wir sind gegebenyRange(g) und wir wollen eine finden x st g(x)=y. Definierenf(x)=g(x). LassenS={0,1,2,4,8,,2m} für geeignete große m (um sicherzustellen, dass ein Vorbild von ykann als Summe der Zahlen in der Menge dargestellt werden). Bei jedem Satz entfernen wir eine Nummer2i aus der Menge und prüfen Sie, ob noch eine Teilmenge vorhanden ist X st f(ΣxXx)=y. Wenn die Antwort Ja lautet, wissen wir, dass es eine Lösung gibt, die diese Nummer nicht benötigt. Deshalb entfernen wir sie ausSpermanent. Wenn die Antwort Nein lautet, wissen wir, dass wir diese Nummer für alle Lösungen benötigen. Nachm Schritte werden wir einen Satz haben S Das ist eine Lösung und keine Teilmenge davon ist eine Lösung, also können wir zurückkehren x=ΣxSx als unsere Antwort.

Auf der anderen Seite, wenn f Ist die Polynomzeit berechenbar, liegt das Problem in NP.

Im besonderen Fall, dass die Funktion f ist linear, da Σ pendelt mit linearen Funktionen, das Problem ist das gleiche wie das Lösen der Teilmengen-Summe vorbei f(S)={f(x)xS}. Solange die lineare Funktion nicht konstant ist, ist das Problem so schwer wie die Teilmengen-Summe, d. H.NP-hard (Wenn Sie die Teilmengen-Summen-Instanz lösen möchten (S,k), anwenden f1 an Mitglieder von S erhalten S und verwenden Sie dann die geänderte Version auf (S,k) um es zu lösen).

(Dieser Trick funktioniert auch für allgemeinere Fälle, in denen die Funktion f ist die Polynomzeit berechenbar und hat eine Umkehrung, die auch die Polynomzeit berechenbar ist.)

Kaveh
quelle
Wenn willkürlich, wie bestimme ich, ob meine Funktion eine NP-harte Komplexität erzeugt? Die Linearität? Können Sie einen Beweis dafür erbringen? Was meinst du on the other hand'? Your restricted complexity example uses polynomial time computability as your restriction, and then you suggest andererseits, aber rede weiter über die Berechenbarkeit der Polynomzeit? Auch in Ihrem letzten Absatz war ich verwirrt von dem Kommentar "Solange die lineare Funktion nicht konstant ist", aber ist das Teilmengen-Summenproblem nicht von Natur aus konstant? 0 oder 1? Danke für die gründliche Antwort.
Char
Das habe ich in meiner Antwort angenommen fist eine vorrangige feste Funktion. Wenn Sie möchten, dass es Teil der Eingabe ist, müssen Sie definieren, wiefwird zuerst gegeben. Nehmen wir an, es wird als endliche Zeichenfolge angegeben, die der Code einer Turing-Maschine ist, die es berechnet, dann können Sie es nicht. Sie sollten eine separate Frage stellen, wenn Sie wissen möchten, warum die Komplexität einer bestimmten Turing-Maschine kein entscheidbares Problem darstellt.
Kaveh
"Können Sie einen Beweis dafür liefern?" Ich verstehe nicht, was du meinst.
Kaveh
"Auf der anderen Seite" handelt immer noch von der Polynomzeit fDer Unterschied besteht darin, dass die Komplexität des Problems nach oben begrenzt wird.
Kaveh
Wenn f Ist eine konstante Funktion, dann ist das Problem trivial, da unabhängig von was X Du suchst aus, f(ΣxXx)wird dasselbe sein. "Ist das Teilmengen-Summenproblem nicht konstant? 0 oder 1?" wieder verstehe ich nicht was du meinst.
Kaveh
0

Ja, dies ist immer noch ein Teilmengen-Summenproblem , aber anstatt eine Teilmenge zu finden, deren Summe ist0müssen Sie eine Summe haben, die etwas anderem entspricht (in Ihrem Beispiel ist es 3, im Allgemeinen ist es f1(0), das könnte eine Reihe von Zahlen sein, wenn fist viele zu eins ).

Dies ändert nicht viel an der Schwierigkeit des Problems für das Bijektiv f, hängt aber ansonsten von der Anzahl der Vorbilder ab f1(0)hat. Wie bereits erwähnt, wennf(y)=0wird das Problem trivial.

Ran G.
quelle
Das Problem hierbei ist, dass Sie nach einer Zahl x = 3 für f (x) suchen, die gleich 0 ist, aber Sie wissen nicht, dass dies der gewünschte Wert ist, und anstatt die Gleichung zu lösen, verwenden Sie eine Teilmengen-Summe, um den Wert durch zu finden Testen, um zu sehen, ob die Funktion 0 zurückgibt.
Char
2
Sie sollten die Frage bearbeiten, um diesen Punkt zu verdeutlichen. Wie gesagt, alles hängt davon abf. Wenn Sie es nicht "wissen" (aber nur einen Black-Box-Zugriff darauf haben, ist die Antwort anders (wie von @ patrick87 gezeigt)
Ran G.
Wissen Sie f, Du weisst es nicht x. Können Sie eine Umschreibung der Frage vorschlagen? Ich habe das Handicap zu wissen, was ich meinte, und es fällt mir schwer, die Frage neu zu formulieren, um sie weiter zu klären. Was ist den Lesern noch unklar?
Char
Ich bin mir nicht sicher, ob ich vollständig verstehe, wonach Sie suchen. Wenn du weißtf, (vorausgesetzt, es ist einfach), warum können Sie es nicht invertieren, um seine Wurzel zu finden (den Wert x, der ergibt f(x)=0und dann die Teilmengen-Summe mit diesem Wert als Ziel lösen?
Ran G.
1
@RanG. Einfache Funktionen sind nicht unbedingt einfach zu invertieren. Alle Kryptografien mit öffentlichem Schlüssel anzeigen!
JeffE