Technische Universität München Institut für Informatik Prof. Tobias Nipkow, Ph.D. Alexander Krauss WS 2007/08 13. 12. 2007 Perlen der Informatik 6. Übung Aufgabe G6.1 Nichtdeterministisches Programmieren Gegeben sei ein gerichteter Graph G = (V, E) wobei V = {v1 , . . . , vn } und E ⊆ V × V Ein Hamilton-Kreis ist eine Permutation π der Knotenindizes mit der Eigenschaft (vπ(i) , vπ(i+1) ) ∈ E für alle i ∈ {1, . . . , n − 1} und (vπ(n) , vπ(1) ) ∈ E Geben Sie einen nichtdeterministischen Algorithmus an, der prüft, ob ein Graph einen HamiltonKreis besitzt. Aufgabe G6.2 3SAT-Problem Wir betrachten das Erfüllbarkeitsproblem für aussagenlogische Formeln der folgenden Gestalt: (z1,1 ∨ z1,2 ∨ z1,3 ) ∧ . . . ∧ (zn,1 ∨ zn,2 ∨ zn,3 ) Hierbei ist zi,j entweder eine Variable oder eine negierte Variable. (die Teilformeln zi,1 ∨ zi,2 ∨ zi,3 werden auch als Klauseln bezeichnet). Zeigen Sie, daß das Erfüllbarkeitsproblem auch für Formeln dieser speziellen Form NP-vollständig ist. Aufgabe G6.3 Was wäre wenn... Was halten Sie von folgender Aussage: Es ist noch nicht abschließend geklärt, ob das Problem, festzustellen, ob zwei Zahlen teilerfremd sind, NP-vollständig ist oder nicht. Aufgabe G6.4 SAT als Meta-Problem Neben seiner theoretischen Relevanz ist SAT auch in der Praxis interessant: Da man viele schwierige Probleme mit SAT ausdrücken kann, kann man Verfahren zum Lösen von SAT auch zur Lösung dieser Probleme benutzen. Mittlerweile existieren daher hochoptimierte Löser für SATProbleme (z.B. MiniSat, http://minisat.se). Skizzieren Sie, wie man mit einem SAT-Solver Sudokus löst. Aufgabe H6.1 Hamilton-Kreis (schwer!) Wir haben in Aufgabe G6.1. bereits gezeigt, dass das Problem, zu entscheiden, ob ein Graph G einen Hamilton-Kreis besitzt, in NP liegt. Zeigen Sie nun, dass es auch NP-hart ist, indem Sie eine polynomielle Reduktion des 3SATProblems auf dieses Problem angeben. Hinweis: Der unten angegebene Teilgraph (der “Klauselgraph”) wird dabei von Bedeutung sein. Untersuchen Sie zunächst, auf welche Arten ein Hamilton-Kreis durch diesen Graph verlaufen kann. 1 1 2 2 3 3