NP-vollständige Probleme Michael Budahn - Theoretische Informatik 1 Motivation Michael Budahn - Theoretische Informatik 2 Motivation ● ● viele praxisrelevante Probleme sind NPvollständig und eine Lösung würde auf vielen Gebieten helfen wenn man weiss das es unmöglich ist effizente Algorithmen zu finden braucht man keine zu suchen Michael Budahn - Theoretische Informatik 3 Definition ● Ein Problem C ist NP-vollständig wenn : (1) von einer Nicht-Deterministischen Turingmaschine in polynomieller Zeit erkannt wirdird (2) sich alle Probleme in NP auf C reduzieren lassen Michael Budahn - Theoretische Informatik 4 Definition ● Problem A ist auf ein Problem B reduzierbar genau dann wenn: – es einen deterministischen Algorithmus mit polynomieller Laufzeit gibt der aus einem Problem a ∈A ein Problem b∈B macht, sodass b genau dann wahr ist wenn a auch wahr ist Michael Budahn - Theoretische Informatik 5 Folgen aus der Definition ● ● wenn man ein Algorithmus findet der ein NPvollständiges Problem löst kann man sämtliche Probleme aus NP in polynomieller Zeit lösen ⇒ P = NP um zu zeigen das ein Problem np-vollständig ist muss man nur zeigen das ein anderes NPvollständiges Problem darauf reduzierbar ist Michael Budahn - Theoretische Informatik 6 Einige np-vollständige Probleme ● SAT (Boolean satisfiability problem) – ● n-Puzzle – ● ist ein Boolscher Ausdruck durch eine Variablenbelegung erfüllbar? a∧b∨¬a∧c∧¬b∨¬c ist eine bestimmte Position lösbar? knapsack – kann man Gegenstände von einem Wert größer als w in seinen Rucksack packen ohne das Gewicht g zu überschreiten? Michael Budahn - Theoretische Informatik 7 Einige np-vollständige Probleme ● Subset sum – ● Cliquen-Problem – – ● Gegeben eine Menge an Ganzzahlen gibt es eine Teilmenge die Aufsummiert null ergibt? Gibt es in einem Graphen einen Clique mit mehr als k-Knoten? Eine Clique sind paarweise adjazente Knoten Independent Set – Gibt es in einem Graphen eine Menge unabhängigen Knoten größer k? Michael Budahn - Theoretische Informatik 8 Einige np-vollständige Probleme ● Subgraph isomorphism – ● gegeben zwei Graphen G und H ist G ein Untergraph von H? Graph coloring – kann man die Knoten eines Graphen mit n Farben so einfärben so das adjazente Knoten nicht die gleiche Farbe haben? Michael Budahn - Theoretische Informatik 9 Einige np-vollständige Probleme ● Hamiltonian Cycle – ● gibt es in einem Graphen einen Hamiltonischen Kreis? Traveling salesman – Gegeben Städte und Kosten um zwischen ihnen zu reisen. Kann man alle Städte bereisen ohne dabei ein bestimmtes Kostenlimit zu überschreiten? Hamiltonian Cycle ● Wie können wir zeigen das das Hamiltonian Cylce Problem np-vollständig ist? (1) wir zeigen das man eine Lösung für das Problem in polynomieller Zeit verifizieren kann (2) wir zeigen das ein anderes np-vollständiges Problem auf den Hamiltonian Cycle reduzierbar ist Reduktion von Hamiltonian Cycle auf Traveling Salesman A A B B C D C D E Gibt es einen Kreis mit Gewicht 0 ? Hamiltonischer Kreis ? A B C D E A B 1 C 1 1 1 1 1 1 1 1 1 D 1 1 E 1 1 1 1 E A B C D E polynomieller Algorithmus A B 0 C 0 0 0 0 D 1 0 0 E 1 0 0 0 1 1 0 0 0 0 0 0 Reduktion ● ● Mittlerweile gibt es mehr als 3000 Probleme für die NP-Vollständigkeit bewiesen wurde Wie wurde das erste NP-Vollständige Problem gefunden? Satz von Cook ● Stephan A. Cook bewies 1971 in dem nach ihm benannten Satz von Cook die NPVollständigkeit des Boolschen Erfüllbarkeitsproblems (SAT) Satz von Cook ● ● Zu jedem Problem in NP gibt es eine nichtdeterministische Turingmaschine M' die es in polynomieller Laufzeit löst Zu M' konstruieren wir M sodass : – – – – M hat 1 Band M betritt kein Feld links der Eingabe anstatt stehenzubleiben verharrt M in der Konfiguration k M hat immernoch polynomielle Laufzeit T n=c n Satz von Cook ● ● Wenn wir die Zellen des Bandes mit 1 beginnend durchnummerieren brauchen wir uns nur mit den Zellen von 1 bis T+1 beschäftigen. Für alle anderen brauchen wir mehr als T Schritte um sie zu erreichen ein Wort x ist genau dann in der Sprache wenn es eine Reihe von Konfigurationen gibt und die T-te Konfiguration eine akzeptierende ist Satz von Cook ● ● Wir brauchen nun eine Funktion die uns aus der Turingmaschine und dem Eingabewort eine Boolsche Formel erstellt die genau dann wahr ist wenn x in L liegt eine erfüllende Belegung der Boolschen Formel beschreibt eine legale akzeptierende Rechnung in polynomiller Zeit Satz von Cook ● Wir können nun alle Probleme in NP in ein SAT-Problem umwandeln. Wenn es einen deterministischen Algorithmus mit polynomieller Laufzeit gibt der SAT löst dann können wir auch alle anderen Probleme in NP lösen. Daraus folgt np-Vollständigkeit für das SAT-Problem Cliquen Problem ● ● ● Wir wollen wissen ob es in einem Graphen G eine Clique größergleich k gibt Eine Clique ist eine Menge an Knoten die paarweise adjazent sind Wir wollen zeigen das das Cliquen Problem NP-nollständig ist und führen es einfach auf das Independent set Problem zurück Independent set ● ● ● Wir wollen wissen ob es in einem Graphen G eine Menge an unabhängigen Knoten größer k gibt unabhängige Knoten sind untereinander paarweise nicht adjazent dieses Problem reduzieren wir auf das Cliquenproblem Independent set ● ● Wir bilden den inversen Graphen G' zu G indem wir überall da wo Kanten waren die Kanten streichen und überall da wo keine Kanten waren Kanten hinzufügen in G' gibt es genau dann eine Clique größer als k wenn es in G ein Menge unabhängiger Knoten größer k gibt Independent set ● ● ● Nun zeigen wir noch das Independent set wirklich in NP-schwer ist indem wir das SAT Problem darauf reduzieren Wir kriegen eine boolsche Formel und bringen sie in KNF wir konstruieren einen Graphen mit den Literalen als Knoten und verbinden alle Knoten einer Klausel und alle Literale mit ihrem negierten Gegenstück Independent set ● wenn es in dem Graph ein unabhängige Menge größer als die Anzahl der Klauseln gibt dann ist die Formel erfüllbar Quellen – – – – – Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie (Hopcroft, Ullmann) Algorithms (Sedgewick) Wikipedia Uni-Hamburg Uni-Ilmenau