Universität des Saarlandes Fakultät 6.2 – Informatik Theoretische Informatik (WS 2015) Team der Tutoren Lösungsvorschlag 10 Aufgabe 10.1 (8 Punkte) In der Vorlesung wurde der Begriff der Polynomialzeit-Reduktion definiert. Zur Erinnerung, man sagt, Sprache A ⊂ Σ∗ reduziert sich polynomiell auf Sprache B ⊂ Σ∗ , in Zeichen A P B, wenn es eine in Polynomialzeit berechenbare Funktion f : Σ∗ → Σ∗ gibt, sodass für alle x ∈ Σ∗ gilt: x ∈ A ⇔ f (x) ∈ B. Ist die Relation P transitiv? D.h., folgt aus A P B und B P C auch A P C? Lösungsvorschlag 10.1 Ja, die Relation ist transitiv. Seien A, B, C Sprachen. Zudem gelte sei f eine Reduktionsfunktion von A nach B und g eine Reduktionfunktion von B nach C. Nach dem Beweis der Transitiviät normaler Reduktionen gilt: x ∈ A ⇔ g(f (x)) ∈ C. Zu zeigen bleibt nur noch, dass g(f (x)) in polinomieller Zeit berechenbar ist. Sei n die Größe von x. Da f in polynomieller Zeit berechenbar ist,gibt es Konstanten c und a, sodass sich f (x) in worst-case Laufzeit c ∗ na berechnen lässt. Da eine Turingmaschine in dieser Zeit höchstens c ∗ na Zeichen geschrieben haben kann, gilt auch: |f (x)| ≤ c ∗ na . Da g in polynomieller Zeit berechenbar ist, gibt es Konstanten c0 und a0 , sodass sich g(y) in worst-case 0 Laufzeit c0 ∗ na berechnen lässt, wenn |y| = n. Daher hat g für das Argument f(x) worst-case Laufzeit 0 0 c0 ∗ (c ∗ na )a = c0 ∗ (ca ∗ na∗a ). Um g(f(x)) aus x zu berechnen muss erst f(x) berechnet werden und dann g(f(x)) 0 berechnet werden. Insgesamt ergibt sich also c0 ∗ (ca ∗ na∗a ) + c ∗ na =, was wieder ein Polynom ist. Aufgabe 10.2 (20 Punkte) Es sei G = (V, E) ein gerichteter Graph und n = |V |. Für a, b ∈ V ist eine (a, b)-Hamiltonscher Pfad in G eine Aufzählung v1 , . . . , vn der Knoten in V mit v1 = a und vn = b, sodass (vi , vi+1 ) ∈ E für 1 ≤ i < n, also ein gerichteter Pfad in G von a nach b, der jeden Knoten genau ein mal enthält. Analog lässt sich für einen ungerichteten Graphen H = (W, F ) so ein (a, b)-Hamiltonscher Pfad definieren: Es muss nun gelten, dass {vi , vi+1 } ∈ E für jedes i. Ge-(a,b)-HaPf soll nun die Sprache bezeichnen, die folgendes Entscheidungsproblem codiert: Gegeben ein gerichteter Graph G = (V, E) und zwei Knoten a, b ∈ V , bestimme, ob ein (a, b)-Hamiltonscher Pfad in G existiert. Unge-(a,b)-HaPf soll nun die Sprache bezeichnen, die das gleiche Problem für ungerichtete Graphen definiert. Zeigen Sie, dass Ge-(a,b)-HaPf und Unge-(a,b)-HaPf polynomiell äquivalent sind, also 1. Ge-(a,b)-HaPf P Unge-(a,b)-HaPf und 2. Unge-(a,b)-HaPf P Unge-(a,b)-HaPf Lösungsvorschlag 10.2 1. Zu zeigen: Ge-(a,b)-HaPf P Unge-(a,b)-HaPf Das heißt, dass wir eine polynomiell-berechenbare Funktion f finden müssen, sodass G ∈ Ge-(a,b)-HaPf ⇔ f (G) ∈ Unge-(a,b)-HaPf. (1) Sei G = (V, E) ein gerichteter Graph. Wir konstruieren aus G einen ungerichteten Graphen G0 = (V 0 , E 0 ) wie folgt: S • V 0 := v∈V v in , v,v out S in mid mid out • E 0 := v out , win (v, w) ∈ E ∪ v∈V v ,v , v ,v Wir fügen also für jeden Knoten v aus G drei Knoten v in , v und v out ein. Im ersteren werden alle eingehenden Kanten „gesammelt“, im letzteren alle ausgehenden und der mittlere dient zur Verbindung. Für alle diese Tripel wird je eine Kante zwischen dem „Eingangsknoten“ und dem „Mittelknoten“ sowie zwischen dem „Mittelknoten“ und dem „Ausgangsknoten“ hinzugefügt. Für eine Kante (v, w) ∈ E, fügen wir eine Kante zwischen dem „Ausgangsknoten“ von v (also v out ) und dem „Eingangsknoten“ von w (also 1/3 win ) ein. Wir definieren nun f als die Funktion, die gegeben einen ungerichteten Graphen G den der obigen Konstruktion entsprechenden gerichteten Graphen G0 zurück gibt. f ist offensichtlich in Polynomialzeit berechenbar, da die Größe von G0 polynomiell beschränkt ist in der Größe von G. Wir definieren nun f als die Funktion, die gegeben einen gerichteten Graphen G den der obigen Konstruktion entsprechenden ungerichteten Graphen G0 zurück gibt. f ist offensichtlich in Polynomialzeit berechenbar. Es bleibt zu zeigen, dass f Bedingung (1) erfüllt. Sei G = (V, E) ein gerichteter Graph mit n = |V | und seien a, b ∈ V . Sei G0 = (V 0 , E 0 ) der mit Hilfe von f konstruierte ungerichtete Graph (d.h. G0 = f (G)). • Sei G ∈ Ge-(a,b)-HaPf. Dann existiert ein (a, b)-Hamiltonscher Pfad in G und somit nach Definition eine Aufzählung v1 , . . . , vn der Knoten in V mit v1 = a und vn = b, sodass (vi , vi+1 ) ∈ E für alle 1 ≤ i < n. Ersetzt man nun jeden Knoten vi mit 1 < i < n in der Knotenaufzählung durch eine Knotenfolge v1in , v1 , v1mid und die Knoten v1 und vn durch v1 , v1out bzw. vnin , vn , so gilt nach Konstruktion von G0 , dass {vi , vi+1 } ∈ E für alle 1 ≤ i < n. Somit besitzt G0 einen (a, b)Hamiltonschen Pfad und daher gilt f (G) ∈ Unge-(a,b)-HaPf. • Sei G0 ∈ Unge-(a,b)-HaPf. Dann existiert ein (a, b)-Hamiltonscher Pfad in G0 und somit nach Definition eine Aufzählung v1 , . . . , vn der Knoten in V 0 mit v1 = a und vn = b, sodass {vi , vi+1 } ∈ E 0 für alle 1 ≤ i < n. Insbesondere enthält der (a, b)-Hamiltonsche Pfad auch alle „Mittelknoten“. Da ein „Mittelknoten“ v nur genau zwei Kanten besitzt, nämlich die zu den zugehörigen „Eingangs-“ und „Ausgangsknoten“ v in bzw. v out , sind die Kanten v in , v und {v, v out } unmittelbar hintereinander im (a, b)-Hamiltonschen Pfad enthalten. Somit stellt der (a, b)-Hamiltonsche Pfad eine Aneinanderreihung von Knotentripeln (v in , v, v out ) dar. Nach Konstruktion von G0 können niemals zwei „Eingangs-“ oder zwei „Ausgangsknoten“ durch eine Kante verbunden sein. Somit entspricht ein (a, b)-Hamiltonscher Pfad in G0 einem (a, b)-Hamiltnischen Pfad in G, wenn man ihn in der Reihenfolge v in , v, v out durchläuft. Somit gilt G ∈ Ge-(a,b)-HaPf. 2. Zu zeigen: Unge-(a,b)-HaPf P Ge-(a,b)-HaPf Das heißt, dass wir eine polynomiell-berechenbare Funktion f finden müssen, sodass G ∈ Unge-(a,b)-HaPf ⇔ f (G) ∈ Ge-(a,b)-HaPf. (2) Sei G = (V, E) ein ungerichteter Graph. Wir konstruieren aus G einen gerichteten Graphen G0 = (V 0 , E 0 ) wie folgt: • V 0 := V • E 0 := {(v, w) | {v, w} ∈ E} ∪ {(v, w) | {w, v} ∈ E} Wir behalten die Knoten also bei und fügen für jede ungerichtete Kante {v, w} ∈ E zwei Kanten (v, w) und (w, v) (also Kanten in beide Richtungen) in G0 ein. Wir definieren nun f als die Funktion, die gegeben einen ungerichteten Graphen G den der obigen Konstruktion entsprechenden gerichteten Graphen G0 zurück gibt. f ist offensichtlich in Polynomialzeit berechenbar, da die Größe von G0 polynomiell beschränkt ist in der Größe von G. Es bleibt zu zeigen, dass f Bedingung (2) erfüllt. Sei G = (V, E) ein ungerichteter Graph mit n = |V | und seien a, b ∈ V . Sei G0 = (V 0 , E 0 ) der mit Hilfe von f konstruierte gerichtete Graph (d.h. G0 = f (G)). • Sei G ∈ Unge-(a,b)-HaPf. Dann existiert ein (a, b)-Hamiltonscher Pfad in G und somit nach Definition eine Aufzählung v1 , . . . , vn der Knoten in V mit v1 = a und vn = b, sodass {vi , vi+1 } ∈ E für alle 1 ≤ i < n. Somit gilt nach Konstruktion von G0 , dass (vi , vi+1 ) ∈ E 0 und (vi+1 , vi ) ∈ E 0 für alle 1 ≤ i < n. Insbesondere existiert somit eine Aufzählung v1 , . . . , vn der Knoten in V 0 (nämlich die gleiche wir für G), sodass v1 = a und vn = b, sodass (vi , vi+1 ) ∈ E 0 für 1 ≤ i < n. Daher existiert ein (a, b)-Hamiltonscher Pfad in G0 und somit gilt f (g) ∈ Unge-(a,b)-HaPf. • Sei G0 ∈ Ge-(a,b)-HaPf. Dann existiert ein (a, b)-Hamiltonscher Pfad in G0 und somit nach Definition eine Aufzählung v1 , . . . , vn der Knoten in V 0 mit v1 = a und vn = b, sodass (vi , vi+1 ) ∈ E 0 für alle 1 ≤ i < n. Nach Konstruktion von G0 , kann eine Kante (v, w) ∈ E 0 nur existieren, wenn auch (w, v) ∈ E 0 sowie {v, w} ∈ E. Somit gilt für die obige Aufzählung auch, dass {vi , vi+1 } ∈ E für 1 ≤ i < n. Daher existiert ein (a, b)-Hamiltonscher Pfad in G und somit gilt G ∈ Unge-(a,b)-HaPf. Aufgabe 10.3 (20 Punkte) S S P = k∈N DTIME(nk ) und NP = l∈N NTIME(nl ) sind ja als unendliche Vereinigungen definiert. Es wäre also vorstellbar, dass P = NP, aber für jedes l gibt es eine Sprache in NTIME(nl ), die deterministisch bestenfalls in, l sagen wir, DTIME(n100 ) liegt. Die Aussage P=NP wäre ziemlich uninteressant, wenn man für ein Problem, das nichtdeterministisch in Θ(n2 ) vielen Schritten gelöst werden kann, deterministisch Θ(n10000 )viele Schritte gebraucht werden, oder nichtdeterministische Θ(n3 ) Zeitkomplexität nur mit Θ(1000000) deterministischer Zeit erreicht werden kann. 2/3 Zeigen Sie, dass dies nicht so ist. Zeigen Sie: Wenn P=NP, dann gibt es eine Konstante c, sodass für alle l ∈ N gilt, dass NTIME(nl ) ⊆ DTIME(nc∗l ). Lösungsvorschlag 10.3 Betrachten Sprache: wir die folgende UNP = (bin(l), w, x) Simulation von Mw mit nichtdet. UTM akzeptiert x nach max. |x|l Schritten . Offensichtlich ist UNP in NP, da maximal polynomiell viele Schritte in der Größe eines Teils der Eingabe gemacht werden. Da nach Annahme P=NP, gibt es eine DTM M’, welche UNP in DTIME(nk ) erkennt. Nun gibt es einen Faktor c, sodass k ≤ c ∗ l. Daher liegt UNP in DTIME (nc∗l ). Es ist klar, dass es für jede Sprache L ∈ NP eine Turingmaschine M und eine natürliche Zahl l gibt, sodass ∀x, (bin(l), < M >, x) ∈ UNP. Daher ist M’ eine Turingmaschine, die, wenn man bin(l) und <M> als erste Argumente fest in die Turingmaschine reinschreibt, für eine beliebiges x in DTIME(|(bin(l), < M >, x)|c∗l ) erkennt, ob es in L ist, oder nicht. Da |(bin(l), < M >, x)|c∗l > |x|c∗l , gilt, dass jede Sprache in NP, die in NTIME(nl ) ist, auch in DTIME(nc∗l ) ist. 3/3