\(\newcommand {\LATEXunderbrace }[1]{\underbrace {#1}}\)
\(\newcommand {\LATEXoverbrace }[1]{\overbrace {#1}}\)
Bemerkung: Zur Wiederholung wird noch einmal definiert, was eine Rechnung einer Turingmaschine ist.
Rechnung: Sei eine Turingmaschine. Eine Rechnung von bei Eingabe ist eine Folge von Konfigurationen
mit und für . Die Berechnung ist erfolgreich, falls .
Zeitbedarf: Der Zeitbedarf der Berechnung ist .
Der Zeitbedarf einer Turingmaschine bei Eingabe ist , falls jede Berechnung von bei Eingabe Zeitbedarf hat.
Platzbedarf: Der Platzbedarf der Berechnung ist .
Der Platzbedarf einer Turingmaschine bei Eingabe ist , falls jede Berechnung von bei Eingabe Platzbedarf hat.
Komplexitätsklassen: Seien monoton steigende Funktionen.
Dann sind folgende Komplexitätsklassen definiert:
Für eine Komplexitätsklasse ist die Komplexitätsklasse aller Komplemente.
Bemerkung: Für und werden nur Funktionen mit für alle betrachtet.
Das erlaubt, die ganze Eingabe einzulesen (tatsächlich werden nämlich Schritte zugelassen).
Für und werden nur Funktionen mit betrachtet. Das erlaubt, eine Position auf dem Arbeitsband abzuspeichern (in binärer Darstellung).
gebräuchliche Komplexitätsklassen:
Bemerkung: Die letzte Gleichung folgt aus dem Satz von Savitch, der weiter unten noch kommt.
Bemerkung: Es gelten die Beziehungen .
Bei keiner von den Inklusionen ist jedoch bekannt, ob sie echt ist oder nicht.
Außerdem gilt
. Bei ist ebenfalls nicht bekannt, ob diese Inklusion echt ist (1. LBA-Problem).
Beispiel:
Es gilt : Eine TM, die die Sprache erkennt, muss sich nur speichern, wie viele ’s am Anfang gelesen wurden. Dafür wird nur logarithmischer Platz
benötigt.
Außerdem gilt : Bei der ersten Sprache geht man zunächst zum Dollarzeichen in der Mitte, anschließend
vergleicht man die Zeichen von der Mitte ausgehend (also zunächst die neben dem Dollar, dann die Nachbarn von diesen usw.). Dafür muss man die aktuelle Position (logarithmischer Platz) abspeichern).
Bei der zweiten Sprache ist das ein wenig schwieriger, aber hier prüft man zunächst, ob die Länge des Wortes ungerade ist, und läuft dann zur Mitte des Worts (dann verfährt man
wie bei der anderen Sprache).
Es gilt : Hier geht man wie eben vor, nur dass die Buchstaben jeweils von vorne verglichen werden.
ist in (das wurde erst 2002 mit der Entdeckung des AKS-Primzahltests gezeigt, vorher war nur Mitgliedschaft in bekannt).
Traveling Salesman Problem (TSP): Sei ein gerichteter, gewichteter Graph mit Knotenmenge , Kantenmenge und
Kantengewichtungsfunktion (d. h. für alle ).
Ein
Rundweg ist eine Folge mit , für und
für .
Die
Kosten des Rundwegs sind .
Dann sind folgende Varianten des
Traveling Salesman Problems (TSP) definiert:
Entscheidungsvariante: Gegeben ist und .
Gefragt ist, ob ein Rundweg mit Kosten exisiert.
Berechnungsvariante: Gegeben ist und .
Gesucht ist ein Rundweg mit , falls ein solcher existiert.
Optimierungsproblem: Gegeben ist .
Gesucht ist ein Rundweg mit kleinstmöglichen Kosten
(d. h. für alle Rundwege ).
In allen drei Varianten ist die Eingabegröße bis auf einen konstanten Faktor gleich
.
Satz (): Ist (A) in Polynomialzeit lösbar, so auch (C).
Beweis:
Überprüfe, ob überhaupt ein Rundweg existiert. Dazu ruft man (A) mit auf, denn jeder Rundweg hat Kosten . Im
Folgenden wird die Existenz eines Rundwegs vorausgesetzt.
Berechne mittel binärer Suche:
Die Anzahl der Durchläufe der While-Schleife ist beschränkt durch
.
Berechne einen optimalen Rundweg mit wie folgt:
Vertex Cover (VC): Sei ein ungerichteter Graph.
Eine Teilmenge heißt Knotenüberdeckung (oder Träger) von , falls für jede
Kante gilt, dass .
Dann sind folgende Varianten von Vertex Cover (VC) definiert:
Entscheidungsvariante: Gegeben ist und .
Gefragt ist, ob eine Knotenüberdeckung von mit existiert.
Berechnungsvariante: Gegeben ist und .
Gesucht ist eine Knotenüberdeckung von mit , falls eine solche existiert.
Optimierungsproblem: Gegeben ist .
Gesucht ist eine kleinstmögliche Knotenüberdeckung von
(d. h. für alle Knotenüberdeckungen von ).
Satz (): Ist (A) in Polynomialzeit lösbar, so auch (C).
Grapherreichbarkeitsproblem (GAP): Das Grapherreichbarkeitsproblem (GAP) ist wie folgt definiert: Gegeben ist ein gerichteter Graph und zwei
Knoten .
Gefragt ist, ob ein Pfad in von nach existiert.
Bemerkung: GAP gehört zur Klasse : GAP kann in Zeit mittels Breitensuche gelöst werden (mit der einfachsten Dijkstra-Variante).
Es gilt sogar die Verschärfung, dass GAP zur Klasse gehört (später wird gezeigt):
Dieser nicht-det. Algorithmus kann man leicht auf einer nicht-det. TM implementieren. Der Algorithmus benötigt nur logarithmischen Platz, weil er sich zu jedem Zeitpunkt nur einen Knoten merken muss und
dieser binär mit vielen Bits abgespeichert werden kann (wenn man mit identifiziert).
Bemerkung: Aus dem Satz von Savitch weiter unten folgt GAP .
Man konnte 2004 zeigen, dass das Grapherreichbarkeitsproblem für ungerichtete Graphen
UGAP zur Klasse gehört.
Komplexitätsklassen in Landau-Notation:
Man definiert .
Analog sind , und definiert.
Satz (Beziehungen zwischen den Komplexitätsklassen): Sei eine Funktion.
Für gilt
(Bandreduktion mit Bandkompression).
Aus folgt, dass
(deterministische Zeitkompression).
Es gilt
(nicht-deterministische Zeitkompression).
Es gilt .
Bemerkung: Der folgende Satz stellt einen Bandreduktionssatz für Zeitkomplexitätsklassen dar.
Satz (Satz von Hennie und Stearns): Seien und
mit .
Dann gilt .
Satz ():
Für gilt .
Beweis: Die erste Inklusion ist klar, zu zeigen ist also .
Sei eine nicht-deterministische TM, die durch zeitbeschränkt ist. Für eine Eingabe der Länge
kann man sich alle Rechnungen von in einem Berechnungsraum vorstellen, dessen Knoten Konfigurationen sind. Die Wurzel ist gleich und die Kinder einer Konfiguration sind alle
Konfigurationen mit .
Diesen Baum untersucht man jetzt durch Breitensuche auf eine akzeptierende Konfiguration. Dabei merkt man sich nur die aktuelle Konfiguration und das Protokoll , mit dem man diese
Konfiguration von der Wurzel erreichen kann.
Die Konfiguration zu merken benötigt den Platz , da man nach vielen Schritten höchstens viele Felder des Bands beschrieben haben kann. Das Protokoll für eine bei beginnende Berechnung hat höchstens Länge und kann somit in Platz gespeichert werden. Also ergibt sich ein gesamter Platzbedarf von .
Nach obigem Satz hat man also den Platzbedarf .
Satz ():
Für gilt .
Beweis: Die erste Inklusion ist klar, zu zeigen ist also .
Sei eine nicht-deterministische TM, die durch platzbeschränkt ist. Es gibt eine Konstante , die nur von abhängt, sodass
die für eine Eingabe der Länge die Anzahl der von erreichbaren Konfigurationen durch beschränkt ist. Hierbei ist
wichtig.
Nun berechnet man die Menge der von aus erreichbaren Konfigurationen wie folgt (Markierungsalgorithmus oder Flutalgorithmus):
enthält maximal Konfigurationen der Länge . Der Test
kann somit in Zeit implementiert werden. Der gesamte Zeitbedarf des
Algorithmus beträgt also .
Folgerung:
platzkonstruierbar: Sei eine Funktion mit . Dann heißt platzkonstruierbar,
falls es eine deterministische Turingmaschine gibt, die bei Eingabe (d. h. unäre Kodierung von ) genau Felder auf den Arbeitsbändern markiert, dann hält und bei der
Berechnung diesen Platz nicht verlässt.
zeitkonstruierbar: Sei eine Funktion mit . Dann heißt zeitkonstruierbar, falls es
eine deterministische Turingmaschine gibt, die bei Eingabe (d. h. unäre Kodierung von ) nach genau Schritten hält.
Satz (Satz von Savitch): Sei . Dann gilt .
Beweis: Im Folgenden wird der Satz bewiesen unter der Annahme, dass platzkonstruierbar ist. Der Satz ist auch für andere beweisbar, allerdings ist dann der Beweis etwas schwieriger.
Sei also eine durch platzbeschränkte nicht-deterministische TM und eine Eingabe für . Sei außerdem die Menge aller Konfigurationen , sodass auf
dem Eingabeband die Eingabe steht und . OBdA gebe es nur eine einzige akzeptierende Konfiguration . Für und ist das Prädikat definiert durch . Aus der
Beschreibung von kann man explizit eine Konstante bestimmen, sodass es Konfigurationen gibt, die nur viel Platz benötigen (insbesondere gilt ). Damit gilt für alle Eingaben , dass , denn keine Berechnung kann bei Eingabe
länger als viel Zeit brauchen.
Das Ziel ist nun, das Prädikat für und mit Platz durch
eine deterministische TM zu berechnen. Für verwendet man dabei das Rekursionsschema . Das kann man in einen deterministischen Algorithmus umsetzen:
Zu zeigen ist, dass ein Aufruf von den Platz benötigt. Man kann das induktiv zeigen: Für kann die Bedingung in geprüft werden. Für benötigt der erste Aufruf nach
Induktionsvoraussetzung den Platz . Das gleiche gilt auch für den zweiten Aufruf , aber hier kann der Platz, der für den ersten Aufruf
benötigt wurde, wiederverwendet werden. Zusätzlich benötigt man noch den Platz , um die Konfiguration zu speichern. Also benötigt man insgesamt den Platz .
Um zu entscheiden, kann man noch obiger Bemerkung testen. kann man berechnen, weil nach Annahme platzkonstruierbar ist.
Also ist der gesamte Platzbedarf .
Bemerkung: Der Satz von Savitch besagt, dass eine nicht-deterministische platzbeschränkte TM unter quadratischem Mehraufwand deterministisch simuliert werden kann. Diese platzeffiziente Simulation wird
durch einen extremen Mehraufwand an Rechenzeit realisiert.
Folgerung: GAP ist in , da GAP in ist.
,
da . Daher wurde auch so etwas wie nicht definiert, weil das gleich wäre.
Satz (Platzhierarchiesatz):
Seien Funktionen mit platzkonstruierbar, und .
Dann gilt , d. h. .
Beweis: Wegen gilt .
Zu zeigen ist .
Wähle zunächst eine berechenbare binäre Kodierung von deterministischen TM, d. h. eine berechenbare Funktion , sodass zu jeder deterministischen TM eine
Kodierung mit existiert (jedes Wort soll also als Kodierung einer TM interpretiert werden können). Für beliebige und gelte dabei . Somit hat jede TM eine Kodierung in fast allen Längen. Im Folgenden wird eine TM konstruiert mit .
Dazu wird zunächst eine durch platzbeschränkte TM konstruiert, die auf Eingabe mit wie folgt arbeitet: Zuerst markiert den Platz auf den
Arbeitsbändern (geht, da platzkonstruierbar). Sobald danach der markierte Platz verlassen wird, stoppt und akzeptiert nicht – damit ist automatisch -platzbeschränkt und es
gilt . Jetzt führt die Maschine mit und auf der Eingabe aus. Danach akzeptiert die Eingabe genau
dann, wenn die Eingabe akzeptiert (und dabei der markierte Platz nicht verlassen wird).
Da deterministische Platzklassen unter Komplement effektiv abgeschlossen sind, kann man eine TM konstruieren mit . Angenommen, es gelte . Es ist für ein . Sei die Platzfunktion von . Wegen gilt . Es gibt eine Konstante , sodass die Simulation von auf Eingabe mit den Platz kostet. Wähle mit . Wenn man mit und wählt (geht nach der Voraussetzung ) und mit setzt, dann gilt , also reicht der Platz aus.
Es gilt daher , ein Widerspruch (für die zweite Äquivalenz benötigt man, dass der Platz ausreicht).
Folgerung: Aus dem Platzhierarchiesatz folgt
.
Satz (Zeithierarchiesatz):
Seien Funktionen mit zeitkonstruierbar, und .
Dann gilt , d. h. .
Folgerung: Aus dem Zeithierarchiesatz folgt
.
Bemerkung: Der Lückensatz von Borodin besagt, dass es in der Hierarchie von Komplexitätsklassen beliebig große Lücken gibt. Egal wie groß im folgenden Satz gewählt wird,
es gibt immer eine Funktion , sodass vom Übergang von zu keine neuen Elemente dazukommen, d. h. es gibt eine Lücke zwischen und
. kann nicht zeitkonstruierbar sein, denn sonst wäre das ein Widerspruch zum Zeithierarchiesatz.
Satz (Lückensatz von Borodin):
Sei eine überall definierte, berechenbare Funktion mit .
Dann gibt es effektiv eine überall definierte, berechenbare Funktion mit
und .
Beweis: Seien eine Aufzählung aller deterministischen TM und der tatsächliche maximale Zeitbedarf einer Rechnung von auf einer
Eingabe der Länge . Betrachte die Menge . Diese Menge ist endlich, denn . Also gibt es für alle ein mit
.
Einen passenden, berechenbaren Wert kann man durch folgenden Algorithmus ermitteln:
Somit ist überall definiert, berechenbar und es gilt .
Es gilt :
„“: Wegen gilt .
„“: Sei . Dann gibt es ein mit und einer durch zeitbeschränkten, deterministischen TM. Es gilt , denn es ist n. V. . Wegen für und gilt also
. Es gilt daher für fast alle . Für die endlich vielen Ausnahmen lässt sich eine zweite TM konstruieren, die
diese Ausnahmen abfängt, d. h. es gibt ein mit und .
Somit gilt .
Bemerkung: Die Klassen und sind unter Komplement abgeschlossen. Ob dies auch für gilt, war lange Zeit offen. 1964 stellte Kuroda die Frage, ob die kontextsensitiven
Sprachen unter Komplement abgeschlossen sind (2. LBA-Problem). Äquivalent dazu ist . Diese Frage konnte nach 20 Jahren von Immerman und Szelepcsényi positiv beantwortet
werden.
Satz (Satz von Immerman und Szelepcsényi):
Sei . Dann gilt .
Bemerkung: Zur Wiederholung wird noch einmal die Definition einer Reduktion angegeben.
Reduktion: Seien und Sprachen. Dann heißt eine überall definierte, berechenbare Abbildung Reduktion von auf , falls für alle . heißt auf reduzierbar (), falls es eine Reduktion von auf gibt.
Polynomialzeit-Reduktion: Eine Reduktion von auf heißt
Polynomialzeit-Reduktion, falls sich durch eine deterministische polynomialzeit-beschränkte Turingmaschine berechnen lässt.
Satz (Übertragbarkeit bei Polynomialzeit-Reduktionen): Seien und
Sprachen, sodass es eine Polynomialzeit-Reduktion von auf gibt. Wenn gilt, dann auch .
Beweis: Seien und eine Polynomialzeit-Reduktion, die in Zeit berechnet werden kann. Ist eine Eingabe der Länge , dann kann
in Zeit berechnet werden. Anschließend wird überprüft, dies geht in Zeit , weil höchstens Länge
haben kann. Wegen wurde in polynomialer Zeit überprüft, d. h. .
bipartiter Graph: heißt bipartiter Graph, wenn und .
Matching: Sei ein bipartiter Graph. Ein Matching eine Teilmenge von , sodass keine zwei verschiedene Kanten aus
denselben Endknoten haben.
Bemerkung: Das Problem, ein Matching maximaler Größe zu berechnen, kann sehr effizient auf die Berechnung eines maximalen Flusses in einem Netzwerk reduziert werden.
Netzwerk: Ein Netzwerk ist ein -Tupel , wobei
ein gerichteter Graph (d. h. ) ist,
mit (Quelle und Senke) gilt und
jeder Kante eine Kapazität zuordnet.
Fluss: Ein Fluss ist eine Abbildung mit
ist die Größe des Flusses .
Bemerkung: Ein Fluss maximaler Größe kann in polynomialer Zeit mittels des Algorithmus von Ford-Fulkerson (Max-Flow-Min-Cut-Theorem) berechnet werden.
Satz (Reduktion von Matching auf Fluss): Das Problem, ein maximales Matching zu berechnen, kann auf das Problem, einen maximalen Fluss zu
berechnen, reduziert werden.
Genauer gilt: Sei ein bipartiter Graph. Definiere ein Netzwerk mit (), und für alle . Ist nun ein Fluss maximaler Größe in , dann ist ein Matching maximaler Größe in .
Bemerkung: Viele in der Praxis wichtige Reduktionen lassen sich in logarithmischem Platz berechnen. Deswegen definiert man Logspace-Reduktionen.
Logspace-Transducer: Ein logarithmisch platzbeschränkter Transduktor
(Logspace-Transducer) ist eine deterministische Turingmaschine mit
einem Eingabeband, von dem nur gelesen werden kann,
einem logarithmisch in der Eingabelänge platzbeschränkten Arbeitsband und
einem getrennten Ausgabeband, auf das nur geschrieben werden kann (und der Schreibkopf bewegt sich nur nach rechts).
in Logspace berechenbar: Eine Abbildung heißt in Logspace berechenbar, falls es einen
Logspace-Transducer gibt, sodass für alle der Transduktor bei Eingabe anhält und auf dem Ausgabeband steht.
Logspace-Reduktion: Seien und Sprachen. Dann heißt eine überall definierte, in Logspace berechenbare Abbildung Logspace-Reduktion von auf , falls für alle . heißt auf
in Logspace reduzierbar (), falls es eine Logspace-Reduktion von auf gibt.
Bemerkung: Der Index steht für many-one, was bedeutet, dass mehrere auf ein Wort in abgebildet werden können.
Jede in Logspace berechenbare Abbildung ist in polynomialer Zeit berechenbar.
Bemerkung: Eine analoge Aussage der folgenden gilt trivialerweise für Polynomialzeit-Reduktionen. Für Logspace-Reduktionen muss man etwas arbeiten, denn man kann das Ergebnis der ersten
Reduktion nicht einfach auf das Arbeitsband schreiben (nicht in logarithmischem Platz).
Satz ( ist transitiv): Seien , und mit .
Dann gilt .
Beweis: Seien bzw. Logspace-Reduktionen von auf bzw. von auf und
eine Eingabe mit . Dann wird in Platz wie folgt berechnet:
Starte den Logspace-Transducer zur Berechnung von (ohne vorher zu berechnen).
Wenn während der Berechnung von das -te Bit von benötigt wird, dann wird der Logspace-Transducer zur Berechnung von neugestartet, bis schließlich das -te Bit
von ausgegeben ist. Die Bits von werden dabei nicht ausgegeben. Dazu wird ein Binärzähler jedesmal genau dann inkrementiert, wenn der Logspace-Transducer
für ein Ausgabebit produziert.
Der Binärzähler benötigt Platz , denn es gilt für eine Konstante . Also ist die Komposition eine
Logspace-Reduktion von auf .
aussagenlogische Formel: Sei . Dann ist die Menge aller
aussagenlogischen Formeln über der Variablenmenge intuitiv definiert.
Bemerkung: ist deterministisch kontextfrei und gehört damit zu .
erfüllbare Formel: Eine aussagenlogische Formel heißt erfüllbar, falls es eine Belegung der in vorkommenden Variablen mit Wahrheitswerten so gibt, sodass sich zu auswertet.
: Das Problem ist definiert durch .
Literal: Ein Literal ist eine aussagenlogische Variable oder die Negation einer aussagenlogischen Variablen. Statt kann man auch
schreiben. Außerdem sei .
Konjunktion: Die Konjunktion von zwei aussagenlogischen Formeln und ist .
Disjunktion: Die Disjunktion von zwei aussagenlogischen Formeln und ist .
Klausel: Eine Klausel ist eine Disjunktion von Literalen .
und : Die Probleme und sind definiert durch
und
.
und : Die Probleme und sind definiert durch
und
.
Satz (Umformung in Normalform): Für jede aussagenlogische Formel gibt es äquivalente Formeln
und .
Beweis: Für die Konstruktion von geht man die Wahrheitstabelle von zeilenweise durch. Bei jeder Zeile (also Belegung), für die die Formel wahr wird, erstellt man einen Ausdruck, der
genau für diese Belegung wahr wird (z. B. wenn für und wahr wird, ist der zugehörige Ausdruck ). All diese Klauseln werden nachher durch Disjunktionen zusammengefasst, womit man erhält.
erhält man analog, indem man die Zeilen betrachtet, für die die Formel falsch wird, und für diese Zeilen die Negation der entsprechenden Klausel aufstellt (z. B. wenn
für und falsch wird, dann ist die zugehörige Klausel ). Diese Klauseln werden dann durch Konjunktionen verbunden, womit man
erhält.
Horn-Formel: Eine Horn-Klausel ist eine Klausel mit höchstens einem positiven
Literal. Eine Horn-Formel ist eine Formel in KNF, bei der jeder Disjunktionsterm eine Horn-Klausel ist.
und : Die Probleme und sind definiert durch
und .
schwierig: Sei eine Komplexitätsklasse. Dann heißt schwierig für oder
-schwierig (bzgl. Logspace-Reduktionen), falls .
vollständig: Sei eine Komplexitätsklasse. Dann heißt vollständig für oder
-vollständig (bzgl. Logspace-Reduktionen), falls -schwierig ist und gilt.
Satz (Abschluss unter Komplement): Wenn die Komplexitätsklasse unter Komplement abgeschlossen ist (d. h. für alle ), dann ist eine Sprache -vollständig genau dann, wenn -vollständig ist.
Beweis: Sei . Dann gilt genau dann, wenn gilt. Außerdem gilt -schwierig genau dann, wenn für alle gilt, dass
. Das ist äquivalent zu für alle , da unter Komplement abgeschlossen ist. Das gilt genau dann, wenn für alle (durch Komplementbildung auf beiden Seiten der Reduktion). Also ist -vollständig genau dann, wenn -vollständig ist.
Satz (GAP -vollständig): Das Grapherreichbarkeitsproblem GAP ist -vollständig.
Beweis: wurde bereits gezeigt.
Seien und eine nicht-deterministische logarithmisch platzbeschränkte Turingmaschine mit . Für eine Eingabe wird eine Reduktion definiert
durch mit
Offensichtlich gilt . Also ist eine Reduktion von auf GAP, die man in logarithmischem Platz berechnen
kann.
Satz ( -vollständig): ist -vollständig.
Beweis: Aufgrund des Satzes von Immerman und Szelepcsényi genügt es, die -Vollständigkeit von zu zeigen, denn es gilt (Komplement bzgl. ) und ist unter Komplement abgeschlossen (nach dem Satz von Immerman und Szelepcsényi).
ist -schwierig: Dies kann man durch Reduktion des Grapherreichbarkeitsproblems GAP auf zeigen. Sei ein
gerichteter Graph und . Für jeden Knoten erstellt man eine logische Variable und für jede Kante die Implikation , also die Klausel . Außerdem werden die Klauseln und hinzugefügt. Die so durch Konjunktionen zusammengesetzte Formel ist unerfüllbar, wenn in ein Weg von nach existiert. Wenn
kein Weg existiert, dann können alle Variablen, deren zugehörige Knoten von aus erreichbar sind, zu und alle anderen zu gesetzt werden. Dies definiert eine die Formel
erfüllende Belegung. Also ist die Formel erfüllbar genau dann, wenn in ein Weg von nach existiert. Man hat also eine Reduktion von GAP auf gefunden. GAP ist -schwierig, also ist auch ist -schwierig.
liegt in : Gegeben sei eine Formel in den Variablen . Nun wird ein Graph mit Knotenmenge konstruiert. Jede Klausel kann als Implikation interpretiert werden, denn es gilt . Deswegen werden zwei Kanten und eingefügt. Behauptung: Es gibt
genau dann einen Knoten und Pfade sowie , wenn unerfüllbar ist. Somit kann die Nichterfüllbarkeit von
mithilfe des -Algorithmus für Grapherreichbarkeit überprüft werden.
Es reicht also, die Behauptung zu zeigen. Das kann man wie folgt beweisen:
„“: Wenn es einen Knoten und Pfade sowie gibt, dann gelten die Implikationen
und , d. h. weder noch kann wahr sein. ist also nicht erfüllbar.
„“: Für jeden Knoten existiere nun höchstens einer der Pfade oder . Man kann annehmen, dass
genau einer der Pfade existiert, ansonsten füge die Kante hinzu.
Dies erzeugt keinen neuen Kreis: Angenommen, durch die neue Kante wurde ein Kreis mit und erzeugt. Dann benutzt dieser Kreis die Kante , d. h. es gilt oder
(
benutzt nur alte Kanten). Damit hätte der ursprüngliche Graph einen Pfad , im Widerspruch zur Annahme. Somit kann immer eine Kante neu hinzugefügt
werden, sodass immer genau einer der Pfade oder existiert.
Nun wird auf gesetzt, wenn existiert und sonst. Diese Belegung ist erfüllend: Sei eine beliebige Klausel mit (sonst ist ohnehin schon wahr). Dann gibt es nach Konstruktion einen Pfad . Außerdem gibt es wegen der Klausel
die Kanten und . Somit erhält man den Weg . Also gilt und die Klausel ist erfüllt.
Es sind also alle Klauseln von erfüllt und damit selbst.
Satz (-vollständige Sprache): Wenn es eine -vollständige Sprache gibt, dann gibt es eine -vollständige Sprache .
Beweis: Für eine Eingabe der Länge produziert eine Turingmaschine zunächst in der Zeit mit ( ist zeitkonstruierbar).
Setze nun . Es gilt durch , ,
d. h. ist -vollständig, weil auch -vollständig ist. Es gilt .
Satz (Satz von Cook (und Levin)): ist -vollständig.
Beweis: Es gilt : Für überprüft man , indem man zunächst in Zeit prüft, ob
überhaupt eine gültige aussagenlogische Formel ist, also (geht, weil deterministisch kontextfrei ist, d. h. ). In diesem Fall rät man eine Belegung
der in vorkommenden Variablen mit Wahrheitswerten und man akzeptiert, wenn sich unter zu auswertet (kann in
polynomieller Zeit geprüft werden).
Um die -Schwierigkeit von zu zeigen, reduziert man eine beliebige Sprache auf , d. h. man konstruiert eine Logspace-Reduktion mit
. Dazu seien eine durch das Polynom zeitbeschränkte Turingmaschine mit
und eine Eingabe der Länge . OBdA stellt man folgende Forderungen an :
hat nur ein les- und schreibbares Band, auf dem zu Beginn die Eingabe steht.
, es gibt also nur einen Endzustand.
Bei jeder Eingabe hält nie, aber nach Schritten ist im Endzustand genau dann, wenn .
Nach Schritten ist der Lese- und Schreib-Kopf wieder auf der Ausgangsposition.
Aus und folgt , und , d. h. nur der resultierende neue Zustand wird nicht-deterministisch
festgelegt (hängt nicht vom Zeichen auf dem Band ab). Dazu kann man zum Beispiel die Zustandsmenge umdefinieren zu und die Übergangsrelation zu
.
Somit können die Konfigurationen als aufgefasst werden (nach 1.). Die Startkonfiguration ist und die akzeptierende Konfigurationen sind aus (nach 2. und 4.). Man kann eine Konfiguration auch schreiben als mit , und (dabei ist natürlich
genau ein in und die anderen sind in ).
Man definiert nun eine Menge von -Tupeln, nämlich die Menge der lokalen Bandinhalte:
.
Wegen 5. gilt dann für alle mit , dass und
genau dann, wenn und für alle .
Falls zum Beispiel gilt, so ist folgende lokale Bandänderung für alle möglich: .
Eine Rechnung von kann damit als Matrix beschrieben werden:
Für jedes Tripel mit , und sei nun eine aussagenlogische Variable. Die
Interpretation der Variable ist, dass wahr sein soll genau dann, wenn zum Zeitpunkt das -te Zeichen der aktuellen Konfiguration ein ist.
Man definiert folgende Hornformeln:
Konsistenzformel:
(an der -ten Stelle kann zu einem Zeitpunkt nur ein Zeichen stehen)
Randformel:
(es darf nicht über den polynomiell beschränkten Platz hinausgegangen werden)
Startformel:
(Startkonfiguration ist )
Akzeptierungsformel:
(akzeptierende Konfigurationen sind aus )
Anschließend definiert man die Übergangsformel
.
Die Endformel ist damit .
Diese Formel ist in KNF. Sie ist eine Hornformel genau dann, wenn deterministisch ist. Dabei sind die Klauseln, die nur negative Literale enthalten, genau die Klauseln in und die Klauseln in , bei denen die
Disjunktion leer ist.
Die Formel ist immer erfüllbar. Die erfüllenden Belegungen entsprechen nämlich genau den Rechnungen von . Am Wert von
kann man einer solchen Belegung ansehen, ob sie erfolgreich ist. Damit ist erfüllbar genau dann, wenn .
Bemerkung: Aus dem Beweis ergibt sich unmittelbar folgendes Korollar.
Folgerung: ist -vollständig.
Satz ( -vollständig): ist -vollständig.
Beweis: Siehe Beweis vom Satz von Cook (und Levin), denn ist in KNF.
Satz ( -vollständig): ist -vollständig.
Beweis: gilt, weil die Prüfung der syntaktischen Korrektheit und der Anzahl an Literalen pro Klausel deterministisch in polynomieller Zeit möglich ist. Anschließend kann eine
Belegung nicht-deterministisch geraten und in polynomieller Zeit auf Erfüllung geprüft werden.
Für die -Schwierigkeit von zeigt man . Sei also eine Formel, die schon in ist. Dann unterscheidet man drei Fälle:
enthält eine Klausel mit nur einem Literal. In diesem Fall führt man eine neue Variable ein und ersetzt durch . (Natürlich wird für jede solche Klausel mit nur einem Literal jeweils eine neue Variable eingeführt.)
enthält eine Klausel mit zwei Literalen. In diesem Fall führt man eine neue Variable ein und ersetzt durch .
enthält eine Klausel mit Literalen. In diesem Fall führt man neue Variablen ein und ersetzt durch
.
Diese Umwandlungen ändert nichts an der Erfüllbarkeit von . Für die ersten beiden Fälle ist das klar, für den dritten Fall gilt auch:
Sei eine erfüllende Belegung für . Dann gilt für ein . Wenn man zu erweitert durch
für und für , dann ist eine erfüllende Belegung für .
Sei eine erfüllende Belegung für . Angenommen, es gelte für alle . Dann muss gelten
(wegen der ersten Klausel ). Induktiv folgt dann für alle . Dann gilt aber , ein Widerspruch (es müssen alle Klauseln erfüllt werden). Also ist die Einschränkung von auf
eine erfüllende Belegung von .
Somit hat man auf eine Formel in abgebildet, die erfüllbar ist genau dann, wenn erfüllbar ist.
: ist definiert durch
.
Satz ( -vollständig): ist -vollständig.
Beweis: ist der schwierige Teil des Beweises und wird hier ausgelassen. Man kann nämlich nicht einfach nicht-deterministisch ein raten, da das evtl.
nicht in polynomieller Zeit geht (wenn groß genug ist).
-schwierig zeigt man durch . Sei eine Formel in mit Variablen . Dazu wird das folgende System von ganzzahligen Ungleichungen über den Variablen , gebildet:
für
für
für
für
für jede Klausel ,
Dieses System ist lösbar genau dann, wenn erfüllbar ist.
Bemerkung: Zur Wiederholung wird nochmal definiert, was Vertex Cover (VC) ist.
Vertex Cover (VC): Sei ein ungerichteter Graph.
Eine Teilmenge heißt Knotenüberdeckung (oder Träger) von , falls für jede
Kante gilt, dass . Dann ist Vertex Cover (VC) wie folgt definiert:
Gegeben ist und . Gefragt ist, ob eine Knotenüberdeckung von mit existiert.
Satz (VC -vollständig): VC ist -vollständig.
Beweis: : Rate eine Teilmenge mit und prüfe in Polynomialzeit, ob eine Knotenüberdeckung ist.
VC -schwierig kann man durch zeigen. Sei eine Formel in mit , . Man konstruiert zu einen ungerichteten Graphen wie folgt: Für jedes Literal in jeder Klausel erstellt man einen Knoten (d. h. es
gibt insgesamt Knoten). Kanten werden zwischen den Literalen einer Klausel eingefügt (sodass man lauter disjunkte „Dreiecke“ erhält) und zusätzlich noch zwischen allen und für alle Variablen aus .
In muss jede Knotenüberdeckung mindestens Knoten haben, weil in jedem der Dreiecke mindestens zwei Knoten zu gehören müssen.
Es gilt nun: hat eine Knotenüberdeckung mit .
„": Sei erfüllbar. Dann wird in jeder Klausel mindestens ein Literal wahr. Sei die Knotenmenge, die für jedes Dreieck die anderen beiden Literale
enthält. Dann enthält genau Elemente und ist eine Knotenüberdeckung.
„“: Sei eine Knotenüberdeckung mit . Dann enhält in jedem Dreieck genau zwei Knoten. Definiere eine Belegung von durch
, falls eine Kopie von nicht zu gehört,
, falls eine Kopie von nicht zu gehört, und
, falls alle Kopien von und zu gehören.
Weil eine Knotenüberdeckung ist und alle Kanten in vorhanden sind, wird keine Variable gleichzeitig auf und gesetzt. Es gilt .
: Das Problem ist definiert durch
.
Zur Abkürzung definiert man .
Bemerkung: heißt mit Klausel mit Literalen, sodass es eine
Belegung gibt, für die in jeder Klausel ein Literal wahr und eins falsch ist.
Satz ( -vollständig): ist -vollständig.
Beweis: Es gilt , da man nicht-deterministisch raten und
in polynomieller Zeit verifizieren kann.
Für -schwierig zeigt man zunächst .
Dazu sei (dafür muss zuerst die syntaktische Korrektheit überprüft werden). Sei eine neue Variable. Ersetze nun jede Klausel in durch , d. h. aus
wird . Es gilt , denn:
„“: Sei , d. h. es gibt eine Belegung , sodass . Erweitere nun zu durch . Dann gilt immer noch
(die sind weiterhin alle wahr), aber auch , da in der Belegung zu wahr ausgewertet wird.
„“: Sei , d. h. es gibt eine Belegung , sodass . Gilt , dann werten alle Klauseln zu wahr
aus (weil die zu wahr auswerten, aber falsch ist), d. h. die Einschränkung von auf die Variablen von ist eine erfüllende Belegung von . Gilt , so ersetzt man durch .
Nun zeigt man wie oben: Für mit ersetzt man durch (dabei sind die , neue Variablen). Somit erhält man .
Es gilt :
„“: Sei , d. h. es gibt eine Belegung mit .
Man erweitert zu
wie folgt:
Wenn gilt, dann setze .
Wenn gilt, dann setze .
(Beide Fälle können in Kombination mit nicht auftreten, da ein mindestens Literal wahr und mindestens eins falsch sein muss.)
Für und setze beliebig.
Damit gilt und .
„“: Sei , d. h. es gibt eine Belegung mit . Sei die Einschränkung von auf die Variablen
von .
Wenn oder gilt, dann gilt .
Sei also und . Dann muss gelten, denn sonst wäre eine der beiden Klauseln aus bei oder nicht erfüllt (z. B. wenn gilt, dann wäre die erste Klausel aus für nicht erfüllt, wenn , und nicht für , wenn ). Damit ist aber ebenfalls , d. h. .
: Das Problem ist definiert durch
.
Satz ( -vollständig): ist -vollständig.
Beweis: Man zeigt , indem man die Klauseln ersetzt durch .
: Sei ein ungerichteter Graph mit und
.
Das Problem ist damit wie folgt definiert: Gegeben sei .
Gefragt ist, ob es eine Abbildung gibt, sodass .
Satz ( -vollständig): ist -vollständig.
Beweis: ist klar (Raten einer Abbildung und Überprüfung der Bedingung).
Für -schwierig zeigt man . Sei also mit eine Formel mit Variablen
und Klauseln . Erstelle nun einen Graphen wie folgt:
Führe für jede Variable und der Negation einen Knoten ein, d. h. zunächst Knoten. Führe außerdem einen separaten
„Wurzelknoten“ ein. Verbinde jedes mit und alle und jeweils mit dem Wurzelknoten. Der Wurzelknoten soll im Folgenden immer blau gefärbt sein. Damit
können die anderen Knoten im bisherigen Graphen nur rot oder grün gefärbt sein. Die 3-Färbungen des Teilgraphen entsprechen den möglichen Belegungen.
Füge nun für jede Klausel jeweils ein disjunktes Dreieck ein. Verbinde in den Dreiecken alle Literale
mit ihrem komplementären Literal aus dem 1. Schritt.
Es gilt 3-färbbar:
„“: Sei eine Belegung von mit . In den Dreiecken wird ein Knoten rot gefärbt, dessen entsprechendes Literal in der Klausel für
wahr wird. Ein Knoten, dessen Literal falsch ist (bzw. wahr für ), wird grün gefärbt und der verbleibende Knoten blau. Die Knoten im 1. Teilgraph werden dann
entsprechend gefärbt ( rot und , falls , sonst andersherum).
„“: Sei 3-färbbar, oBdA sei der Wurzelknoten blau gefärbt. Pro Dreieck müssen in jedem Fall alle Farben rot, grün und blau verwendet werden. Definiere , falls im 1. Teilgraphen rot ist, und , falls im 1. Teilgraphen grün ist. Das ist eine erfüllende Belegung, denn wenn z. B.
wäre, dann wären alle Knoten des entsprechenden Dreiecks mit grünen Knoten verbunden. Analog muss ein Literal pro Klausel falsch sein.
planar: Ein Graph heißt planar, falls kreuzungsfrei in die Ebene eingebettet werden kann.
Bemerkung: Jeder planare Graph ist 4-färbbar.
Satz (planare -vollständig):
für planare Graphen ist -vollständig.
Rucksack-Problem: Das Problem ist wie folgt definiert:
Gegeben seien und mit , . Gesucht ist , sodass gilt und unter dieser Bedingung
maximal wird.
Bemerkung: Bei der Entscheidungsvariante ist zusätzlich ein gegeben.
Gefragt ist, ob existiert, sodass und .
Mit binärer Suche (startend bei ) kann man zeigen:
Wenn die Entscheidungsvariante in liegt, dann auch die Optimierungsvariante.
In der Kryptografie geht es oft nur um einen Spezialfall von .
: Das Problem ist wie folgt definiert:
Gegeben seien , . Gesucht ist , sodass .
Satz (/ -vollständig):
(sogar schon ) ist -vollständig.
Beweis: ist klar (rate und verifiziere).
-schwierig kann man mit zeigen.
Sei also eine Formel in mit Klauseln . Aus
dieser Formel werden Werte (ein Paar für jede Variable , die in vorkommt) wie folgt erzeugt: . Dabei stehen vorne Bits (also Paare), danach folgt ein Trennbit und hinten befinden sich Bits, wobei die an der -ten Position von hinten ist. Die vorderen
Bits bestimmen sich folgendermaßen:
Das -te vordere Paar von ist , falls , und , falls .
Das -te vordere Paar von ist , falls , und , falls .
Das Trennbit ist beliebig, z. B. .
Wenn man nun setzt, dann gilt genau dann, wenn es ein gibt mit .
Bemerkung: und sind pseudo-polynomiell lösbar, d. h. die Probleme liegen in , falls die Zahlen unär kodiert werden (zum Lösen
benötigt man also polynomiell viel Zeit, wobei das Polynom nicht von der Länge von , sondern von selbst abhängt).
Die Lösung erfolgt dabei mit dynamischem Programmieren:
Sei . Ausgehend von kann man aus für
berechnen durch . Es gilt , d. h. für alle . Falls polynomiell begrenzt bleibt, so ist das Problem polynomiell lösbar, denn die Laufzeit ist .
quantifizierte Boolesche Formel (QBF): Eine quantifizierte Boolesche Formel (QBF) entsteht
folgendermaßen:
Jede Aussagenvariable ist eine QBF. In dieser Formel tritt frei auf.
, und sind QBF, falls und QBF sind. Eine Aussagenvariable aus oder ist frei in den Formeln,
falls frei in oder frei in ist.
und sind QBF, falls QBF und eine Aussagenvariable ist. Der Gültigkeitsbereich von bzw. erstreckt sich auf jedes
freie Vorkommen von in . ist in der entstehenden Formel nicht mehr frei, alle anderen Aussagenvariablen dagegen schon.
pränexe Normalform: Eine QBF ist in pränexer Normalform, falls
mit und
aussagenlogische Formel ohne Quantoren in den Variablen .
Satz (Existenz der pränexen Normalform): Jede QBF kann in eine äquivalente pränexe Normalform gebracht werden (in
polynomieller Zeit).
: Das Problem ist definiert durch
.
Satz ( -schwierig): ist -schwierig.