cards-deck: 100-199_university::111-120_theoretic_cs::112_complexity_theory

-Vollständigkeit

anchored to 112.00_anchor_overview


Overview

[!Bsp]

Wir hätten gerne ein Problem –> als ein solches, was womöglich sehr schwer ist und diese Klasse repräsentieren kann / wird.

Würden wir dieses finden können, so könnten wir zeigen, dass –> Aber das können wir ja nicht, wie in 112.23_Probleme_p_np gesehen haben!

Da wir das scheinbar nicht zeigen können, wäre es dennoch von Vorteil wenn man zeigen kann, dass es bestimmte Probleme gibt, die hoffentlich die “schwersten” sind.

–> Es gibt Probleme in NP, sodass man alle Probleme auf sie reduzieren kann.

(Das heißt auch), wenn man das Problem lösen könnte, dann würde man alle Problemem reduzieren können.

Würde man dazu noch einen Algorithmus finden, dann würde folgen


Karp’s 21 Probleme

Wir wollen jetzt eine Menge von NP-Problemen, die alle untereinander auf sich abbildbar / reduzierbar sind –> Das heißt, sie sind alle gleich schwer, und man kann das eine in ein anderes konvertieren “reduzieren”.

[!Tip] Äquivalenz durch Reduktion

Wir wollen jetzt zeigen, dass man diese Probleme immer auf ein anderes reduzieren kann. Also etwa SAT auf 3-SAT, aber auch das Clique-Problem etc. –> Somit haben wir eine Kette von Reduktionien, sodass wir von dem einen zum anderen kommen kann und somit nach und nach alle dieser Probleme gleich “reduzieren” können

Wir beginnen dabei mit den Grundlagen, um diese Reduktionen umsetzen zu können.

boolesche Formeln

[!Definition] Boole’sche Formel

Eine Boolesche Formel besteht aus boole’schen Variablen , die durch drei Operatoren verknüpft werden können.

Wie definieren wir dann diese boole’sche Formel formal? #card

Formal beschrieben also:

Sei ein Satz von Variablen.

  1. Ein Literal ist entweder Variable oder eine negierte Variable - oder auch - Hierbei sind alle Literale auch Formeln –> halt eine minimale Struktur
  2. Wenn Formeln sind, dann sind auch:
  • - Konjunktion
  • - Disjunktion
  1. Sei eine Belegung der Variablen. Dann wird in der offensichtlichen Weise auf Formeln erweitert.

Ein Beispiel wäre etwa: ^1720643849153

Erfüllbare Formeln

[!Req] Erfüllbare Formeln

Wann nennen wir eine Formel erfüllbar? Was muss gelten. Wie kann man die Erfüllbarkeit anders darstellen? #card

Es gilt: Eine Boole’sche Formel ist erfüllbar, wenn es eine Belegung der Variablen gibt, sodass die ganze Formel wahr wird.

ist etwa erfüllbar durch passendes Einsetzen

Nebenbedingung: Jede Formel defineirt also eine Funktion

Das nennen wir dann auch eine boole’sche Funktion –> diese Erfüllbarkeit kann dann als ein Entscheidungsproblem beschrieben werden: ^1720643849163

Konjunktive Normalform - CNF

Wir wollen ferner eine Struktur, eine spezifische Darstellung einer Formel, definieren, welche nur aus Konjunktionen von Oder-Termen, also besteht und somit Lösungen für diese finden –> was aber schwer sein wird /ist!.

[!Definition]

Wir wollen eine Klausel als Konjunktive Normalform beschreiben, wenn folgend gilt:

Wie konstruieren / definieren wir die konjunktive Normalform? #card

Sie weist die Form Wobei hier jeweils eine Klausel ist.

Ein Beispiel wäre etwa: ^1720643849167

Folgerung | Darstellbarkeit in CNF

[!Satz]

Wir können jetzt sagen, dass Jede Boole’sche Funktion durch eine CNF-Formel - mit exponentieller Länge - ausgedrückt werden.

Wie können wir das beweisen und als Funktion darstellen, die genau das für eine beliebige Funktion darstellen kann? #card

Sei eine beliebige Funktion - nicht notwendigerweise eine boole’sche Formel!

Dann gibt es jetzt eine Boole’sche Formel mit Variablen und der Länge , sodass für alle folgend gilt: (Also wir geben eine Belegung u ein und sie muss gleich zu der Ursprungsfunktion sein!)

Wir bezeichnen die Länge einer Formel als die Zahl der Zeichen in der formel!

^1720643849170

Beweis zur Umformung:

Wir wollen einen Beweis führen, der uns diese obige Äquivalenz belegen kann.

Idee: Wir betrachten also über viele Belegungen .

  • Wir finden für jedes eine Klausel , die nur dann false ist, wenn alle
  • Wir setzen auf die Konjunktion der aller Nullstellen von

Beweis:

Betrachten wir also ein Wort . Wir konstruieren dann jetzt eine Klausel mit Variablen , sodass folgendes gilt: Das können wir umsetzen denn für wählen wir dann die Klausel –> Also wir konstruieren es genauso, dass Also ist dann ist, wenn .

Sei dann jetzt

Dann können wir jetzt eine Formel folgend definieren: Also ist dann

Es gilt dann jetzt folgend auch: (was die gewollte Struktur ist!)

  • wenn , dann gibt es eine Klausel in für , die 0 ist, denn dann tritt ein ( was ja bei ) ist nach Definition
  • Wenn , dann ist mindestens eine der Klauseln in gleich 0. Also für ein v mit

Damit ist die Länge , denn jedes hat die Länge und ferner !


SAT | Erfüllbarkeitsproblem

Wir möchten jetzt das bekannte SAT-Problem beschreiben - weil wir es auch weiter für den Baum von Karp’s 21 Probleme benötigen!

[!Definition]

betrachten wir eine Boole’sche Formel in konjunktiver Normalform.

Das SAT-Problem beschreibt jetzt folgendes Entscheidungsproblem: also wir wollen einfach eine gültige Belegung für eine vorliegende Formel in -Form bestimmen.

Wir wissen, dass ist

Was heißt es, wenn es in NP ist? Wie können wir die Eigenschaft beweisen? #card

Dass es ist, können wir ja zeigen, indem wir nachweisen, dass es in polynomieller Zeit Zertifizierbar ist, man also für einen Vorschlag prüfen kann, ob er richtig ist oder nicht.

Eine NTM kann einfach alle möglichen Belegungen der Variablen ausprobieren! –> Eine Belegung ist ein Zertifikat in ; wir beschreiben es folgend:

  • Jede Klausel kann linear schnell zertifiziert werden - sobald eine Variable true ist!
  • Über alle Klammern in der CNF kann auch linear schnell verifiziert werden –> sobald einmal false auftritt brechen wir ab ( es sind ja Konjunktionen, also müssen alle wahr sein!)

Diese Verifikation ist linear in der Länge der Formel . –> Wir haben ja schon gesehen, dass die Formel selbst exponentiell lang werden kann, wenn man sie aus einer anderen heraus konstruiert ^1720643849173

k-Sat

Als Variante von SAT möchten wir noch einführen:

[!Satz] Definition

Wie definieren wir k-sat? #card

Das -Sat Problem ist das SAT-Problem, aber so eingeschränkt, dass jede Klausel höchstens Literale ( also einzelne Variablen) haben darf –> also es gibt maximal viele disjunktiv verknüpfte Variablen!

Wichtig ist hier vor Allem ! ^1720643849176

Bemerkung | DNF als Alternative

Neben der konjunktien Normalform gibt es auch die disjunktive Normalform, die in der Struktur beinahe gleich ist, nur eine Klausel aus besteht (also ) und die einzelnen Klauseln über Disjunktionen verknüpft sind.

Man kann das gleiche Problem auch mit darstellen:

[!Attention] DNF-SAT ist

DNF-SAT, also Prüfen, wann eine DNF ist, ist , und sogar in linearer Zeit lösbar.

Dafür schauen wir uns einfach eine Klausel an und setzen die Variablen so, dass sie 1 ergeben –> damit haben wir dann eine Lösung auf der ganzen Disjunktion gefunden und somit ist das Ergebnis auch !

Polynomialzeit-Reduktion

Wir kennen bereits Reduktionen aus der Berechenbarkeitstheorie, die Problemklassen Charakterisieren und so etwa ein Problem auf ein anderes Problem reduzieren lässt.

Wie auch da möchten wir nun die Komplexitätstheorie Probleme aufeinander reduzieren, um deren Schwierigkeit auf eine Vergleichsebene bringen zu können. Wenn sich also Problem auf reduzieren lässt, ist höchstens so schwer, wie !

Diese Abbildung / Konstruktion muss hierbei berechenbar sein! –> Also hier in polynomieller Zeit berechenbar sein!

Wir wollen das ferner in einem Ablauf beschreiben und anwenden können!

[!Definition] Polynomzeit-Reduktion

Wir nennen eine Funktion eine in polynomieller Zeit berechenbare Funktion, falls es eine TM mit gibt, welche auf Eingabe mit dem Inhalt auf dem Band hält.

Was heißt das für die Betrachtung von Zwei Sprachen, wobei wir eine auf die andere reduzieren wollen? #card

Seien jetzt also zwei Sprachen. Wir nennen jetzt auf polynomiell reduzierbar - in polynomieller Zeit abbildungsreduzierbar - falls es eine in polynomieller Zeit berechenbare Funktion gibt, sodass folgendes gilt:

Die Funktion heißt dann die Polynomialzeit-Reduzierung von auf . Das schreiben wir folgend mit :

[!Attention] Grundsätzlich ist polynomielle Reduzierbarkeit analog zur Abbildungsreduzierbarkeit, mit der zusätzlichen Anforderung, dass die Abbildung in polynomieller Zeit berechenbar ist! ^1720643849179

Ablauf

[!Tip] Ablauf für eine Polynomialzeit-Reduktion:

Folgende Schritte benötigt es, um eine Polynomialzeit-Reduktion durchzuführen:

Welche vier Schritte brauchen wir hierbei? #card

  1. Erfinde die Abbildungsfunktion
  2. Zeige, dass
  3. Zeige jetzt und auch
  4. oder wir zeigen die folgenden beiden Aussagen: oder auch ^1720643849183

Das wollen wir unter Anwendung eines Beispiels direkt einsetzen:

Umsetzung |

Wir wollen zeigen, dass wir obig genannte Probleem reduzieren können. Das heißt, wir können 3-SAT auf das Cliquen-Problem umwandeln / übersetzen.

[!Satz]

Es gilt also

Wie beweisen wird das? #card

Beweis:

Als Idee möchten wir das 3-SAT Problem so umwandeln, dass man es in einer Instanz der Graphentheorie umwandeln / darstellen kann.

Betrachten wir etwa eine CNF-Formel mit Klauseln und 3-Literalen pro Klausen (3-SAT), Etwa folgend: also Literale

Den Beweis wollen wir folgend aufbauen / umsetzen:

  1. Wir konstruieren zunächste eine Polynomialzeit-Abbildung , welche den String konstruiert, sodass dann ein ungerichterer Graph ist.
  2. Danach zeigen wir jetzt, dass genau dann erfüllbar ist, wenn eine Clique der Größe hat –> also

(der letzte Teil ist meist etwa tricky, je nach Frage / Problem, was gelöst werden muss) ^1720643849186

Wir wollen jetzt einen Graphen konstruieren:

[!Korollar] Fortführung Beweis

Wir konstruieren jetzt den Graphen folgend:

  1. jedem der Literale in wird ein Knoten in zugeordnet
  2. jede der 3-Klauseln in wird zu einer Gruppe - genauer einem Tripel von - von Knoten
  3. Wir verbinden dann alle (kostet uns ) Paare von Knoten in außer den folgenden
  4. Wenn und im gleichen Tripel sind (also wir bauen bipartite Gruppen auf!)
  5. Wenn und (also wir wollen Komplete zueinander nicht verbinden)

Damit können wir etwa folgenden Term zum Graphen machen:

Jetzt gilt es zu zeigen, dass eine Lösung in beiden Fällen äquivalent ist - und somit auch NP -

Wir zeigen zuerst erfüllbar es gibt eine -Clique.

Sei jetzt also erfüllbar.

  • Dann muss in jedem der Tripel mindestens ein Literal wahr sein. Wir markieren diesen Literal - falls es mehrere gibt, nehmen wir ein beliebiges einzelnes aus dem Tripel - und betrachten die Menge der markierten Literale.
  • Diese Menge ist eine -CLique, denn
    • sie hat -Knoten und
    • sie enthält keine widersprüchlichen Literale –> also alle Knoten sind verbunden ( wie wir in der Konstruktion dargestellt haben!)

Jetzt zeigen wir noch: Es gibt eine k-Clique ist erfüllbar.

Sei dann eine -Clique auf . Dann folgt dafür:

  • enthält genau einen Knoten aus allen Tripeln , weil der Graph ist!
  • Die Knoten in entsprechen gleichzeitig erfüllbaren Literalen, nach Konstruktion - wenn sie nicht gleichzeitig erfüllbar wären, dann hätten sie auch keine gemeinsame Kante!
  • Wenn all diese Literale auf true gesetzt werden, dann ist erfüllt!

Jetzt können wir auch noch zeigen, dass:

[!Satz]

Wir wollen also zeigen, dass , wir also SAT auf 3SAT reduzieren können!

Wie könnten wir das beweisen/konstruieren? #card

Sei eine in CNF gegeben, dann konstruieren wir in polynomieller Zeit eine neue Formel , die eine Instanz von ist, sodass dann folgt:

Das wollen wir in den Schritten machen:

  1. Konstruktion der Abbildung:

Für jede Klausel der form bauen wir eine neue Klausel folgend auf:

Wir führen neue Variablen ein und konstruieren dann das Äquivalent

(Also wir haben den einen langen Term so zusammengestellt, dass wir immer maximal 2 der Originalen Literale genommen haben und den Rest mit aufgefüllt haben. Wichtig ist, dass wir und in der nächsten Klausel verwenden, weil wir somit darauf achten, dass durch ein Setzen von nicht aus Versehen zwei Klauseln aktiviert werden)

(Es gibt weniger als solche Klauseln in , und dise Konstruktion macht aus einer Klausel dann neue Klauseln –> Wir erzeugen also neue Variablen / Klauseln. Die Konstruktion funktioniert in polynomieller Zeit, und mit der Konjunktion bauen wir dann zusammen)

Wir wollen ferner beweisen, dass es eine Polynomial-Zeit Reduktion ist:

  1. ist nach Konstruktion eine gültige -Instanz - also CNF
  2. Wie oben bemerkt ist die Konstruktion von polynomieller Zeit gewesen!
  3. ist erfüllbar ist erfüllbar: Sei jetzt erfüllbar, also es gibt eine Belegung der Variablen, die alle Klauseln wahr macht! –> Insbesondere auch eine Klausel mit Es muss also mindestens ein Literal in wahr sein! Wit haben so konstruiert, dass Setzen wir dann dabei auf True und ferner auf false –> so erhält jede Klausel mindestens eine wahre Variable, somit ist auch erfüllbar.
  4. Jetzt noch: ist erfüllbar ist erfüllbar: Wir betrachten die Konstruktion von . In jeder seiner Klauseln ist also mindestens ein Literal wahr. Da aus Klauseln besteht, aber nur y-Variablen enthält muss mindestens einer der Literale true sein ( Also aus der aufgeteilten Klausel von hat in derr Konstruktion für garantiert ein Term ein Wahr und ist aber kein -Term, den wir ja absichtlich konstruieren, um das zu beeinflussen) –> Somit war diese Variable dafür verantwortlich, dass diese ausgedehnte Klausel erfüllbar ist –> dann muss auch die “condensed version” erfüllbar sein!

^1720643849191

Was wir damit jetzt gezeigt haben:

[!Feedback]

Wir wissen jetzt, dass

Es gilt aber auch –> Wie macht man das etwa?

Selbiges, wie obig, gilt auch für !

2-SAT funktioniert so nicht und ist tatsächlich auch !

Reduktionen sind Transitiv

[!Satz]

Es gilt: Sei und , dann ist auch

Wie beweist man das? Viel wichtiger, was ist bei einer Reduktion, wo das Ziel in P ist? #card

Der Beweis oben ist offensichtlich, weil wir einfach die Information weitergeben können.

Sei jetzt und , dann ist hier auch !

Das beweisen wir folgend:

Sei die Polynomialzeit TM, die entscheidet!.

Sei jetzt die Abbildung welche auf reduzieren wird.

Wir konstruieren die TM , welche in polynomieller Laufzeit entscheidet folgend:

Auf eine Eingabe folgt:

  • Berechne –> polynomielle Zeit
  • Starte auf Input Gebe aus, was immer nach polynomieller Zeit ausgibt

Da eine Reduktion von ist, haben wir auch gezeigt, und somit akzeptiert jeden Input aus A!

Die Laufzeit ist polynomiell, da beide Teilschritte polynomiell sind ^1720643849194

Leicht | Schwer in Komplexität:

Key-Takeaways hieraus sind:

  • Leicht ist leicht zu zeigen,
  • aber schwer ist schwer zu zeigen xd

[!Tip]

Mit einer Reduktion kann man jetzt also zeigen, dass bestimmte Probleme “leicht” sind (). Um zu zeigen, dass ein Problem leicht ist, können wir folgend vorgehen:

Wie würden wir das zeigen? Wie zeigen wir, dass ein Problem schwer ist? #card

Wir zeigen, dass , indem wir ein anderes Problem , wo wir wissen, dass es ist nehmen und damit reduzieren, also –> Ähnlich, wie bei Reduktionen bei TMs!

Wie zeigen wir, dass etwas schwer ist?

am besten wäre es, wenn wir sagen könnten, dass etwas schwer ist, wennn es nicht in polynomieller Zeit lösbar ist ==> es folgt also . (Aber das wissen wir nicht, da unklar ist, ob )

Alternative Lösung :

Wir finden jetzt ein schwerstes Problem und nehmen das für die Reduktion.

(tatsächlich gibt es einige dieser Art!) ^1720643849197

NP Vollständigkeit

Wir wollen jetzt ebenjenige schwersten Probleme definieren, die wir zuvor angesprochen haben:

[!Definition] NP Vollständigkeit

Wir nennen eine Sprache NP-Schwer oder auch , falls gilt:

Was muss gelten? Wann nennen wir eine Sprache np-vollständig? Wie beschreiben wir die Menge der Np-vollständigen Sprachen? #card

gilt, dass –> Also wir können viele verschiedene Probleme auf dieses Problem reduzieren!

Eine Sprache heißt dann weiter NP-Vollständig, wenn gilt:

  1. und weiter
  2. ist NP-hard

–> Die Menge dieser NP-vollständigen Probleme nennen wir dann NPC - non-deterministically polynomial time complete ^1720643849200

[!Satz]

Es gilt: Falls es eine Sprache gibt, sodass und , dann gilt

Warum folgt das? #card

Naja aus der Definition von np-vollständig: Wenn , dann heißt es, dass wir alle Sprachen auf reduzieren können –> sie sind dann also auch lösbar!

(Das wäre schon cool!) ^1720643849203

Somit folgen auch noch zwei Korollare:

[!Korollar]

Falls , was gilt dann?

Falls , was folgt dann?

was folgt für beide Aussagen? #card

Falls , dann gilt

Falls , dann ist auch ! ^1720643849206


NPC Problem finden

Da wir jetzt wissen, dass es solche Probleme geben kann, die NP-vollständig sind und somit jede Sprache sich darauf reduzieren lässt, müssen wir eine solche nur noch finden

Das zu zeigen scheint aber sehr komplex, weil man ja quasi für jede Sprache eine Aussage treffen müsste!

[!Tip] Meet Cook and Levin

Durch ihren Beweis, haben sie eine Struktur gefunden, wie man jede Sprache entsprechend in einem SAT-Problem übersetzen kann!

Satz von Cook & Levin

[!Proposition]

Es gilt jetzt , also

Was folgt aus dieser Aussage über ? Ferner, was ist die Idee, um das zu beweisen> #card

Da wir mit jede Sprache darstellen können, folgt dafür erstmal

(Was jetzt noch keien neue Errungenschaft ist, weil wir das schon wussten, die Trennung ist ja eher interessant!)

Beweisidee:

Wir wollen einen Beweis führen, der die verifizierende passend in ein SAT-Problem übersetzen kann ( Das ist die L verifizierende TM ! Das heißt also, wir erhalten die Möglichkeit die TM durch Variablen “ersetzen” bzw. darstellen zu können und dann können wir schauen, wie wir eine Lösung des SAT-Problemes finden.

Ferner gibt es für jedes Wort ein Zertifikat der Länge , sodass die eingabe akzeptiert und für verwirft.

Wir müssen also genau diese Verifikation (eine TM) als boolesche Formel beschreiben können.

Wir wollen jetzt also folgendes zeigen:

[!Idea] Beweis-Idee für Satz von Cook & Levin

Was wir zeigen wollen: Wenn , dann gilt

Daraus folgen drei Folgerungen für SAT und L, welche? #card

Dann folgt jetzt:

  • -> es gibt also eine nicht-det. Polynomialzeit beschrankte TM , die L erkennt. Es gibt somit also ein Polyynom , welches die Zahl der Rechenschritte von beschränkt!
  • SAT: ist das Erfüllbarkeitsproblem der Aussagenlogik. Sei eine boolesche Formel, ist sie erfüllbar? Also gibt es eine Belegung ihrer Variablen, sodass die ganze Formel wahr ist?
  • : wir müssen eine Konstruktion - also eine Abbildung - finden, sodass !

Aber das einzige, was wir über wissen ist, dass ist. –> Wir müssen also die TM konkret durch CNF Formeln simulieren

Dafür ist die Notation einer nicht-deterministischen TM nochmal relevant:

112.13_turing_maschinen_nondeterministisch

Hilfssatz | “Genau-Eine”-Formel

[!Definition]

Als Konzept für die weitere Konstruktion des Beweises

Konstruktion der Formel:

In der Formel wenden wir die “Genau-eins”-Formel an, die also genau 1 ist, wenn nur ein Punkt 1 ist!

Wir können damit immer tracken, welchen Zustand wir gerade haben ( erster Term), der andere Term ist der “Tracker”, wo wir quasi die Position auf dem Band tracken! (Hierbei ist jetzt der erste und letzte Term konstant, nur der mittlere Skaliert –> weil er die Menge des Bandes beschreibt und damit trackt, wo wir uns auf diesem befinden)

wir definieren dann weiter

–> Das ist der Start Der TM und wir haben somit gezeigt, dass sie richtig “starten” / anfangen kann!


Wir wollen jetzt die Übergänge betrachten undauch hier zeigen, dass die CNF, die wir bilden, wahr sein wird!

(erster Term von ): für alle Zeitpunkte, liegt unsere TM in einem Zustand und sie hat den Lesekopf an Stelle auf dem Lesekopf und auf dem Band steht der Term an der Stelle (dann in der großen Klammer folgt): Wir haben einen Übergang zu einem neuen Zustand –> und schreiben ein neues Symbol. das kann in verschiedenen KOnfigurationen ( also einem aktuellen Zustand, der Position des Bandes und vielleicht die Eingabe) auftreten und wir verbindn alle Möglichkeiten durch ein Oder! Dieser Term sieht vielleicht nicht aus, wie etwas in CNF, aber wir wissen, dass man DNF in eine CNF umwandeln kann –> Da wir wissen, wie viele Elemente sich in der DNC befinden, können wir ferner auch konstant umwandeln –> es sind drei Literale pro Klausel und dann wird da nur eine Potenz, die konstant ist, erzeugt!

Beispiele von NP-Problemen

Vertex Cover

Wir wollen das zeigen, indem wir eine Reduktion von aufbauen.

Exemplarisch wollen wir ein Beispiel nennen, wie man von einer Lösung einer Clique zu einem Vertex Cover kommt.

Die Idee ist dabei, wie bei 112.92_ueb12, dass man von dem gegeben Graphen alle Kanten invertiert / vertauscht, also das Komplement bildet.

Anschließend sind alle Knoten, die zuvor in der Clique nicht enthalten waren, dann der minimale vertex cover!

Bildlich also:

Was wir jetzt zeigen müssen, um entsprechend die Reduktion beweisen zu können:

Es gilt zu zeigen:

[!Tip] RELEVANT:

Es ist wichitg, dass hier in beiden Seiten argumentiert bzw bewiesen wird, weil es eine Äquivalenz ist, die jeweils gelten muss.

Sei dann jetzt :

  • Dann hat eine Clique der Größe , sodass und ferner auch
  • Im Komplementgraphen - den wir durch das Invertieren der Kanten bilden, genannt,gilt dann ferner auch
  • Alle Kanten in haben also mindestens einen Endknoten in

Ferner möchten wir die anderweitige Betrachtung umsetzen, also Sei

  • Dann hat einen Vertex Cover der Größe , also und ferner muss gelten:
  • Es gibt also keine Kante in sodass beide Endknoten der Kantne in liegen, also beschrieben mit:
  • Für den Graphen gilt dann per Konstruktion von
  • Also ist eine Clique in der Größe
  • und somit haben wir dann zeigen können, dass es auch eine entsprechende Clique kommt

Integer Linear Programming

beschreibt das Lösen eines linearen Ungleichungssystems mit einer bestimmten Form:

Betrachten wir ein Beispiel, dann können wir es in drei Ungleichungen darstellen:

wir können diese auch entsprechend umformen:

Dass das Ganze schon NP-schwer ist, erkennen wir relativ schnell, dass es sehr viel schwieriger wird, wenn man mehr Bedingungen eine Lösung finden möchte und somit skalieren muss.

Ferner können wir auch schon aussagen, dass das -Integer-Programming ist.

#nachtragen

Betrachten wir ein Beispiel dafür:

Hierbei ist beschreibt die erste Form die Normalform der Ungleichung stehen - die wir oft verwenden, weil viele Algorithmen der linearen Programmierung darauf aufbauen / diese voraussetzen. Dass wir sie auch so umformen können, dass ist, haben wir anschließend zeigen können –> es ist also möglich!


Subset SUM

wurde auch schon in 112.92_ueb12 betrachtet und bearbeitet.

Wir haben hier schon gezeigt, dass es ist und eine Reduktion umgesetzt.

Wir wollen jetzt noch umsetzen / zeigen, dass es auch NP-hart / vollständig ist.

Dafür möchten wir reduzieren:

[!Idea] Idee zur Konstruktion

Wir wollen versuchen die informationen aus der aussagenlogischen Formmel im Dezimalsystem als stellige Zahl dodieren –> also in den Klauseln Informationen zu den Ziffern “verstecken / einbringen”.

Im folgenden nennen wir die ersten m Stellen oft den “vorderen Ziffernblock” und die letzten Stellen den hinteren Ziffernblock.

Wir wollen das an einem Beispiel zeigen / erklären:

betrachten wir folgendes 3-Sat Problem: Wir können unter folgender Konstruktion nun die Zahl definieren / erzeugen:

Und im Beispiel erzeugen wir folgende Zahlen: und jetzt wollen wir eine Teilmenge dieser Werte so kombinieren, dass wir damit die Zahl rekonstruieren / darstellen können:

In unserem Beispiel können wir die 3-SAT Aussage folgend belegen: mit und damit erhalten wir: und wir müssen es noch auf erweitern - also den ersten Block!

Dafür können wir jetzt die übrigen Werte nehmen, um dann entsprechend zu resultieren!

ein weiteres Beispiel:

und wir können setzen und die Werte, die wir erzeugen können, sind: und wir sehen hier, dass es niemals erfüllt werden kann, weil wir etwa durch nehmen von