Das Teilmengenproblem ist ein klassisches NP-vollständiges Problem:
Gibt es bei einer gegebenen Liste von Zahlen und einem Ziel eine Teilmenge von Zahlen von , die sich zu summiert ?k L k
Ein Student fragte mich, ob diese Variante des Problems mit der Bezeichnung "Teilmengenprodukt" NP-vollständig ist:
Gibt es bei einer gegebenen Liste von Zahlen und einem Ziel k eine Teilmenge von Zahlen aus L, deren Produkt k ist ?
Ich habe ein bisschen gesucht und konnte keine Ressourcen finden, die über dieses Problem sprachen, obwohl ich sie vielleicht verpasst habe.
Ist das Subset-Produktproblem NP-complete?
complexity-theory
np-complete
reductions
templatetypedef
quelle
quelle
Antworten:
In einem Kommentar wird eine Reduzierung von X3C auf SUBSET PRODUCT erwähnt, die Yao zugeschrieben wird. Angesichts des Ziels der Reduzierung war es nicht schwer zu erraten, wie wahrscheinlich die Reduzierung gewesen war.
Definitionen:
So reduzieren Sie eine X3C-Instanz auf eine SUBSET PRODUCT-Instanz:
Erstellen Sie eine bijektive Zuordnung zwischen den Mitgliedern von und dem ersten | X | Primzahlen. Ersetzen Sie die Member von X und den C- Subsets durch die zugeordneten Primzahlen.X | X| X C
Multiplizieren Sie für jede Teilmenge in ihre Mitglieder. Die resultierende Produktliste ist L für die SUBSET PRODUCT-Instanz. Da für die Abbildung in Schritt 1 Primzahlen verwendet werden, ist die Gleichwertigkeit der Produkte garantiert, wenn die Teilmengen nach dem Satz der eindeutigen Faktorisierung gleichwertig sind .C L
Multiplizieren Sie die Mitglieder von zusammen; Das resultierende Produkt ist der Wert k für die SUBSET PRODUCT-Instanz.X k
Die Primfaktoren von sind genau die Elemente von X . Die Primfaktoren der Zahlen in L entsprechen genau den Mitgliedern der C- Teilmengen. Daher kann jede Lösung für die neue SUBSET PRODUCT-Instanz in eine X3C-Lösung umgewandelt werden, indem die Lösungsmitglieder von L wieder den Teilmengen in C zugeordnet werden .k X L C L C
Jeder der drei Transformationsschritte umfasst Operationen, die für die Größe der Eingabe polynomisch sind X | oder die Größe eines Elements X . Der erste | X | Primzahlen können in der Zeit O ( | X | ) unter Verwendung des Siebs von Eratosthenes erzeugt werden und werden durch den Primzahlsatz garantiert in den O ( | X | 2 ln | X | ) - Raum eingepasst .| X| X | X| | X| O ( | X|2ln| X| )
quelle
Nach [ 1 ]: Ja, das ist es
Ich zitiere auch den gleichen Verweis: Anmerkungen: Es gibt eine subtile technische Unterscheidung zwischen diesem und dem Problem 42: Der erstere Fall hat einen pseudoeffizienten Algorithmus, der erhalten wird, indem Zahlen unär dargestellt werden können; Solange nicht alle NP-vollständigen Probleme mit schnellen Algorithmen gelöst werden können, kann das Subset-Produktproblem auch mit dieser unvernünftigen Eingabedarstellung nicht mit "effizienten" Methoden gelöst werden.
Werfen Sie einen Blick auf [2] für eine Reduzierung. [2]: Fellows, Michael und Neal Koblitz. "Komplexität und Kryptographie mit festen Parametern." Angewandte Algebra, Algebraische Algorithmen und Fehlerkorrekturcodes (1993): 121-131.
quelle