In der Komplexitätstheorie bezeichnet Co-NP eine Komplexitätsklasse. In ihr sind genau die Sprachen enthalten, deren Komplemente zu NP gehören. Die Klasse Co-NP besteht also aus den Sprachen, für die ein Beweis, dass ein Wort nicht zur Sprache gehört, nicht-deterministisch in polynomieller Zeit überprüft werden kann.
Formale Definitionen
Die Klasse Co-NP ist definiert als , wobei das Komplement der Sprache L bezeichnet.
Analog zu NP gibt es eine alternative Definition für Co-NP über verifizierende deterministische Turingmaschinen. Demnach ist eine Sprache L in Co-NP, genau dann, wenn es eine deterministische Turingmaschine M gibt, für welche gilt, dass
- ,
- die Laufzeit von M(x,y) ist polynomiell beschränkt in x.
Äquivalent kann man für den ersten Punkt fordern, dass .[1]
Eine dritte äquivalente Definition benutzt ein Berechnungsmodell welches an dem der nichtdeterministische Turingmaschine angelehnt ist. Eine Sprache L ist demnach genau dann in Co-NP, wenn es eine nichtdeterministische Turingmaschine N und ein Polynom p gibt, für die gelten:
- N hält bei Eingabe von x immer nach höchstens Schritten.
- N akzeptiert eine Eingabe genau dann, wenn alle möglichen Läufe von N bei Eingabe x akzeptieren.
Co-NP-Vollständigkeit
Analog zu anderen Komplexitätsklassen kann man innerhalb von Co-NP vollständige Probleme definieren. Hierbei nennt man eine Sprache L Co-NP-Vollständig, genau dann wenn folgende zwei Bedingungen erfüllt sind:
- Die Sprache L ist selbst aus Co-NP.
- Für jede Sprache L' aus Co-NP gilt: , wobei die Polynomialzeitreduktion beschreibt.
Wenn nur die 2. Eigenschaft erfüllt ist spricht man von Co-NP-schweren Sprachen
Die Sprache TAUTOLOGIE enthält alle Booleschen Formeln (kodiert) die bei jeder Variablenbelegung mit wahr ausgewertet werden. TAUTOLOGIE ist das Komplement von SAT und ein Beispiel einer Co-NP-vollständigen Sprache. Die Co-NP-Vollständigkeit folgt aus dem Satz von Cook und Levin. Allgemein gilt für alle NP-vollständigen Sprachen, dass deren Komplement Co-NP-vollständig ist.
Beziehung zu anderen Komplexitätsklassen
Die Komplexitätsklasse P ist eine Teilmenge von Co-NP. Die Klasse Co-NP ist wiederum in der Komplexitätsklasse PSPACE enthalten. Von beiden Teilmengenbeziehungen weiß man nicht, ob es echte Teilmengenbeziehungen sind.
Der Schnitt von NP und Co-NP enthält die Klasse P, es ist jedoch unbekannt, ob es noch weitere Sprachen in diesem Schnitt gibt.
Beziehung von Co-NP und NP
Man weiß bislang nicht wie NP und Co-NP zueinander liegen, vermutet aber, dass NP≠Co-NP. Die Klasse Co-NP ist eine Klasse in der Polynomialzeithierarchie, in welcher sie mit bezeichnet wird. Falls NP=Co-NP, würde die Polynomiallzeithierarchie auf der 1. Stufe kollabieren, was bedeuten wurde, dass PH=Co-NP, jedoch wurde man in diesem Fall nichts darüber aussagen können ob P=NP.[2] Auf der anderen Seite gilt, wenn P=NP, dann kollabiert die Polynomialzeithierarchie auf der untersten Stufe, und es würde NP=Co-NP folgen. Es ist nicht bekannt, ob aus P≠NP auch NP≠Co-NP folgt.
Wenn A eine NP-volständige Sprache ist, dann ist genau dann, wenn NP=Co-NP. Der nicht-triviale Teil der Äquivalenz kann wie folgt gezeigt werden:
- : Sei . Weil NP-schwer ist, ist , und damit . Wegen ist , und damit ist , also .
- : .
Analog lässt sich folgender Satz zeigen: Wenn A Co-NP-vollständig ist, dann ist genau dann, wenn NP=Co-NP.
Belege
- ↑ Boaz Barak: NP completeness,CoNP, the Polynomial Hierarchy and P/poly (lecture notes). (pdf; 174 kB) Abgerufen am 26. April 2013.
- ↑ Sanjeev Arora, Boaz Barak: Computational Complexity. Cambridge University Press, ISBN 978-0-521-42426-4, S. 57.