Computers & Intractability: A Guide to the Theory of NP-completenessSchwierigkeitsgrad: SchwerAutoren: Michael R. Garey, David S. JohnsonErscheinungsdatum: 1979Sprache: EnglischISBN: 0-7167-1045-5340 SeitenRezension von Sebastian GießeJedem, der Grundkenntnisse in der Komplexitätstheorie hat und nun seineKenntnisse über NP-Vollständigkeit verbessern möchte, dem empfehle ich“Computers & Intractability: A Guide to the Theory of NP-completeness“ vonGarey und Johnson.Das Buch eignet sich sowohl als Lehrbuch als auch zum Nachschlagen. ZumNachschlagen eignet sich vor allem der riesige Anhang, mit mehr als 300NP-vollständigen Problemen. Dieser ist sinnvoll kategorisiert, sodass manschnell Probleme finden kann, auch ohne ihre Namen zu kennen. So konnte ichzum Beispiel unter „A2.1 Spanning Trees“ das Problem „Degree ConstrainedSpanning Tree“ finden, welches ich zum Beweisen der NP-Vollständigkeit vonAufgabe 1 der 2. Runde des 29. BwInf nutzen konnte.Das Buch beginnt mit einer netten Geschichte von einem Informatiker, derkeinen schnellen Algorithmus für ein Problem findet, aber zeigen kann, dassdies nicht daran liegt, dass er ein schlechter Informatiker ist.Nach der Einführung in Kapitel 1, folgt mit Kapitel 2 ein ausführlicher undsehr formaler Einstieg in die NP-Vollständigkeit. Ein Problem ist in NP,wenn die zugehörige Sprache von einer nichtdeterministischen Turingmaschinein Polynomialzeit entscheidbar ist. Schließlich wird noch der Satz von Cook(SAT ist NP-Vollständig) bewiesen.Kapitel 3 vermittelt die Kunst des NP-Vollständigkeitsbeweis. Zunächst wirddie grundlegende Idee hinter einem solchen Beweis erklärt, dann wird dieNP-Vollständigkeit von 6 bekannten und wichtigen Problemen (3-SAT,3-Dimensional-Matching, Vertex-Cover, Clique, Hamiltonian Circuit undPartition) bewiesen. Kapitel 3.2 beschreibt allgemein anwendbare Verfahrenzum Beweis von NP-Vollständigkeit und demonstriert diese an Beispielen.Kapitel 4: Using NP-Completeness to Analyze ProblemsKapitel 5: NP-HardnessKapitel 6: Coping with NP-Complete Problems behandeltApproximationsalgorithmen und vermittelt wie man zeigen kann, dass dasErgebniss eines solchen Algorithmus maximal k-mal schlechter als dasoptimale Ergebniss ist.Kapitel 7: Beyond NP-Completeness geht auf unterschiedliche Problemklassen,z.B. P, NP, NPC, co-NPC, PSPACE, DLOGSPACE ein.Leider habe ich das Buch, weil ich es in der Bibliothek ausgeliehen hatte,nicht komplett lesen können. Aber nichtsdestoweniger habe ich sehr vielgelernt. Beim Lesen wird man oft auf Passagen stoßen, die man mehrfach lesenmuss, um sie zu verstehen. Dies liegt aber nicht am Schreibstil der Autoren,sondern an der Schwierigkeit der Thematik. Die Erklärungen sind gut undwerden durch sinnvolle Abbildungen unterstützt. Wer dieses Buch gelesen undverstanden hat, der hat fortgeschrittene Kentnisse über NP-Vollständigkeit,ist in der Lage Probleme als NP-vollständig zu erkennen und dies dann zubeweisen, weiß wie er mit solchen Problemen umgehen soll und ist in der Lageandere Fachliteratur zu verstehen.Das Buch ist ein Klassiker und früher oder später sollte jeder Informatikerdieses Buch (wenigstens teilweise) lesen.
Beim Lesen wird man oft auf Passagen stoßen, die man mehrfach lesen muss, um sie