date-created: 2024-07-02 12:18:54 date-modified: 2024-09-27 03:04:44
Probleme | P | NP
anchored to 112.00_anchor_overview
proceeds from 112.22_komplexitaets_klassen
Overview
Wir wollen ferner diverse Beispiele und Probleme betrachten, die wir als - schwer - also in polynomieller Zeit lösbar - beschreiben können.
Bedenke, dass
PATH | Pfade s -> t
[!Req]
Sei ein gerichteter Graph, definiert durch eine Matrix gdw. es eine Kante von Knoten gibt.
Wir setzen jetzt folgende Sprache:
Es gilt dabei dann
Warum, wie können wir das beweisen? Was gilt für solche algorithmischen Probleme meist? #card
Wir können das unter Konstruktion des Algorithmus beweisen!
Der Algorithmus is offensichtlich in und somit ist es !
\begin{algorithm} \begin{algorithmic} \Procedure{M}{G,s,t} \State $V = [s]$ \Comment{ markiere s, $\mathcal{O}(1)$} \State $T = 0$ \While{$T \neq 0$} \Comment{höchstens n mal durchlaufen, alle Knoten also} \State $T=1$ \For{$v \in V$} \State \Comment{höchstens n, alle markierten Knoten} \If{ $v \text{ hat Nachfolger }k$} \State $V = [V,k]$ \State $T = 0$ \Comment{damit wird Loop beendet!} \EndIf \EndFor \EndWhile \If{$t \in V$} \State $accept$ \Else \State $reject$ \EndIf \EndProcedure \end{algorithmic} \end{algorithm}
Generell:
- Betrachten wir ein Problem, welches man Algorithmisch beschrieben oder zeigen kann
- möchten wir jetzt die Komplexität des Problemes finden / bestimmen können, so können wir hier einfach den Algorithmus explizit angeben und dann direkt zeigen, dass etc.
Kontextfreie Grammatiken | ?
requires knowledge about: 112.08_grammatiken
[!Definition]
Sei eine , die vom in Chomsky Normalform erzeugt wird.
Wie können wir bestimmen, ob liegt, also ein Wort der Grammatik entspricht? #card
Beweis Wir bauen den Entscheider für auf mit mit Hilfe von dynamic programming
Dafür füllen wir eine obere Dreiecksmatrix mit Einträgen, sodass alle Variablen enthält, die dann generieren kann
Dabei ist jedes Element von eine endliche Liste!
Betrachtung | Nicht-Deterministische-Turing-Maschinen
Wir wollen uns jetzt 112.13_turing_maschinen_nondeterministisch anschauen und folgend die Komplexität bzw. deren Zeit- und Speicheraufwand betrachten!
[!Definition]
Sei eine nicht-deterministische TM über einem Eingabealphabet .
Für ein Wort ist dann die Zeitkomplexität folgend beschrieben:
Wie können wir die Zeitkomplexität beschreiben, was ist die Limitation hier? #card
Wir wissen ja, dass eine NDTM in ihrer Ausführung einen Baum etabliert, wo viele verschiedene Ausrechnungspfade auftreten, wobei wir die übernehmen, wo unsere DNTM garantiert akzeptiert! Das ist dann ein valider Pfad, den wir betrachten wollen.
Ferner müssen wir für die Zeitkomplexität also alle dieser Pfade betrachten und werden ferne bestimmte herausnehmen / betrachten:
also wir suchen die kürzeste Berechnung für eine konkrete Eingabe !
Falls es kein von Länge in L gibt, setzen wir
Diese Definition ist dann also nur über Wörter , anders als bei deterministischen TMs.
Aus diesem Grund brauchen wir auch noch weitere Definitionen.
[!Feedback] Definition | beschränkte NTM
Sei eine Funktion.
Wann sprechen wir von einer beschränkten NTM ? #card
Wir sagen, eine NTM ist beschränkt, falls
Komplexitätsklasse | Zeitkomplexität
Ferner können wir dann die Komplexitätsklasse für diese Laufzeiten beschreiben:
[!Beweis] Definition
Sei jetzt .
Wir beschreiben die Komplexitätsklasse folgend.
was muss für eine Sprache L gelten, damit sie in der Klasse ist ? Wie beschreiben wir dei Sprache dann richtig? #card
Wir beschreibe damit die Menge aller Sprachen , die in worst-case Laufzeit von einer nicht-deterministischen TM akzeptiert werden können.
Beschrieben wird das etwa mit :
Komplexitätsklasse | Speicherkomplexität
Wir können jetzt auch eine Komplexitätsklasse für die Speicherkomplexitäten von Sprachen beschreiben.
Wir gehen dabei analog zu der Definition der Zeitkomplexität, also NTIME, vor:
[!Beweis] Definition |
Wir wollen dafür zuerst für eine bestimmte NDTM die Klasse definieren, welche also den Speicherplatz derjenigen akzeptierenden Berechnungen von auf zusammenfässt. Ferner können wir damit dann auch die Komplexitätsklasse beschreiben.
Wie definieren wir dann und ferner die Klasse ? #card
Wir beschreiben den benötigten Speicherplatz einer Berechnung auf für folgend:
und ferner die Komplexitätsklasse:
Komplexitätsklasse | NP
Aus der obigen Definition können wir dann jetzt die Komplexitätsklasse NP definieren!
[!Korollar] Definition NP-Probleme
Wir wollen also Sprachen definieren, die in polynomielle Zeit von einer nicht-deterministischen TM entschieden werden können.
Wie beschreiben wir die Menge ? #card
–> Das heißt als, dass alle Sprachen enthält, die in polyonomieller Laufzeit von einer nicht-det Turingmaschine entschieden werden können!
NP steht also nicht für nicht polynomiell, sondern nicht-deterministisch polynomiell
Beispiel | Clique Problem
Problem wurde schon in folgenden Bereichen definiert und besprochen:
[!Beweis] Definition
Sei ein ungerichteter Graph. Eine Clique ist jetzt ein Subgraph von , wenn alle Knoten paarweise miteinander verbunden sind. Das heißt er ist vollständig!.
Wie können wir jetzt das Clique-Problem beschreiben? #card
Das Clique-Problem ist dann die Entscheidung, ob ein Graph mit Knoten eine Clique von Größe enthält!
Es beschreibt also folgende Menge:
Hierbei besteht jetzt das Theorem, dass ist!
Beweis | Clique-Problem ist NP-hard
Wir möchten folgend beweisen, dass es NP-hard ist und das wiederum dann als eine allgemeine Erkenntnis definieren, die für andere Probleme wichtig ist!
[!Bsp] Beweis
Wir nehmen an, dass
Wir möchten das jetzt folgend beweisen:
Welche drei Schritte benötigen wir und was ist der Schritt der Verifikation? #card
Wir konstruieren jetzt eine NTM , welche die Eingabe erhält ( Was ein entsprechender Graph und die gewünschte Größe der Clique ist)
Wir gehen wie folgt vor:
- wähle nichtdeterministisch einen Satz von Knoten aus V (also random Knoten!) –> das liegt in
- teste jetzt ob alle Kanten enthält, die Knoten in verbinden (also wir wollen schauen, dass wir hiermit einen vollständigen Graphen erwischt haben!) –> das liegt in
- falls wir das gefunden haben (ist es eine Lösung) , sonst reject –> das ist auch
Da wir jetzt nichtdeterministisch einfach parallel alle solche Kombinationen versuchen, werden wir garantiert eine Lösung finden, wenn sie denn überhaupt existiert!
Unter Anwendung der Verifikation | können wir dann jetzt beweisen, dass man polynomiell durch die Antworten der NTM gehen kann, um ein einzelnes (Also ein Pfad, der aufgemacht wurde) zu verifizieren –> schauen, ob es eine Clique ist oder nicht!
Also wir haben in zwei Teile aufgeteilt
- Eine NTM, die nichtdeterministisch Vorschläge generiert –> hier sucht sie einfach gleichzeitig verschiedene Knotenpaare aus, die geprüft werden müssten
- Ein deterministischer Algorithmus, von polynomieller Laufzeit um dann einen expliziten Vorschlag zu zertifizieren –> zu prüfen, ob er es löst oder nicht
Verifikation | Verifizier
So, wie obig beschrieben, kann man jedes NP-schwere Problem aufteilen!
[!Definition] Verifizierer
Unser Beispiel gibt an, dass man ein solches Problem aufteilen kann in:
- eine NTM, die die Vorschläge liefert (nicht deterministisch, also parallel!)
- einen Verifizierer, der anschließend die Vorschläge auswerten und eindeutig eine Antwort geben kann.
Wir möchten unter dieser Vorbetrachtung jetzt einen Verifizierer definieren und diesen als alternative Charakterisierung von NP-Problemen beschreiben.
Wie ist der Verifizierer Definiert? Es müssen zwei Schritte gelten, welche? #card
Wir betrachten jetzt eine Funktion .
Wir nennen eine DTM (deterministisch wohlgemerkt!) jetzt Verifizierer für eine Sprache wenn folgendes gilt:
- Für alle gibt es einen String - was wir Zertifikat nennen! - mit , sodass bei der Eingabe von akzeptieren wird.
- Falls , dann gilt für alle , dass bei Eingabe von nach höchstens Schritten stoppt und dann verwirft (das hier nicht zwingend “zu Ende” berechnet wird, ist nicht weiter ein Problem, weil wir damit die Aussage nicht falsifizieren)
Wenn jetzt ein Polynom ist, dann ist ein Verifizierer in polynomieller Zeit! und die Sprache heißt polynomiell verifizierbar.
Die entscheidende Eigenschaft des Verifizierers ist, dass dieser deterministisch ist!
Beispiele für Verifizierer
Wir möchten folgend ein paar Verifizierer anschauen:
[!Tip] Auswahl an Verifizierer
nenne drei verifizierer #card
Wir kennen schon den CLIQUE Verifizierer Beweis | Clique-Problem ist NP-hard
Independent-Set:
Gegeben sei ein Graph mit Knoten und .
Gibt es eine unabhängige Knotenmenge der Größe - d.h. eine Menge, sodass es paarweise keine direkten Kanten zwischen ihren Elementen gibt?
–> Wir können einen Verifizierer beschreiben
Verifizier: Gegeben eine Knotenmenge können wir offensichtlich in verifizieren, dass alle Paare keine Kanten teilen!
Traveling Salesman:
Gegeben sei ein gewichteter Graph, , gibt es eine Route durch alle Knoten des Graphen von Länge ?
–> Auch das können wir verifizieren
Verifizierer: Gegeben einer Route können wir natürlich in diese Route durchlaufen und ihre Länge berechnen und dann begründen, ob oder nicht!
Verifizierbarkeit NP-Berechenbarkeit
[!Satz]
Es gilt jetzt:
Wie kann man das in etwa beweisen? #card
Wir müssen hierbei natürlich beide Richtungen beweisen:
- Sei , das heißt es gibt eine NTM mit und für ein Polynom .
- Wir können jetzt alle Berechnungspfade von in einem Baum von tiefe aufschreiben –> der Baum könnte etwa binär sein ( O.b.d.A)
- Die Knotenzahl ist durch beschränkt und
- Ein Pfad durch den Baum kann also durch einen binären String beschrieben werden –> der an jedem Knoten sagt, welche Abzweigung genommen wird, um diesen zu traversieren
- Falls das Eingabewort ist, dann gibt es also einen Pfad von Länge höchstens , der in einem akzeptierenden Zustand endet. –> Sei dann der String, der diesen Pfad beschreibt
- Wir müssen zeigen, dass ein Zertifikat ist!
Das machen wir folgend:
- Der Verifizierer bekommt jetzt als Eingabe.
- Er simuliert den Berechnungspfad von . Dass diese Berechnung deterministisch ist, folgt, da den deterministischen Pfad identifiziert –> wir haben es so gebildet, dass er genau diesen ausgibt / bzw “beschreibt / findet”
- Die Berechnung des Verifizierers endet daher nach Schritten in einem akzeptierenden Zustand –> weil die Länge aufweist / beschreibt!
- Wenn dann das Zertifikat abgeschritten wurde - auch nach Schritten - und weiter kein akzeptierender Zustand erreicht wurde, dann darf abbrechen und mit ablehnen –> das darf er, weil wir durch die Konstruktion von wissen, dass dieser einen passenden Pfad im Baum darstellt / beschreibt.
- Rückrichtung Sei ein Verifizierr in polynomieller Zeit für .
Dann müssen wir jetzt eine NTM konstruieren, die akzeptiert, falls (Also die eine Eingabe prüft / testet)
Das machen wir folgend:
- probiert einfach nicht-deterministisch alle potentiellen Zertifikate für durch –> diese sind alle Strings von endlicher Länge - und davon gibt es nur endlich viele!
- Falls jetzt , dann gibt es per Definition von L ein , sodass mit Eingabe akzeptiert! –> Das ist dann auch ein akzeptierender Berechnungspfad von !
- Falls , dann gibt es keinen akzeptierenden Pfad und somit –> auch nicht akzeptierend!
Damit haben wir beide Seiten abgedeckt und entsprechend bewiesen!
| Relationen
[!Definition]
Es gilt Hierbei ist
Wie könnten wir das beweisen? #card
Wir wollen dafür jede Etappe einzeln beweisen:
- gilt nach dem eben bewiesenen Satz Verifikation | Verifizier –> weil hier die polynomielle Berechnung in selbst auch ein Zertifikat ist und wir es somit übernehmen können!
- . Sei jetzt . Dann können wir alle möglichen Verifizierer - also alle Pfade der NTM - in aufzählen. Da ein Polynom ist, gilt dann auch für ein und somit dann halt auch
NP steht also nicht für “nicht polynomiell”, aber durchaus für höchstens exponentiell –> also wir haben einen Upperbound gefunden!
Philosophische Bedeutung von NP
Oberflächlich betrachtet geht es hier bei der Frage von um den Unterschied zwischen Nicht-Determinismus und Determinismus (wie auch schon zuvor!). Aber die Verbindung zu Verifizierern gibt ihr noch ein philosophisches Gewicht
Denn:
[!Attention]
- Wenn , dann wäre das erfinden von Beweisen und deren Prüfung gleich schwer
ABER was wir aus der Realität wissen:
- Die Schönheit einer Bachkantate zu erkennen ist einfacher als sie zu verbessern, bzw.
- Die Statik einer Brücke zu prüfen ist einfacher als ihre Konstruktion zu erfinden!
Oder wie es auch in einem Brief von Kurt Gödel Gödelisierung an John von Neumann (RAM-Architektur) formuliert wurde:
Wenn es wirklich eine Maschine mit (oder auch nur ) gäbe, hätte das Folgerungen von der grössten Tragweite. Es würde nämlich offenbar bedeuten, dass man trotz der Unlösbarkeit des Entscheidungsproblems die Denkarbeit des Mathematikers bei ja-oder-nein Fragen vollständig durch Maschinen ersetzen könnte. Man müsste ja bloss das n so gross wählen, dass, wenn die Maschine kein Resultat liefert, es auch keinen Sinn hat über das Problem nachzudenken. Nun scheint es mir aber durchaus im Bereich der Möglichkeit zu liegen, dass so langsam wächst.
Tool | Platzkonstruierbare Funktionen
Betrachten wir nochmals die zuvor definierten Klassen und :
Ferner möchten wir jetzt darauf schließen (können), dass etwa
Dafür möchten wir eine Struktur - spezifischer Funktion - einfuhren, die eine bestimmte Menge von Speicher garantiert nutzen wird!
[!Req] Platzkonstruierbare Funktionen
Wir wollen ferner eine Funktion als platzkonstruierbar bezeichnen, wenn wir sie folgend beschreiben bzw. sie folgend berechnen kann:
Was für eine TM müssen wir konstruieren können? Welche zwei Eigenschaften müssen im Bezug zur Funktion gelten? #card
Wir nennen eine solche Funktion folgend platzkonstruierbar, wenn es eine DTM - deterministisch! - gibt, die in der Speicherkomplexität $\mathcal{O}((s ( \midx \mid )))$ berechnen kann.
Präziser heißt das:
- wir haben eine -Band TM mit einem separaten - read only
Und damit können wir zwei Folgerungen dazu aufstellen:
- für alle
- für jede Eingabe generiert das Wort auf seinem Arbeitsband und hält in –> Also wir können hier einfach garantieren, dass eine gewisse Menge von Speicher erzeugt / aufweist!
Dabei sind die üblichen monotonen Funktionen, wie etwa etc sind alle platzkonstruierbar!
Tool | Zeitkonstruierbare Funktionen
Selbige Struktur bzw. Funktion, wie bei der platzkonstruierbaren Funktion möchten wir jetzt auch für die Zeit definieren.
[!Definition] Zeitkonstruierbare Funktionen
Auch hier wollen wir jetzt eine Funktion beschreiben, die als zeitkonstruierbar beschrieben wird, wenn sie folgende Eigenschaften aufweist.
was muss für diese Funktion gelten? #card
Auch hier setzen wir die gleichen Strukturen, wie bei der platzkonstruierbaren Funktion um, also :
- !
- Die Generation einer Ausgabe ist gleich, zur Tool | Zeitkonstruierbare Funktionen
Ferner gilt jetzt: Die Funktion hat die Zeit-Komplexität
Wir können aus der obigen Konstruktion folgern, dass diese Komplexitätsklasse garantiert eine Teilmenge von sein muss.
[!Req]
Eine kann in Schritten höchtenns Bandzellen beschriften.
Es gilt jetzt für eine Funktion:
Warum gilt das, was können wir daraus folgern? #card
Wir können jetzt aussagen, dass jede DTM - deterministisch! - die in der Zeit arbeitet, nicht mehr also Felder beschreiben kann.
Dadurch gilt also für jede DTM !
Ferner folgt daraus noch ein Korollar:
[!Korollar]
Was sagt uns das aus? #card
Wir erhalten hier jetzt also einen upper-bound für die Klasse , weil jedes Problem in der Klasse liegt
–> Somit erhalten wir einen upper-bound für den Speicherplatz bedarf
[!Satz] Satz
Für jede platzkonstruierbare Funktion mit gilt folgend:
Was können wir damit aussagen, wie können wir das etwa beweisen? #card
Die Speicheraufwände für eine spezifische Funktion bildet hier also eine untere Schranke, weil sie garantiert eine Teilmenge der Zeitkomplexität ist.
Ferner ist die Speicherkomplexität für dann eine echte Teilmenge der Zeitkomplexität welche hier polynomiell für eine Konstante konstruiert ist.
Beweisidee:
Man kann hier ähnlich zum 112.07_pumping_lemma eine Konstruktion aufbauen:
- eine TM die einen beschränkten Bereich des Bandes beschreibt, kann nur durch endlich viele Konfigurationen gehen, bevor sie dann (nachweislich) in einer Schleife ist ( und somit eine Redundanz von Schritten auftritt, die man dann einfach entfernen kann!)
Das kommt daher, dass wir hier keinen “neuen Inhalt” speichern / erzeugen müssen!
Hieraus können wir unsere vorherige Betrachtung der Mengen-Verhältnisse erweitern:
[!Korollar]
was beschreiben wir mit “DLOGSPACE” und “DEXPTIME” ? #card
Nichtdeterminismus, bringt höchstens exponentielles Speed-Up
Damit möchten wir vor Allem die Aussage aus [ | Relationen](#%20Relationen) erweitern bzw. präzisieren!
[!Satz]
Es gilt jetzt:
Für jede Sprache gibt es ein Polynom , und auch eine deterministische TM , sodass die Sprache in Zeit akzeptier!. Es gilt damit also:
Betrachten wir also eine DTM, die diese Sprache beschreibt, wie kann man sie jetzt in eine NTM übersetzen? #card
Wir versuchen hier also eine ähnliche Aussage, wie bei der Berechenbarkeit zu tätigen.
Man kann den Berechnungsbaum der NTM auch deterministisch nacheinander ablaufen und damit deterministisch genau das gleiche berechnen!
Da dieser Baum exponentiell viele Pfade hat, dauert es dann auch exponentiell länger!
Folgend also formalisiert:
- Sei , dann gibt es eine NTM und ein Polynom , sodass dann die Sprache in Zeit erkennt / erkennen kann.
- Betrachte dabei dann den Berechnungsbaum von . Der Verzweigungsgrad an jedem Knoten ist dann höchstens
- und aus dieser Struktur betrachten wir alle Pfade bis Länge . Es gibt somit also höchstens Pfade!
Wir können diese dann nacheinander ausführen, wann dann folgende Zeit verbrauchen wird:
Für NTM nicht-deterministische
[!Lemma]
Aus den Konstruktionen können wir jetzt ferner noch eine Aussage über alle Funktionen treffen.
Welche zwei Aussagen gelten hierbei für die Komplexitätsklassen NTIME und NSPACE ? #card
für diese beide Klassen gilt für diese Funktion folgend:
- und auch
Ein Beweis wäre hier ähnlich / analog zu Nichtdeterminismus, bringt höchstens exponentielles Speed-Up
Aber wir können aus dieser Struktur ferner eine Folgerung ziehen!
[!Satz]
Es gilt für jede platzkonstruierbare Funktion mit unter Betrachtung des Lemmas und somit der Einschränkung dass:
- und auch
Jetzt folgendes:
was folgt für diese Betrachtung genauer? #card
Es gilt:
Ein Beweis dafür wird ähnlich geführt, wie die obigen –> indem wir also die Pfade betrachten und dann zusammensetzen. Jedoch ist zu beachten, dass eine NTM, wenn sie in eine bereits zuvor erreichte Konfiguration zurückkehrt, auch anders abzweigen kann.
–> Das kann sie aber nur exponentiell oft (da wir nur so viele Pfade haben!), denn sonst geht sie wieder in eine Schleife uber!
(ausführlicher findet man es in Hromkovič, Satz 6.6.)
Und auch hier können wir unsere Kette an Abhängigkeiten der Komplexitätsklassen erweitern / verlängern:
[!Bsp] Korollar
Wir haben jetzt noch NPSPACE in die Betrachtung eingebracht.
Wir wollen also folgende Klassen ordnen:
wo verorten wir sie, wie wird die Relation weiter aufgeschrieben? #card
Es folgt also:
Satz von Savitch (Savage)
source can be found here
[!Req] Satz von Savitch
Sei jetzt mit eine platzkonstruierbare Funktion. Dann gilt folgendes:
Was gilt jetzt im Bezug auf Space / Nspace? Wie könnten wir das beweisen? #card
Es gilt somit dann:
Ein Beweis könnte man technisch umsetzen. Hierbei schaut man den Graph der möglichen Konfigurationsverläufe an und kann daraus dann die Limitierung des Speicherplatzes etc. evaluieren.
Speicherkomplexität ist gar nicht soo schwer!
Es ist also bekannt, dass im Bezug auf Speicher
(man kann also gut verstehen, wie gut etwas Speicher veerwendet)
Zeit jedoch ist schwieriger zu verstehen
Es folgt hier dann ein wichtiges Korollar!
[!Korollar]
unter Verwendung des Satz von Savitch gilt folgendes für das Verhältnis von PSPACE und NPSPACe
welches? #card
Da wir jetzt wissen, dass eine Teilmenge sein kann, werden wir jetzt ferner sagen können, dass die Speicherkomplexität von NP und P gleich ist!
WAHNSINN, denn somit
–> Also wir verstehen Speicherplatz und wie dieser bei Nichtdeterministischen / deterministischen TMs aufgewandt wird, ganz gut!
Bezug zu P und NP ?
[!Feedback] Betrachtung der Komplexitätsklassenhierarchie
Unter allen vorherigen Definitionen und Lemmata können wir jetzt eine vollständige Kategorisierung der NP / P Komplexität beschreiben oder zumindest eine Annahme dieser
(Denn es ist ja weiterhin nicht gelöst!)
Wie ordnen wir jetzt DLOGSPACE, NP,P,PSPACE,NLOGSPACE,NPSPACE,DEXPTIME entsprechend? Was folgt hierbei bzgl ihrer Verhältnisse? #card
Wir beschreiben jetzt die fundamentale Komplexitätsklassenhierarchie der sequentiellen Berechnungen folgend:
–> Wichtig: für keine einzige der Inklusionen weiß man, ob es eine echte Inklusion ist (also obs eine echte Teilmenge oder ist).
Über zwei echte Inklusionen weiß man bescheid: und auch
(Wo genau diese Ungleichheit in der Verkettung auftritt, weiß man aber nicht genau!)
NP ist nicht offensichtlich gleich EXP!
Was als weitere Folgerung gilt und ferner durch bestimmte Konstruktion bewiesen werden kann. Wir wollen dafür ein Theorem betrachten, was auf das Problem aufmerksam macht.
Zeithierarchietheorem
[!Satz] Zeithierarchietheorem
Es gilt: Für zeitkonstruierbare Funktionen mit gilt jetzt:
Wie würden wir das beweisen können?Warum hilft ein Spezialfall dafür? #card
Wir betrachten dafür einen Spezialfall: .
Dafür betrachten wir jetzt die DTM , welche wir folgend konstruieren:
[!Lemma] Konstruktion
Auf Eingabe
- Simuliere die universelle TM 112.14_universal_turing_machine auf für Schritte! (es müssen weniger sein, damit wir zeigen können, dass es dann nicht funktioniert!)
- Falls in der Zeit dann ein bit schreibt, schreiben wir genau (Komplement) auf das Ausgabeband –> Falls nichts ausgegeben wird, schreiben wir einfach 0!
Wenden wir jetzt die DTM an, folgt:
- D hält in höchstens Schritten, also
- Wir zeigen aber noch , durch eine Diagonalisierung: Angenommen es gäbe eine DTM , die in der Zeit von (c ist Konstante) berechnet.
- (Wir wissen, dass die Simulation einer DTM auf die Zeitkomplexitäts von höchstens aufweist. Hierbei ist unabhängig !, sondern nur von der Bandzahl von Gamma und Sigma
- Es gibt ferner abzählbar unendlich viele Realisiserungen von –> man kann also beliebig viele Gödelnummern für die TM generieren. Etwa durch das Hinzufügen von nutzlosen Zuständen, die nichts machen, aber die Implementierung verändern!
- Es gibt dann ein , sodass .
- Sei dann jetzt eine Gödelnummer von mit
- Dann ist jetzt einerseits und weiterhin auch: Was im Widerspruch steht!
Das volle Theorem nutzt, dass die Simulation auf höchstens logarithmischen Overhead hat.
(Und somit haben wir strikt mehr Möglichkeiten bzw mehr “Platz” bei der exponentiellen, also bei )
Also in etwa: “Es gibt strikt mehr DTMS”, in als in
Folgerung | NP ist nicht einfach exponentiell schwer!
[!Important]
Aus dem Zeithierarchietheorem folgern wir jetzt, dass Probleme die eine komplette kombinatorische Enumeration erfordern - also ein exponentieller Vorgang! - nicht in polynomieller Zeit lösbar sind, also .
Das sagt uns aber nicht wirklich viel aus! Es gibt Probleme, wo man nicht abkürzen kann und so etwa für eine deterministische TM das Problem exponentiell lösen kann.
Was wir somit weiterhin nicht beantworten können
Es gilt noch nicht, ob , denn dazu müsste man erst zeigen, dass ( was aber nicht gesetzt ist)
Welche Folgerungen (4 haben wir beschrieben) kann man dann hieraus ziehen? Was beschreibt P, was NP was können wir über die Verifikation aussagen. was stimmt über den Speicheroverhead? #card
Wir erhalten jetzt 4 Folgerungen:
- ist die Klasse der Probleme, die von deterministischen TMS in polynomieller Zeit lösbar sind!
- enthält alle Probleme, die von nicht-deterministischen TMs in polynomieller Zeit lösbar sind!
- Lösungen von Problemen in sind von DTMs in polynomieller Zeit verifizierbar!
- Alle Probleme in sind auch von DTMs in exponentieller Zeit lösbar - indem wir die Pfade, die auftreten können, einfach aneinanderhängen!
- Dabei sind sie mit polynomiellen - quadratischen - Speicheroverhead lösbar, wie wir gezeigt haben!
Was, wenn wäre?
Die Utopie, oder auch nicht?!
Angenommen wir wüssten, dass ist, dann würde das bestimmte Folgerungen haben:
- die Kryptographie würder zerfallen, weil sie auf solchen schweren Problemen netsec_ElGamal und netSec_RSA aufbaut!
- Quantencomputing wäre egal, denn man wüsste dann
- Beweise zu finden, wäre damit genauso schwer, wie sie zu verifizieren –> Mathematik von Menschen wäre damit egal, weil man alles maschinell finden lassen könnte!
- Alltagsprozesse könnten optimal laufen - 111.18_Graphen_Traversieren TSP etc. wären einfach zu lösen!
- Alle sechs Millennium-Probleme würden gelöst werden!
Und somit würden wir die Welt schon stark beeinflussen!
Aber was man schon sagen kann:
Forderung einer niedrigeren Ordnung
Wenn wir uns aktive Algorithmen anschauen - etwa auch wie sie funktionieren etc- dann können wir schon einsehen, dass es in den Laufzeiten verschiedene Verläufe gibt (logisch)
Betrachten wir etwa aktuelle Leistungsfähigkeiten von Supercomputern (Stand 2024).
Ideen:
-
Eigentlich sind Lösungen nur spannend, wenn die gefundenen Algorithmen von niedrigem Polynomiellen Grad sind –> etwa (auch wenn das noch nicht soo gut ist, weils schnell wächst)
-
Das heißt insbesondere die Algorithmen dürfen keine Vergleiche von Tupeln aus ihren Inputs machen –> wenn die Tupel von einer höheren Ordnung sind!
-
Typischerweise ist es aber oft so, dass für ein Problem zunächst ein langsamer Algorithmus gefunden wird, etwa , welcher anschließend durch gute Umformung / Tricks etc reduziert werden kann auf
[!Attention] Juris Hartmanis - Turing Award 1993
We know that P is different from NP.
We just don’t know how to prove it.
Es ist also bekannt, dass , nur halt noch nicht bewiesen!
Ansätze für
Versuch 1 | Diagonalisierung
Wir wollen damit argumentieren, warum eventuell eintritt, indem wir etwa Mit Mengen argumentieren!
Um die Mächtigkeit einer Menge zu vergleichen, oder bestimmte Probleme bei der Konstruktion aufzuweisen, haben wir etwa schon die Diagonalisierung angeschaut, die meist mit einem Widerspruch zeigt, dass die Sprache eventuell überabzählbar ist.
Das Konzept wollen wir jetzt auch anwenden.
[!Beweis] Versuch 1 | Diagonalisierung
Wir könnten jetzt also versuchen zu zeigen, dass mächtiger ist als –> etwa durch Diagonalisierung.
Was wäre hierbei unser Ansatz? Worin könnten wir ein Problem erhalten? #card
Die Diagonalisierung könnten wir etwa folgend umsetzen:
- Enumeriere alle DTMs in einer polynomiellen Laufzeti auf allen Eingaben
- konstruiere jetzt eine NTM die auf der Eingabe die Diagonale berechnet und ferner invertiert ( Also die vorhandenen Ausgaben an -ter Stelle)
Unter dieser Diagonalisierung verstehen wir dann eine Beweistechnik, bei welcher wir zwei Annahme verwenden:
- Jede TM kann durch eine Gödelnummer kodiert werden
- Jede TM kann auf der universellen TM - mit logarithmischen Overhead simuliert werden! (wie wir zuvor schon beschrieben haben.)
Problem was wir hierbei erhalten:
- Diese Definition ist nicht wirklich klar –> Denn sie betrachtet die internen Mechanismen der Berechnung nicht bzw. beschreibt sie nicht!
Versuch 2 | Orakelmaschine
[!Definition]
Wir wollen eine neue Maschine einführen, die eine normale TM “erweitert” indem sie noch ein weiteres Band, das Orakel-Band aufweist.
Wir sprechen hierbei von der Orakelmaschine.
Wie funktioniert sie, was für Zustände weist sie auf? Wie können wir eine neue Menge von Srachen beschreiben? #card
Die Orakelmaschine ist also eine erweiterte TM , die einen Zugriff auf ein Orakel-Band hat, auf welchem einfach bestimmte Wörter der Sprache stehen ( also einfach eine Auswahl von Wörtern aus einem gegebenen Alphabet)
Sie führt einen neuen Zustand ein:
- Wenn in den Zustand übergeht, dann springt sie in , wenn die Eingabe auf dem Band gerade - dem Orakelband - ist oder , falls . ist hierbei der aktuelle Inhalt des Orakelbandes
- Wir beschreiben jetzt mit die Ausgabe von auf mit einem Orakel
- –> eine nicht-deterministische Orakel-maschine ist analog definiert!
Ferner gilt jetzt: Für jedes ist die Menge der Sprachen, die in polynomialer Zeit von einer deterministischen Orakelmaschine mit Orakel entschieden werden.
Ferner ist auch analog definiert!
Wichtig: Durch diese Struktur lässt sich jetzt ein Teil von aufteilen bzw charakterisieren!
Satz Baker | Gill | Solovay
[!Satz]
Betrachten wir ein Orakel
Was könnten wir dann über mögliche Problem in P,NP sagen? #card
Es gibt spezifische Orakel , sodass dann:
Wir haben also die Möglichkeit bestimmte Subbereiche zu betrachten und darüber aussagen zu treffen.
Ferner sehen wir hier aber auch, dass es widersprüchliche Aussagen gibt - sowohl als auch treten auf - und somit haben wir weiterhin keine volle Aussage getroffen!
Relativierung
Mit Dem Satz Baker | Gill | Solovay wurde jetzt gezeigt, dass die beiden Annahmen der Diagonalisierung von TMs nicht ausreichen um zu zeigen.
Damit ist diese Betrachtung relativ.
[!Example] Relativierung | Definition
Die Eigenschaft der Relativierung scheint hier also ähnlich / analog zur Beschreibung der Unabhängigkeit in der Mengenlehre zu sein –> ist unabhängig von (Die verschiedenen Axiom-Strukturen für die Mengenlehre)
Was können wir ferner über die Relativierung aussagen? Gibt es ein nicht-relativierendes Axiom, dass man zu 1 und 2 hinzufügen kann, um alle bekannten nicht relativierenden Ergebnisse zu beweisen? #card
Die Relativierung ist komplizierter, als die Unabhängigkeit der Mengenlehre, denn es gibt überabzählbar viele Orakel –> Genau wie es überazbählbar viele Sprachen über einem Alphabet gibt!
Damit wissen wir nicht, welche Orakel natürlich sind und welche nicht!
Es gibt ein nicht-relativierendes Axiom: Local Checkability
- in etwa, dass jeder Schritt einer TM nur eine konstante Menge an Bandzellen lesen oder ändern kann!
(Diese Idee ist ein Kandidat, und kann wohl bei der Anwtwort zur Frage helfen. jedoch hilft uns das soweit nicht weiter!
Wenn unbeweisbar ist?!
In this note we show that instances of problems which appear naturally in computer science cannot be answered in formalized set theory. We show, for example, that some relativized versions of the famous P = NP problem cannot be answered in formalized set theory, that explicit algorithms can be given whose running time is independent of the axioms of set theory, and that one can exhibit a specific context-free grammar G for which it cannot be proven in set theory that .
Satz | Hartmnias & Hopcroft
[!Satz]
Es gilt: Ex existiert eine TM , sodass die Wahrheit von unabhängig von den ZFC Axiomen der Mengenlehre ist!
Dabei beschreibt die Orakelklasse für das Orakel .
Was wäre ein Ansatz für den Beweis der Aussage? #card
Man könnte hierbei folgenden Beweis bzw. folgende Strategie anwenden:
Es gibt die Orakel , sodass dan n –> Man definiert dann folgend:
- falls in ZFC ein Beweis für existiert, dann wählen wir (mit technischen Details?)
- falls in ZFC ein Beweis für existiert, dann wählen wir
Damit würde sich ein Widerspruch ergeben und somit kann es einen solchen Beweis für ZFC nicht geben!
–> Damit ist die Mengentheorie dafür nicht anwendbar!
Ferner folgt:
Es könnte sein, dass eine unentscheidbare Frage ist! Das wäre aber enttäuschender, als die unentscheidbaren Probleme der Berechenbarkeitstheorie denn PSO ist “greifbarer”.
Damit kommt philosophisch auf:
- Möchten wir in einer Welt leben, wo ist
- oder wir leben in einer Welt
in beiden Fällen können wir es nicht beweisen!
Oder wie auch Lena-Schlipf 115.00_graphentheorie_anchor sagt:
[!Beweis] It seems a lot lot more difficult than expected!