Ergänzung zur Vorlesung Optimierung II (nach Kap. 7 aus [GT97]) Sommersemester 2008 Komplexität Unter der Überschrift Komplexität werden theoretische Grundlagen vorgestellt, mit denen es möglich ist, die Schwierigkeit von Algorithmen und Problemen geeignet zu erfassen. Dazu wird als Modellrechner die sogenannte Turing-Maschine herangezogen. Durch den Begriff polynomial“ können effektiv arbeitende Algorithmen ” und effektiv lösbare Probleme gut beschrieben und auch quantitativ gut unterschieden werden. Mit Hilfe der Eigenschaft nichtdeterministisch polynomial“ gelingt es, ” Klassen komplizierterer Algorithmen und Probleme abzugrenzen. 1 Definitionen, Polynomialität Durch den Begriff der Komplexität wird der Aufwand zur Abarbeitung eines Algorithmus bzw. zur Lösung eines Problems in Abhängigkeit vom Umfang der Eingangsinformation größenordnungsmäßig erfaßt. Wir präzisieren zunächst die in dieser Konzeption verwendeten Begriffe. Unter einem Problem P (E, X ) verstehen wir einen Operator P , durch den einer Menge E von Eingangsinformationen eine Menge X von Lösungen zugeordnet wird. Beispiel 1 Für ein lineares Gleichungssystem Ax = b ist E ⊂ IN × IN × A × B, wobei IN die Menge der natürlichen Zahlen, A die Menge aller Matrizen und B die Menge aller Vektoren ist. Die Eingangsinformation besteht in der Angabe der Dimensionsparameter m, n, der Matrix A und der rechten Seite b. Die Lösungsmenge ist X = B. Der Operator P (E, X ) ist nichtlinear. 2 Ein Problem ist also gegeben durch eine allgemeine Beschreibung all seiner Parameter und durch eine genaue Beschreibung der Eigenschaften, die eine Lösung haben soll. Die Beschreibung erfolgt in einer Sprache. Eine solche konkrete Beschreibung bezeichnen wir als Modell. Das bekannte Rundreiseproblem kann z.B. durch ein Permutationsmodell, ein graphentheoretisches Modell oder ein ganzzahliges lineares Optimierungsmodell beschrieben werden. Ein Problem P (E1 , X1 ) mit E1 ⊂ E, X1 ⊂ X heißt Teilproblem zum Problem P (E, X ). Das symmetrische Rundreiseproblem ist ein Teilproblem des Rundreiseproblems, lineare Gleichungssysteme mit m = n = 10 sind ein Teilproblem des Problems Lineares Gleichungssystem. Speziell heißt P ({E}, {X}) = P (E, X) mit E ∈ E, X ∈ X eine Aufgabe (Beispiel, Instance, Zustand), d.h. in einer Aufgabe sind alle Eingangsgrößen wertmäßig festgelegt. Mit dieser Definition wird ein Problem durch die Menge seiner Aufgaben beschrieben. Ein Problem, bei dem die Lösung nur aus der Antwort ja oder nein besteht, heißt Entscheidungsproblem. In diesem Fall können wir X = {0, 1} setzen. Das Beispiel TSB : Existiert in einem gewichteten Graphen G(V, E) eine Rundreise mit einer Länge ≤ β? 1 (1) zeigt eine Verwandtschaft von Optimierungs- und Entscheidungsproblemen. Entscheidungsprobleme und ihre Komplexität werden wesentlich über das Sprachkonzept untersucht. Eine endliche Menge Σ von Symbolen heißt Alphabet. Σ∗ bezeichnet die Menge aller endlichen Zeichenketten von Symbolen aus Σ. Eine Teilmenge L ⊂ Σ∗ heißt Sprache über dem Alphabet Σ. Durch ein Kodierungsschema C wird nun jede Eingangsinformation eines Entscheidungsproblems P als Zeichenkette über einem Alphabet Σ beschrieben. Damit wird die Menge Σ∗ durch P und C in drei Klassen zerlegt: 1. Eine Zeichenkette ist keine Kodierung einer Eingangsinformation für P , 2. Eine Zeichenkette entspricht einer Eingangsinformation mit nein-Antwort, 3. Eine Zeichenkette entspricht einer Eingangsinformation mit ja-Antwort. Die Klasse dieser Zeichenketten bezeichnen wir mit YP , die Menge der entsprechenden Eingangsinformationen heiße EY . ( Mit L(P, C) := x ist C-Kodierung einer ja-Eingangsinformation x∈Σ : mit Hilfe des Alphabets Σ ) ∗ bezeichnen wir die zum Problem P und dem Kodierungsschema C und dem Alphabet Σ gehörige Sprache. Unter einem Algorithmus verstehen wir eine endliche Folge von ausführbaren elementaren Operationen, durch die einer Eingangsinformation eine Ausgangsinformation zugeordnet wird. Elementare Operationen in diesem Sinn sind +, ∗, /, < aber eventuell auch Funktionswertberechnungen, Pivotisierungsschritte und insbesondere Computerbefehle. Mit letzteren ist natürlich ein bestimmtes Maschinenmodell verbunden. Im Zusammenhang mit Komplexitätsuntersuchungen wird dabei i.allg. die deterministische Turing-Maschine (DTM) betrachtet. Eine DTM besteht aus einer endlichen Zustandskontrolle, einem Lese-Schreib-Kopf und einem beidseitig unendlichen, in Felder eingeteilten Band (s. Abbildung 1). Ein Programm für eine DTM wird durch folgende Information realisiert: 1. Eine endliche Menge Γ von Bandsymbolen mit einer Teilmenge Σ ⊂ Γ von Eingabesymbolen und ein Leerzeichen b ∈ Γ\Σ. 2. Eine endliche Menge Q von Zuständen, in der ein Anfangszustand qo und zwei verschiedene Haltezustände qY und qN ausgezeichnet werden. 3. Eine Überführungsfunktion F : Γ × (Q\{qY , qN }) → Γ × Q × {LV, RV } , wobei LV eine Links- und RV eine Rechtsbewegung des Lese-Schreib-Kopfes bedeuten. 2 Abbildung 1: deterministische Turing-Maschine (DTM) Ein Eingabestring x = (s1 , · · · , se ) ∈ Σ∗ wird fortlaufend auf das Band geschrieben, wobei ein Symbol si ∈ Σ in ein Feld kommt. Das übrige Band enthält das Leerzeichen b. Durch die Überführungsfunktion wird einem Zustand q eindeutig ein neuer Zustand q 0 zugeordnet, ein Bandsymbol s durch ein Bandsymbol s0 ersetzt und eine Links- oder Rechtsverschiebung um ein Feld durchgeführt. Viele andere Rechnermodelle können auf die Turing-Maschine zurückgeführt werden. Bei Algorithmen in einer Formel- oder Programmiersprache muß man im allgemeinen das im Computer erzeugte Maschinenprogramm als den eigentlichen Algorithmus ansehen. Wir definieren, daß ein DTM-Programm M ein x ∈ Σ∗ genau dann akzeptiert, wenn M bei Eingabe von x im Zustand qY endet. Die durch M erkannte Sprache ist LM := { x ∈ Σ∗ : M akzeptiert x}. Weiterhin sagen wir, daß ein DTM-Programm M ein Entscheidungsproblem P unter einem Kodierungsschema C löst, falls M für alle Eingabe-Zeichenketten in einen Endzustand kommt und LM = L(P, C) ist. Als Umfang d der Eingangsinformation wollen wir die Anzahl der Symbole in der Zeichenkette verstehen, die wir durch die Kodierung der Eingangsinformation erhalten. Im Zusammenhang mit den realen Rechnern betrachten wir dabei eine binäre Kodierung, d.h. Σ = { 0, 1}. In diesem Fall wird eine positive ganze Zahl x mit 2r ≤ x < 2r+1 durch die Zeichenkette δ0 , δ1 , · · · , δr mit x= r X δi 2i , δi ∈ { 0, 1} für i = 0(1)r , i=0 dargestellt. Für die Länge r + 1 der Zeichenkette gilt r + 1 = dld (x + 1)e = O(ld x) (2) mit dem dyadischen Logarithmus ld(·). Unter Vernachlässigung von Vorzeichen, Trennungen und anderen zur Beschreibung der Struktur notwendigen Aufwendungen und auch der Aufrundung d . e setzen wir für den Umfang d für eine ganze Zahl n : d := ld (|n| + 1) für einen Vektor a = (a1 , · · · , an )T : d := n P i=1 3 ld (|ai | + 1) . (3) Es ist zu beachten, daß durch d nur eine Mindestlänge der Eingangsinformation beschrieben wird, die aber den wahren Umfang größenordnungsmäßig richtig wiedergibt. Wir können den Aufwand zur Abarbeitung eines Algorithmus durch die Anzahl der notwendigen elementaren Operationen, insbesondere wenn diese im Aufwand etwa gleich sind, oder durch die benötigte Rechenzeit messen. Sei nun ein Problem P durch die Menge E = {E1 , E2 , · · ·} seiner Eingangszustände gegeben. d(Ei ) sei die Länge der zu Ei gehörigen Zeichenkette. Wir betrachten einen Algorithmus A zur Lösung von P . Der Aufwand compl(A, E) von A zur Lösung eines Eingangszustandes E ∈ E sei durch eine Funktion gA : E → IR+ gegeben. Durch fA (t) := w-compl (A, P ) := max { gA (E) : E ∈ E ∧ d(E) = t } (4) wird ein Abarbeitungsaufwand für den Algorithmus A bei Umfang t der Eingangsinformation beschrieben. Wegen der Maximumbildung in (4) sprechen wir von einer worst case Komplexität. Bei gegebener Verteilung der Eingangszustände E in E erhalten wir eine average case Komplexität durch fA (t) := a-compl(A, P ) := Erwartungswert {gA (E) : E ∈ E ∧ d(E) = t}. (5) Wir führen nun die Komplexität von Problemen ein. Dazu sei AP die Menge aller Algorithmen zur Lösung des Problems P . Die w- bzw. a-Komplexität eines Problems P wird dann in folgender Weise definiert: w-compl(P ) = min w-compl(A, P ), A∈AP a-compl(P ) = min a-compl(A, P ). (6) A∈AP Ein Algorithmus A zur Lösung eines Problems P bzw. ein Problem P heißt polynomial, wenn ein p ∈ IR existiert mit f (t) = O(tp ) (7) wobei f (t) = compl(A, P ) bzw. f (t) = compl(P ) bedeutet. Im weiteren bezeichne P die Klasse der polynomialen Probleme. Ein Hauptuntersuchungsgegenstand der Komplexitätstheorie ist das Entscheidungsproblem, ob ein gegebenes Problem zur Klasse P gehört. Im Fall einer ja-Antwort interessiert natürlich auch der Exponent p. Ein Algorithmus A zur Lösung eines Problems P bzw. ein Problem P heißt exponentiell, wenn Konstanten c1 , c2 > 0, d1 , d2 > 1 und eine positive ganze Zahl t̄ existieren mit c1 d1t ≤ f (t) ≤ c2 d2t für t ≥ t̄. (8) 4 Beispiel 2 Ein Problem P habe genau eine positive Zahl a als Datensatz, die Rechenzeit eines Algorithmus A sei proportional zu a. Dann ist d(a) = lda, und es gilt fA (t) = Ca = C 0 et . Der Algorithmus A ist also exponentiell. 2 Es ist klar, daß bei einem polynomialen Problem der benötigte Speicherplatz höchstens eine polynomiale Funktion der Datensatzlänge sein kann. Wir wollen noch einige Bemerkungen zur Endlichkeit von Algorithmen machen. Für lineare Optimierungsprobleme oder lineare ganzzahlige Probleme, bei denen die Variablen beschränkt sind, existieren endliche Algorithmen. Für nichtlineare Probleme gibt es im allgemeinen keine endlichen Verfahren, aber durch Angabe einer ε-Genauigkeit kann die Endlichkeit erreicht werden. Von besonderem Interesse sind auch nichtlineare Probleme mit ganzzahligen Variablen. Hier ist zu bemerken, daß Enumerationsalgorithmen für solche Probleme in der Regel exponentiell sind. Betrachten wir das aus dem zehnten Hilbertschen Problem abgeleitete Entscheidungsproblem H10 : { x ∈ ZZ : p(x) = 0} 6= ∅ ? , (9) wobei p ein beliebiges Polynom mit ganzzahligen Koeffizienten ist, so ist es sogar unmöglich, ein Verfahren zur Lösung dieses Problems anzugeben. Der Unterschied zwischen polynomial und exponentiell zeigt sich natürlich insbesondere bei Problemen großen Umfangs, wird aber auch schon bei mittlerem Problemumfang deutlich. Wir betrachten die Komplexitätsfunktionen t2 und 2t und eine Rechenanlage mit 109 Operationen in der Sekunde. Dann ergeben sich folgende Rechenzeiten in Abhängigkeit von t : t 20 40 60 80 100 t2 4 · 10−7 sec 2 · 10−6 sec 4 · 10−6 sec 6 · 10−6 sec 1·10−5 sec 2t 10−3 sec 18 min 37 Jahre 38 Jahrmill. !!! Tabelle 1 Diese Tabelle rechtfertigt die Aussage mit angemessenem Aufwand lösbar“ oder ” gutartig“ für polynomiale Probleme bzw. für größere Dimensionen nicht mehr ” ” lösbar“ für exponentielle Probleme. In der folgenden Tabelle wird dargestellt, wie der Umfang einer etwa in einer Stunde lösbaren Aufgabe wächst, wenn eine 1000 mal schnellere Rechenanlage eingesetzt wird. 5 f(t) Umfang mit gegenwärtiger Rechenanlage Umfang mit 1000 mal schnellerer Anlage t2 2t d1 d2 31.6 d1 d2 + 9.997 . Tabelle 2 Wir erwähnen bzw. diskutieren im folgenden kurz einige Probleme aus P. P1) Sortieren durch Mischen : Die Menge S = {S1 , · · · , Sn } von reellen Zahlen wird in zwei Teilmengen aufgeteilt, die nacheinander vollständig sortiert und anschließend gemischt werden. Algorithmus MERGE S bestehe aus n Elementen. Spalte S in zwei Teilmengen S und S der Längen n1 = n − [n/2] und n2 = [n/2] auf. MERGE(S); MERGE(S); Der erste Aufruf produziere die Folge x1 ≤ x2 ≤ · · · ≤ xn1 , der zweite Aufruf die Folge y1 ≤ y2 ≤ · · · ≤ yn2 . Mische diese beiden Folgen zu einer sortierten Folge z1 ≤ z2 ≤ · · · ≤ zn zusammen. Es gilt w-compl(M erge) = s-compl(M erge) = O(n ln n). P2) Problem des kürzesten Weges in Graphen: w-compl(Dijkstra − Alg.) = O(n2 ) P3) Lineares Gleichungssystem: Ein Gleichungssystem Ax = b mit einer nichtsingulären n, n-Matrix A wird mit dem Gauß-Eliminationsverfahren in O(n3 ) Operationen gelöst. P4) Lineares Optimierungsproblem: Der Innerer-Pfad-Algorithmus und Algorithmus von Karmarkar sind polynomial. Demgegenüber zeigt das Beispiel von Klee/Minty [KM72], daß die Simplexmethode in der w-Komplexität exponentiell ist. Folgende lineare Optimierungsaufgabe wird dazu betrachtet: Beispiel 3 Gegeben sei bei z = xn → min ! ε ≤ x1 ≤ 1 εxj−1 ≤ xj ≤ 1 − εxj−1 , j = 2(1)n, wobei 0 < ε < 1 gewählt wird. Die Nebenbedingungen beschreiben eine ε-Störung 2 des n-dimensionalen Einheitswürfels. Beginnend mit x0 = (ε, · · · , εn−1 , 1−εn )T kann 6 die Pivotwahl in einem Abstiegsverfahren von Ecke zu Ecke so erfolgen, daß insgesamt 2n − 1 Iterationen erforderlich sind. Damit gilt w-compl(Eckenabstiegsverfahren) = O(2n ). d.h. das Verfahren ist exponentiell. Wird in diesem Beispiel ein Simplexverfahren mit stärkstem Abstieg verwendet, so genügt ein Iterationsschritt, um von der Startecke x0 zur Optimallösung x = (ε, ε2 , · · · , εn )T zu gelangen. 2 P5) Zuordnungsproblem Ein effektiver Lösungsalgorithmus wurde von Tomizawa angegeben. Es gilt w-compl(Zuordnungsproblem) = O(n3 ). Bisher unterscheiden wir polynomiale und exponentielle Probleme. Wir führen eine Transformation zwischen Problemen ein, die diese Klasseneinteilung erhält. Dazu seien zwei Probleme mit den Zustandsmengen D1 und D2 und den Lösungsmengen S1 (D1 ) = ∪z∈D1 S1 (z), S2 (D2 ) = ∪z∈D2 S2 (z) gegeben. Eine polynomiale Transformation ∝ eines Problems P1 in ein Problem P2 ist eine Funktion f : D1 → D2 mit den Eigenschaften: 1. Die Berechnung von f (z) erfolgt mit polynomialem Aufwand. 2. Für alle z1 ∈ D1 gilt a) S2 (f (z1 )) = ∅ ⇒ S1 (z1 ) = ∅, b) S2 (f (z1 )) 6= ∅ ⇒ Es existiert eine Funktion g : S2 (D2 ) → S1 (D1 ) mit x2 ∈ S2 (f (z1 )) ∧ x1 = g(x2 ) ⇒ x1 ∈ S1 (z1 ), und g(x2 ) ist mit polynomialem Aufwand berechenbar. (Die Bezeichnung P1 ∝ P2 wird auch gelesen als ”P1 kann polynomial auf P2 transformiert werden”). In Anwendung auf die Transformation von Sprachen – und leicht übertragbar auf Entscheidungsprobleme – erhält man folgenden Spezialfall: Eine polynomiale Transformation einer Sprache L1 ⊂ ∗1 in eine Sprache L2 ⊂ P P ist eine Funktion f : ∗1 → ∗2 mit den Eigenschaften: 1. Es existiert ein polynomiales DTM-Programm, das f berechnet. P 2. Für alle x ∈ ∗1 ist x ∈ L1 genau dann, wenn f (x) ∈ L2 . P Zur Illustration geben wir einige Beispiele und Aussagen an. 7 P∗ 2 Beispiel 4 Transformation linearer Optimierungsprobleme. Es sei A eine (m, n)-Matrix. Dann gelten die folgenden Zusammenhänge. cT x → min ! Ax ≤ a (P1 ) x ≥ 0 cT x → min ! Ax + y = a x ≥ 0, y ≥ 0 f - Einführen von Schlupfvariablen y Lösung z.B. mit Simplexver?fahren g S1 (z1 ) ⊂ IRn (P2 ) S2 (z2 ) ⊂ IRn+m Streichen des y-Teils 2 Als weiteres Beispiel betrachten wir eine Transformation zwischen dem in (1) eingeführten Entscheidungsproblem Traveling Salesman Bound (TSB) und dem folgenden Entscheidungsproblem Hamilton-Kreis (Hamilton Circuit): HC : Enthält der ungerichtete Graph G = (V, E) einen Hamilton-Kreis? (10) LEMMA 1 HC ∝ T SB. Beweis: Wir konstruieren eine polynomiale Funktion entsprechend obiger Definition. Ein Zustand z von HC besteht aus Graph G = (V, E), card V = n (keine Kantenbewertungen). Der korrespondierende Zustand f (z) von T SB sei Graph mit Knotenmenge V ; für vi , vk ∈ V wird eine Kante (vi , vk ) mit folgender Bewertung definiert: ( d(vi , vk ) = 1, falls (vi , vk ) ∈ E, 2, sonst. geforderte Rundreiselänge β := n. f (z) ist mit polynomialem Aufwand (≤ O(n2 )) berechenbar. f (z) ∈ / YP2 bedeutet, es existiert keine Rundreise mit einer Länge ≤ n ⇒ wenigstens eine Kante hat die Länge 2 ⇒ in G existiert kein Hamilton-Kreis, d.h.z ∈ / YP1 . Sei f (z) ∈ YP2 , d.h. es existiert eine Rundreise mit der Länge n ⇒ alle Kanten haben die Länge 1 ⇒ diese Rundreise ist Hamilton-Kreis in G. Bemerkung 1 In Lemma 1 wird nichts über die Komplexität der betrachteten Probleme ausgesagt. 2 8 LEMMA 2 P1 , P2 ∈ P mit P1 ∝ P2 ⇒ P2 ∈ P ⇒ P1 ∈ P“. ” Die Aussage P1 ∝ P2 bedeutet P2 ist mindestens so schwierig wie P1“. ” LEMMA 3 ∝ ist transitiv, d.h. P1 ∝ P2 ∧ P2 ∝ P3 ⇒ P1 ∝ P3 . Wir nennen im weiteren zwei Probleme P1 und P2 polynomial äquivalent, falls P1 ∝ P2 ∧ P2 ∝ P1 gilt. Einem Problem P (E, X ) ∈ P können wir das Entscheidungsproblem P̂ : Wird E ∈ E durch P auf X ∈ X abgebildet ? zuordnen. Da ein polynomialer Lösungsalgorithmus für P auch ein polynomialer Lösungsalgorithmus für P̂ ist, gehört damit auch P̂ zu P. Wenn wir die Klasse der polynomialen Entscheidungsprobleme mit PE bezeichnen, dann gilt also P = PE. Übung 1 Man veranschauliche sich den Polytop der Nebenbedingungen im Beispiel 3 für n = 3. Übung 2 Geben Sie für das lineare Optimierungsproblem eine mögliche Transformation ∝ auf das zugehörige duale Problem an. Übung 3 Man untersuche die Komplexität der Transformation eines linearen Gleichungssystems auf Dreiecksgestalt. 2 Nichtdeterministisch polynomiale Algorithmen; die Klassen N P, N P-vollständig In diesem Abschnitt werden wir zwei weitere wichtige Klassen von Entscheidungsproblemen und Sprachen betrachten. Dazu führen wir zunächst eine nichtdeterministische Turing-Maschine (NDTM) in folgender Weise ein. Zusätzlich zur deterministischen Turing-Maschine wird ein Orakel-Modul mit einem Schreibkopf verwendet. In der ersten Stufe eines NDTM-Programms wird durch den OrakelModul eine beliebige Zeichenkette aus Σ∗ auf das Band (vom Feld 0 nach links) geschrieben. Wie bei der DTM steht die einer Eingangsinformation x entsprechende Zeichenkette auf dem Band vom Feld 1 nach rechts. In der zweiten Stufe eines NDTM-Programms ist der Orakel-Modul inaktiv. Das Programm arbeitet ab dem aktuellen Zustand q0 wie ein DTM-Programm. Dabei wird in der Regel das Orakel mitgelesen. Eine Berechnung heißt akzeptierend“, wenn sie im Zustand qY endet. Ein NDTM” Programm M akzeptiert einen Input x, falls mindestens eine der unendlich vielen – eine für jedes mögliche Orakel aus Σ∗ – möglichen Berechnungen eine akzeptierende Berechnung ist. Wie früher gilt LM = { x ∈ Σ∗ : M akzeptiert x}. 9 Abbildung 2: nichtdeterministische Turing-Maschine (NDTM) Der Aufwand wird wie in (4) gemessen, wobei wir den Aufwand für den OrakelSchritt gleich 1 setzen. gA (E) mißt also jetzt den Aufwand der zweiten Stufe, den Überprüfungsaufwand. Für ein Entscheidungsproblem P (E, X ) sei EY := { E ∈ E : E führt auf ja-Antwort }, EN := { E ∈ E : E führt auf nein-Antwort }. (11) Für E ∈ E sei eine Zulässigkeits- oder Akzeptanzprüfung auf E ∈ EY mittels Prüfdaten V gegeben. Ein nichtdeterministischer Algorithmus zur Verifikation einer Aufgabe E ∈ E kann dann wie folgt beschrieben werden: (i) Orakel- oder Rateschritt: Rate V ; (ii) Akzeptanz- oder Prüfschritt: Prüfe E ∈ EY mit Hilfe von V ; Falls E ∈ EY so stoppe, anderenfalls gehe zu (i). Ein solches Verfahren heißt nichtdeterministisch polynomialer Algorithmus, wenn der Aufwand für den Prüfschritt, d.h. die erforderliche Rechenzeit bzw. Operationenzahl polynomial ist. Ein Entscheidungsproblem heißt nichtdeterministisch polynomial, wenn es einen zugehörigen nichtdeterministisch polynomialen Algorithmus gibt. Wir identifizieren ein Entscheidungsproblem P mit der Sprache L(P, C) und bezeichnen mit N P die Klasse aller nichtdeterministisch polynomialen Entscheidungsprobleme. Im weiteren werden einige Probleme aus N P betrachtet. Beispiel 5 Gegeben sei ein lineares Ungleichungssystem Ax ≤ b mit A ∈ L(IRn , IRm ), b ∈ IRm , (12) und aik , bi seien ganzzahlig mit |aik | ≤ δ, |bi | ≤ δ. Wir betrachten die Lösung des folgenden Entscheidungsproblems U01 : Gibt es ein x ∈ { 0, 1}n mit Ax ≤ b? mit dem nichtdeterministischen Algorithmus 10 (13) (i) Rateschritt : Rate ein x ∈ { 0, 1}n . (ii) Prüfschritt : Prüfe Ax ≤ b . Die Input-Zeichenkettenlänge ist t ≈ m · nld δ. Der Aufwand im Prüfschritt beträgt f (t) = 2m(n + 1) ld δ = O(mn ld δ) = O(t). Der Algorithmus ist nichtdeterministisch linear, das Problem U01 gehört zu N P. 2 Beispiel 6 Hamilton-Kreis (vgl. (10) und Lemma 1). Der folgende nichtdeterministische Algorithmus ist polynomial. (i) Rateschritt : Rate eine Bogenmenge E 0 ⊂ E. (ii) Prüfschritt : a) Prüfe, ob die Ordnung jedes Knotens von G0 = (V, E 0 ) zwei ist. Im Fall ja, gehe zu b), sonst gehe zu (i). b) Prüfe, ob G0 zusammenhängend ist. Wenn ja, so ist G hamiltonsch; anderenfalls gehe zu (i). Wir gehen von einem Graphen G mit n Knoten und m Bögen aus. Die Prüfung a) erfordert O(n) Operationen. Der Aufwand für den Schritt b) ist ebenfalls O(n). 2 Nach Abschnitt 1 können wir die Klasse der polynomialen Entscheidungsprobleme mit P identifizieren. Damit gilt natürlich P ⊂ N P. Eine zentrale, jedoch noch offene Frage in der Komplexitätstheorie ist, ob N P eine echte Erweiterung von P darstellt. Hierzu besteht die weitgehend akzeptierte Vermutung: P= 6 N P. Definition 1 Ein Problem P heißt N P-vollständig, falls 1. P ∈ N P und 2. für alle P 0 ∈ N P gilt P 0 ∝ P . Die N P-vollständigen Probleme sind praktisch die schwierigsten Probleme in der Klasse N P. Von Cook [Coo71] wurde gezeigt, daß die Klasse N P-vollständig nichtleer ist. Er betrachtete das folgende Erfüllbarkeitsproblem (Satisfiability, SAT): Es sei U = { u1 , u2 , · · · , un } eine Menge von Booleschen Variablen. Eine aussagenlogische Formel ist ein Ausdruck, der sich aus den Variablen ui , i = 1(1)n, mit Hilfe von Junktoren ∧ (und), ∨ (oder), ⇒ (wenn, dann) und ¬ (nicht) in endlich vielen Schritten unter Berücksichtigung der bekannten syntaktischen Regeln erzeugen läßt. Der Ausdruck heißt erfüllt, wenn es eine Zuordnung von wahr und falsch zu u1 , · · · , un gibt, so daß der Ausdruck den Wert wahr ergibt. Damit formulieren wir das folgende Entscheidungsproblem SAT: Ist eine gegebene aussagenlogische Formel Φ erfüllbar? 11 LEMMA 4 (Cook) SAT ist N P-vollständig. Um für ein gegebenes Problem P die Zugehörigkeit zur Klasse N P-vollständig zu untersuchen, gehen wir unmittelbar auf die Definition 1 zurück und nutzen die Transitivität der Transformation ∝ aus: (i) Zeige P ∈ N P. (ii) Suche ein bekanntes Problem P̂ ∈ N P- vollständig mit P̂ ∝ P . Nach Lemma 4 kann für solche Untersuchungen P̂ = SAT verwendet werden. Im Abschnitt 9.4 werden wir einige graphentheoretische Probleme auf Zugehörigkeit zur Klasse N P-vollständig untersuchen. Wir führen nun den Begriff komplementär für Entscheidungsprobleme ein. Sei P (E, X ) ein Entscheidungsproblem mit E = EY ∪ EN (vgl.(11)). Dann heißt das Entscheidungsproblem P̂ (Ê, X̂ ) mit Ê = E aber ÊY = EN und ÊN = EY komplementär zu P . Es gilt LEMMA 5 Die Klasse P ist bezüglich der Komplementbildung abgeschlossen. Beweis: Für ein Entscheidungsproblem P (E, X ) ∈ P sei ein polynomialer Algorithmus A(E), E ∈ E, mit compl A(E) = p(d), d = d(E) und einem Polynom p gegeben. Dann ist der Algorithmus Â(E) (i) Wende A(E) an; (ii) Im Schritt p(d) + 1 stoppe mit der Antwort ja; ein polynomialer Algorithmus für das komplementäre Problem P̂ . Wir bezeichnen nun mit co-N P die Klasse aller Probleme, die komplementär zu einem Problem aus N P sind. Die folgenden Überlegungen zeigen, daß Lemma 5 vermutlich nicht auf die Klasse N P übertragen werden kann. Das Problem T SB (siehe (1)) gehört zu N P (mit einem Orakel wird eine Rundreise mit einer Länge ≤ β erraten. Die Berechnung der Länge ist mit einem Aufwand proportional zur Knotenzahl des Graphen möglich). Das komplementäre Problem ist TSB : Haben alle Rundreisen eine Länge > β? . (14) Ein möglicher Lösungsalgorithmus wäre die Ermittlung aller Rundreisen mit zugehöriger Länge. Die Anzahl der Rundreisen in einem vollständigen Graphen beträgt (n − 1)! und ist deshalb nichtpolynomial in n. Somit ergeben sich Schwierigkeiten bei der Untersuchung auf Zugehörigkeit zu N P. In [PS82] wird das folgende Lemma bewiesen. LEMMA 6 Falls das Komplement eines Problems aus N P zu N P-vollständig gehört, dann gilt N P = co-N P. Übung 4 Man untersuche die Erfüllbarkeit des Ausdruckes (u1 ∨ u2 ∨ u3 ) ∧ (u1 ∨ u2 ) ∧ (u2 ∨ u3 ) ∧ (u3 ∨ u1 ) ∧ (u1 ∨ u2 ∨ u3 ). 12 Übung 5 Es seien a, c ∈ ZZ+n , b, ζ ∈ ZZ+ gegeben. Das Problem K01 : Gibt es ein x ∈ { 0, 1}n mit aT x ≤ b und cT x ≥ ζ? heißt 0-1-Knapsackproblem. Man beweise K01 ∈ N P-vollständig“. ” 3 Optimierungsprobleme und die Klasse N P-hart Die in Abschnitt 2 eingeführte Klasse N P umfaßt nur Entscheidungsprobleme. Wenn wir nun in der Definition 1 auf die Bedingung P ∈ N P“ verzichten, so ” erhalten wir einen Zugang zu allgemeineren Problemen. Wir nennen ein Problem P N P-hart, falls für alle P 0 ∈ N P gilt P 0 ∝ P . Unter Anwendung von Definition 1 bedeutet dies : Ein Problem P ist N P-hart, wenn es ein Problem P̂ ∈ N Pvollständig gibt mit P̂ ∝ P . Für die weiteren Untersuchungen definieren wir zu einem Optimierungsproblem z = f (x) → min ! P: bei x ∈ G (15) ein sogenanntes ZF -Separierungsproblem PB : Existiert ein x ∈ G mit f (x) < β? (16) mit einem vorgegebenen β ∈ IR und interessieren uns für die Lösung des Problems (18) mit Hilfe von Problemen der Form (19). Soll z.B. eine Zahl z ∗ aus einer gegebenen geordneten Zahlenmenge gesucht werden, so hat man ∗ LEMMA 7 Es sei ε > 0 gegeben. Eine Zahl z zwischen z und z kann mittels ld z − z Fragen der Form Ist z ∗ < a?“ mit der Genauigkeit ε bestimmt werden. ” ε Beweis: Bei der binären Suche (Intervallhalbierung) wird das Suchintervall auf Grund der Frage z ∗ < a?“ in jedem Schritt halbiert. ” Folgerung 1 Besteht die gegebene Zahlenmenge nur aus ganzen Zahlen, sind also insbesondere z, z und z ∗ ganzzahlig, so wird z ∗ nach k = dld (z − z + 1)e Schritten gefunden. 2 Für den Zusammenhang der Probleme (18) und (19) gilt damit die Zielfunktionswertes Folgerung 2 Ist eine Einschließung z ≤ z ∗ ≤ z des optimalen z − z von (18) bekannt, so kann z ∗ mittels k = ld ZF -Separierungsproblemen ε mit der Genauigkeit ε bestimmt werden. 2 Beispiel 7 Untere und obere Schranken für das Rundreiseproblem mit nichtnegativen Bogenlängen cik , i, k = 1(1)n, können sofort in der Form z = 0 und z = n · max{cij } angegeben werden. 2 i,j 13 Abbildung 3: Komplexitätsklassen Auf Grund der Definition für N P-hart gilt die folgende Beziehung P B ∈ N P-vollständig ⇒ P ∈ N P-hart. (17) Zusammengefaßt ergibt sich für die von uns eingeführten Komplexitätsklassen das in der Abbildung 3 dargestellte Bild. Es ist auch ein Anliegen dieses Buches, für Probleme aus der Klasse N P-hart Lösungsalgorithmen anzugeben, mit denen Aufgaben relevanter Größenordnung bearbeitet werden können. Übung 6 Für zwei Optimierungsprobleme P1 : F (u) → min ! bei u ∈ G und P2 : J(v) → min ! bei v ∈ H wird folgender Äquivalenzbegriff eingeführt: P1 ist äquivalent zu P2 , wenn zwei Abbildungen ϕ : G → H und ψ : H → G existieren mit J(ϕ(u)) ≤ F (u) F (ψ(v)) ≤ J(v) für alle für alle u ∈ G, v∈H. Man vergleiche diese Äquivalenz mit der in Abschnitt 1 gegebenen Definition. Literatur [GT97] Ch. Großmann, J. Terno, “ Numerik der Optimierung”, Teubner 1997. [GJ79] Garey, M. R. and Johnson, D. S., ”Computers and Intractability – A Guide to the Theory of NP-Completeness”, Freeman, San Francisco, 1979. [KM72] V. Klee and G. J. Minty. ”How good is the simplex algorithm?”, in: O. Shishda (ed.) Inequalities III, 159–175, Academic Press 1972. 14