Loading AI tools
NP-vollständiges Problem Aus Wikipedia, der freien Enzyklopädie
Das Teilsummenproblem (auch Untermengensummenproblem, engl. subset sum problem) ist ein berühmtes Problem der Informatik und des Operations Research. Es ist ein spezielles Rucksackproblem.
Gegeben sei eine Menge von ganzen Zahlen . Gesucht ist eine Untermenge, deren Elementsumme maximal, aber nicht größer als eine gegebene obere Schranke ist (oft ist auch gefragt, die Schranke exakt zu erreichen).
Formal: Gesucht sind , die maximieren unter der Nebenbedingung .
Das Problem ist NP-vollständig und somit vermutlich nicht effizient lösbar. Es kann mit der Branch-and-Bound-Methode gelöst werden.
Der Beweis der NP-Schwere erfolgt durch eine Reduktion von 3-SAT. Für eine gegebene Klauselmenge mit den Variablen werden die Dezimalzahlen sowie die Schranke anhand einer Tabelle konstruiert. Es wird vorausgesetzt, dass keine Klauseln vorhanden sind, die und gleichzeitig enthalten; dies ist keine Einschränkung, da eine solche Klausel immer erfüllt wäre und somit weggelassen werden kann, ohne den Sinn zu verändern.
Beispielsweise wird die Formel wie folgt verarbeitet (eine Erklärung folgt nach der Tabelle).
1 | 0 | 0 | 1 | 1 | 0 | |
1 | 0 | 0 | 0 | 0 | 1 | |
0 | 1 | 0 | 0 | 1 | 0 | |
0 | 1 | 0 | 1 | 0 | 1 | |
0 | 0 | 1 | 1 | 1 | 0 | |
0 | 0 | 1 | 0 | 0 | 1 | |
0 | 0 | 0 | 1 | 0 | 0 | |
0 | 0 | 0 | 2 | 0 | 0 | |
0 | 0 | 0 | 0 | 1 | 0 | |
0 | 0 | 0 | 0 | 2 | 0 | |
0 | 0 | 0 | 0 | 0 | 1 | |
0 | 0 | 0 | 0 | 0 | 2 | |
1 | 1 | 1 | 4 | 4 | 4 |
Besitzt nun die boolesche Formel eine erfüllende Belegung, so nehmen wir falls =true die Zahl auf; falls =false die Zahl . Damit sind schon die Einsen in korrekt. Da alle Klauseln erfüllt sind, ist in den gerade hinzugefügten Zahlen in jeder Klausel mindestens eine erfüllte Variable vorhanden, somit sind die Spaltensummen im rechten Teil schon mindestens 1 und höchstens 3. Nun muss man nur noch die Korrekturvariablen geeignet wählen, um auf 4 zu kommen. Mit der konstruierten Menge ist es so möglich, genau zu erreichen, wenn die Formel erfüllbar ist.
Wenn nun genau erreicht werden kann, so muss die Teilmenge der zunächst jeweils genau ein oder ; oder etc. enthalten, weil sonst die Einsen in nicht erfüllt wären. Somit ist gewährleistet, dass eine Variable tatsächlich true oder false (und nicht keins oder beides) ist. Durch diese Auswahl der Teilmenge muss dann auch jede Klausel erfüllt sein, denn wenn in einer Klausel keine Variable durch die Belegung erfüllt wäre, so würde die Addition nicht die notwendige Vier in ergeben. Daher ist die boolesche Formel insgesamt erfüllbar.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.