Mich interessiert die Frage, wie man Informatik-Majors am besten die NP-Vollständigkeit beibringen kann. Sollten wir es insbesondere unter Verwendung von Karp-Reduktionen oder unter Verwendung von Turing-Reduktionen lehren?
Ich bin der Meinung, dass die Konzepte der NP-Vollständigkeit und -Reduzierung etwas sind, das jeder Major der Informatik lernen sollte. Beim Unterrichten der NP-Vollständigkeit habe ich jedoch festgestellt, dass die Verwendung von Karp-Reduktionen einige Nachteile hat.
Erstens scheinen Karp-Reduktionen für manche Schüler unnötig verwirrend zu sein. Der intuitive Begriff der Reduktion lautet: "Wenn ich einen Algorithmus zur Lösung von Problem X habe, kann ich ihn auch zur Lösung von Problem Y verwenden." Das ist sehr intuitiv - lässt sich aber viel besser auf Turing-Reduktionen als auf Karp-Reduktionen übertragen. Infolgedessen sehe ich, dass Schüler, die versuchen, NP-Vollständigkeit zu beweisen, durch ihre Intuition in die Irre geführt werden und einen falschen Beweis bilden. Der Versuch, beide Arten von Reduktionen zu lehren und diesen Aspekt von Karp-Reduktionen hervorzuheben, fühlt sich manchmal ein wenig nach unnötigem Formalismus an und beansprucht unnötige Unterrichtszeit und Aufmerksamkeit der Schüler für das, was sich als ein unwesentliches technisches Detail anfühlt. Es ist nicht selbstverständlich, warum wir diesen eingeschränkten Begriff der Reduktion verwenden.
Ich verstehe den Unterschied zwischen Karp-Reduktionen und Turing-Reduktionen (Cook-Reduktionen) und wie sie zu unterschiedlichen Vorstellungen von NP-Vollständigkeit führen. Mir ist klar, dass Karp-Reduktionen eine genauere Unterscheidung zwischen Komplexitätsklassen ermöglichen. Für ein ernstes Studium der Komplexitätstheorie sind Karp-Reduktionen offensichtlich das richtige Werkzeug. Aber für Informatikstudenten, die dies gerade erst lernen und sich nie mit Komplexitätstheorie befassen werden, bin ich mir nicht sicher, ob diese feinere Unterscheidung entscheidend ist, damit sie sich damit auseinandersetzen können.
Schließlich erinnere ich mich, dass ich mich als Student verwirrt fühlte, als ich auf ein Problem wie "Tautologie" stieß - z. Was verwirrend war, war, dass dieses Problem eindeutig schwierig ist: Jeder Polynom-Zeit-Algorithmus würde implizieren, dass; und die Lösung dieses Problems ist offensichtlich so schwierig wie die Lösung des Tautologieproblems. Obwohl die intuitive Tautologie ebenso schwierig wie die Erfüllbarkeit ist, ist die Tautologie nicht NP-hart. Ja, ich verstehe heute, warum dies der Fall ist, aber zu der Zeit erinnere ich mich, dass ich davon verwirrt war. (Was mir durch den Kopf ging, als ich endlich verstand, war: Warum unterscheiden wir überhaupt zwischen NP-hart und co-NP-hart? Das scheint künstlich und durch die Praxis nicht sehr motiviert zu sein. Warum konzentrieren wir uns eher auf NP als co-NP? Sie scheinen gleichermaßen natürlich zu sein. Aus praktischer Sicht scheint die co-NP-Härte im Wesentlichen die gleichen praktischen Konsequenzen zu haben wie die NP-Härte. Warum hängen wir also alle an dieser Unterscheidung? Ja, ich kenne die Antworten, aber als Student erinnere ich mich, dass sich das Thema dadurch arkaner und weniger motiviert anfühlte.)
Meine Frage lautet also: Wenn wir den Schülern NP-Vollständigkeit beibringen, ist es dann besser, mit Karp-Reduktionen oder Turing-Reduktionen zu unterrichten? Hat jemand versucht, das Konzept der NP-Vollständigkeit mithilfe von Turing-Reduzierungen zu vermitteln? Wenn ja, wie ist es gelaufen? Gibt es nicht offensichtliche Fallstricke oder Nachteile, wenn wir die Konzepte mit Turing-Reduktionen unterrichten und die mit Karp-Reduktionen verbundenen konzeptionellen Probleme überspringen würden?
Verwandte: siehe hier und hier , wo erwähnt wird, dass der Grund, warum wir Karp-Reduktionen in der Literatur verwenden, darin liegt, dass wir zwischen NP-Härte und Co-NP-Härte unterscheiden können. Es scheint jedoch keine Antwort zu geben, die sich auf die pädagogische Perspektive konzentriert, ob diese Fähigkeit für die Lernziele einer Algorithmusklasse, die von jedem Hauptfach belegt werden sollte, entscheidend ist. Siehe auch hier auf cstheory.SE , wo es eine ähnliche Diskussion gibt.
Antworten:
Ich würde sagen, auf jeden Fall Karp-Reduktionen zu verwenden. Unabhängig von den Vorteilen der Verwendung von Poly-Time-Turing-Reduzierungen (Cook) sind Karp-Reduzierungen das Standardmodell.
Jeder verwendet Karp und die Hauptgefahr beim Unterrichten von Cook ist, dass Sie mit einer ganzen Klasse von Schülern enden, die krankhaft verwirrt werden, wenn sie ein Lehrbuch lesen oder versuchen, das Thema mit jemandem zu diskutieren, der nicht von Ihnen unterrichtet wurde.
Ich stimme zu, dass Cook-Reduktionen in mehrfacher Hinsicht sinnvoller sind und dass es praktisch keinen Unterschied zwischen NP-Härte und coNP-Härte gibt, in dem Sinne, dass beide bedeuten, dass "dieses Problem ziemlich schwer ist und Sie kein Problem bekommen werden allgemeiner, effizienter, exakter Algorithmus, der große Instanzen bewältigen kann. " Andererseits ist die Unterscheidung zwischen NP und coNP nicht nur ein Artefakt einer Theorie, die auf Karp-Reduktionen basiert: Man spricht nicht oft von Graphen, die nicht 3-färbbar sind oder in denen jeder Satz von Vertices at enthält mindestens eine Kante. Irgendwie scheint die "natürliche" Version des Problems oft eher NP als coNP zu sein.k
quelle
Es ist besser, beides zu lehren ! Ein Informatik-Major sollte über beide Bescheid wissen.
Ich kenne niemanden, der Cook-Reduktionen verwendet, um NP-Vollständigkeit zu lehren, Komplexitätstheoretiker natürlich nicht, Nicht-Komplexitätstheoretiker folgen normalerweise der Standarddefinition seit Karps Artikel und werden in allen Lehrbüchern verwendet (von denen ich weiß). Es wird später viel Verwirrung stiften, wenn Sie die Standardterminologie nicht befolgen.
Kochreduzierungen lösen im Wesentlichen Probleme mit Black-Box-Subroutinen. Sie sind leicht zu erklären und zu motivieren, wenn Ihre Schüler Programmiererfahrung haben. Sie sind unerlässlich, da Sie ohne Cook-Reduzierungen keine Reduzierungen zwischen Suchproblemen, Optimierungsproblemen usw. diskutieren können.
quelle
Ein interessanter Weg, um sich dieser speziellen Lehrfrage zu nähern, besteht darin, zu erkennen, dass die NP-Vollständigkeit Ähnlichkeiten und Analogien mit der Unentscheidbarkeit aufweist, was ebenfalls nicht intuitiv ist. Die Schüler betreten die Klasse nur, wenn sie von Algorithmen gehört haben, die anhalten. Der Hauptsatz von TCS ist jedoch, dass es Probleme gibt, für die es keine garantierte Lösung gibt, dh das Stopp-Problem. und in der Tat können unentscheidbare Probleme anfangen, alles andere als erfunden zu sein, und sie scheinen etwas allgegenwärtig zu sein.
so, sagt die Theorie uns den Weg Berechnung grundsätzlich als Prozess zu sehen , die möglicherweise eine Antwort unter Umständen zurück. Unter anderen Umständen ist dies möglicherweise nicht der Fall. Für die NP-Vollständigkeit und -Entscheidbarkeit lautet die grundlegende und allgemeinste Frage: "Gibt es einen Algorithmus, der
Y
in P-Zeit zurückkehrt ?". Dies sagt jedoch nichts über einen Algorithmus aus, derN
in P-Zeit zurückkehrt. Ein Algorithmus kannY
in P-Zeit für eine Instanz zurückgeben, in anderen Instanzen jedoch keine Antwort. Die Theorie sagt uns, dass es hier wirklich einen deutlichen Unterschied gibt, auf den wir genau achten müssen. wenn es nicht intuitiv ist, bedeutet es, dass unsere fundamentalen Intuitionen angepasst werden müssen (wie es im theoretischen Unterricht oft der Fall ist).quelle
Y
in P-Zeit zurückkehren, aber auch "länger" als P-Zeit brauchen, um zurückzukehren,N
und die Theorie basiert auf / orientiert / fokussiert auf die Zeit, die benötigt wird, um zu antwortenY
.