Ich hatte gehofft, jemand könnte mir erklären, warum genau das Subset-Produktproblem stark NP-hart ist, während das Subset-Summenproblem schwach NP-hart ist.
Subset Summe: Bei und , Gibt es eine Teilmenge so dass .
Subset Produkt: Da und , Gibt es eine Teilmenge so dass .
Ich dachte immer, die beiden Probleme wären gleichwertig - eine Instanz von SS könnte durch Potenzierung in eine Instanz von SP und eine Instanz von SP durch Logarithmen in SS umgewandelt werden. Dies führte mich zu dem Schluss, dass beide zu derselben Klasse von NP-Hard gehörten - dh, sie waren beide schwach NP-Hard.
Ferner scheint es, dass dieselbe Wiederholung verwendet werden könnte, um beide Probleme unter Verwendung dynamischer Programmierung mit einer sehr geringen Änderung zu lösen (wobei die Subtraktion in SS durch die Division in SP ersetzt wird).
Das war, bis ich Kapitel 8 von "Theory of Computation" von Bernard Moret gelesen habe (für diejenigen ohne das Buch gibt es einen Beweis für die Härte des Teilmengenprodukts über X3C - ein stark NP-hartes Problem).
Ich verstehe die Reduktion, kann aber nicht herausfinden, was mit meiner früheren Schlussfolgerung (Gleichwertigkeit der beiden Probleme) falsch war.
UPDATE : Es stellt sich heraus, dass das Teilmengenprodukt nur schwach NP-vollständig ist (das Zielprodukt ist in exponentiell ). Gary und Johnson haben dies 1981 in ihrer NP-Vollständigkeitskolumne veröffentlicht , aber ich denke, es war weniger sichtbar als ihre frühere Behauptung in ihrem Buch.
Antworten:
In Bezug auf das Problem der Äquivalenz von Teilmenge Summe und Teilmenge Produkt gibt es eine technische Besonderheit in Bezug auf Teilmenge Produkt. Das Produkt von x = T ist tatsächlich ein Pseudopolynom, wenn T nicht exponentiell ist! Die Beweise, dass Subset Product NP Hard ist, sind also (aus technischen Gründen !!!) nicht ganz korrekt!
Wenn man jedoch verspricht, dass T groß ist, ergibt die Reduktion über Logarithmen auf die Teilmengen-Summe eine NICHT-STANDARD-Teilmengen-SUMME, die über dem Real liegt! Dies bedeutet, dass der Pseudopolynom-Algorithmus für die Teilmengen-Summe nicht gilt! Obwohl die Logarithmen klein sind, verfälschen die Dezimalstellen die dynamische Programmierung des Pseudopolynoms!
ich hoffe das hilft
Zelah
quelle
Erstens funktioniert die Verwendung der Exponentiation für den Übergang von SS zu SP (mit Basis 2 anstelle von Basis ), erhöht jedoch die Größe der beteiligten Zahlen. Eine schwache NP-Härte bedeutet, dass das Problem nicht länger schwer ist, wenn die Zahlen klein sind (genauer gesagt, unär). Daher werden durch die Verwendung der Exponentiation SP-Instanzen mit exponentieller Größe erstellt, auch für einfache SS-Instanzen, bei denen die Zahlen unär geschrieben sind.e
Zweitens funktioniert die Verwendung von Logarithmen für den Übergang von SP zu SS nicht, da Logarithmen normalerweise nicht ganzzahlige Werte generieren. SS und SP werden mit ganzzahligen Zahlen definiert, und Logarithmen führen oft zu transzendentalen Werten, die schwer darzustellen oder zu berechnen sind.
Sei eine ganze Zahl, A > 0 , dann ist log 2 A nur dann rational, wenn A eine Potenz von 2 ist, und ansonsten transzendental. Erstens, wenn log 2 A = pA A>0 log2A A für ganze Zahlen ungleich Nullpundq, dann istA=2 plog2A=pq p q ,Aq=2p. Wir haben alsoA=2rdurch Primzerlegung. Außerdem istArq=2p, alsokönnen wir beigegebenemAq=1undp=rwählen,umzu beweisen, dasslog2Arational ist.A=2pq Aq=2p A=2r Arq=2p A q=1 p=r log2A
Wir müssen nur zeigen, dass niemals transzendental ist. Dies folgt aus dem Gelfond-Schneider-Theorem , denn eine äquivalente Formulierung (wie auf der Wiki-Seite zu finden) lautet: "Wenn α und γ algebraische Zahlen ungleich Null sind und wir einen von Null verschiedenen Logarithmus von α annehmen , dann ( log γ ) / ( log α ) = log α γ ist entweder rational oder transzendental. " Es ist auch einfach , indem man die Umkehrung des Satzes und Einstellung zu überprüfen & agr; β = γ und damit βlog2A α γ α (logγ)/(logα)=logαγ αβ=γ .β=logαγ
Als letztes überlegen Sie, was passiert, wenn wir den dynamischen Programmieralgorithmus von SS auf SP ausprobieren. Da wir Produkte anstelle von Summen verwenden, explodieren die Zahlen enorm, und die willkürliche Genauigkeit, die erforderlich ist, wird plötzlich zu einem Faktor in der Laufzeit. Aus diesem Grund kann der Algorithmus SP-Instanzen nicht schnell lösen, selbst wenn die Zahlen unär sind.
quelle
Die wörtliche Erklärung ist, dass das Subset-Produktproblem NP-vollständig ist, indem es von einem stark NP-vollständigen Problem, wie der exakten Abdeckung durch 3-Sätze, reduziert wird. Bei einer solchen "starken" Reduzierung sind die Eingabe-Ganzzahlen durch eine Polynomfunktion in der Anzahl der Ganzzahlen in der resultierenden Instanz des Subset-Produktproblems begrenzt.
Eine solche „starke“ Reduktion ist von jeder stark NP-vollständiges Problem zu Subset - Sum Problem , es sei denn unmöglich . Wir haben einen dynamischen Programmieralgorithmus für die Polynomzeit, um das Subset-Summen-Problem zu lösen, wenn Eingabe-Ganzzahlen durch ein Polynom begrenzt sind.P=NP
quelle