Komplexitätsklasse

Eine Darstellung der Beziehungen zwischen mehreren wichtigen Komplexitätsklassen

Im Computerkomplexitätstheorie, a Komplexitätsklasse ist ein einstellen von Rechenprobleme von verwandten ressourcenbasierten Komplexität. Die beiden am häufigsten analysierten Ressourcen sind Zeit und Erinnerung.

Im Allgemeinen wird eine Komplexitätsklasse in Bezug auf eine Art Rechenproblem definiert, a Berechnungsmodellund eine begrenzte Ressource wie Zeit oder Erinnerung. Insbesondere bestehen die meisten Komplexitätsklassen aus Entscheidungsprobleme das sind lösbar mit a Turing Maschineund unterscheiden sich nach ihrer Zeit- oder Raum- (Speicher-) Anforderungen. Zum Beispiel die Klasse P ist die Reihe von Entscheidungsproblemen, die durch eine deterministische Turing -Maschine in löslich sind Polynomzeit. Es gibt jedoch viele Komplexitätsklassen, die in Bezug auf andere Arten von Problemen definiert sind (z. Probleme zählen und Funktionsprobleme) und unter Verwendung anderer Berechnungsmodelle (z. Probabilistische Turing -Maschinen, Interaktive Proof -Systeme, Boolesche Schaltungen, und Quantencomputer).

Die Untersuchung der Beziehungen zwischen Komplexitätsklassen ist ein wichtiger Forschungsbereich in der theoretischen Informatik. Es gibt oft allgemeine Hierarchien von Komplexitätsklassen; Zum Beispiel ist bekannt, dass eine Reihe von Grund- und Raumkomplexitätsklassen auf folgender Weise miteinander in Verbindung gebracht werden: NlPNpPSPACENachfolgerExpace (wo ⊆ bezeichnet das Teilmenge Beziehung). Viele Beziehungen sind jedoch noch nicht bekannt; Zum Beispiel eines der berühmtesten Offene Probleme in Informatik betrifft sich, ob P gleich Np. Die Beziehungen zwischen Klassen beantworten häufig Fragen zur grundlegenden Natur der Berechnung. Das P gegen Np Das Problem hängt beispielsweise direkt mit Fragen dessen zusammen, ob Nichtdeterminismus Fügt Computern alle Rechenleistung hinzu und ob Probleme mit Lösungen, die schnell auf Korrektheit überprüft werden können, schnell gelöst werden können.

Hintergrund

Komplexitätsklassen sind Sets von verwandtem Rechenprobleme. Sie sind in Bezug auf die rechnerische Schwierigkeit definiert, die in ihnen enthaltenen Probleme in Bezug auf bestimmte Rechenressourcen wie Zeit oder Speicher zu lösen. Ausführlicher besteht die Definition einer Komplexitätsklasse aus drei Dingen: einer Art Rechenproblem, einem Berechnungsmodell und einer begrenzten Rechenressource. Insbesondere bestehen die meisten Komplexitätsklassen aus Entscheidungsprobleme das kann durch a gelöst werden Turing Maschine mit begrenzt Zeit oder Platz Ressourcen. Zum Beispiel die Komplexitätsklasse P ist definiert als der Satz von Entscheidungsprobleme das kann durch a gelöst werden deterministische Turing -Maschine in Polynomzeit.

Rechenprobleme

Intuitiv, a Rechenproblem ist nur eine Frage, die von einem gelöst werden kann Algorithmus. Zum Beispiel "ist das natürliche Zahl Prime? "Ist ein Rechenproblem. Ein Computerproblem wird mathematisch dargestellt als die einstellen Antworten auf das Problem. Im Beispiel des Primalität das Problem (nennen Sie es ) wird durch die Menge aller natürlichen Zahlen dargestellt, die Primes sind: . In der Theorie der Berechnung werden diese Antworten als dargestellt als Saiten; Zum Beispiel könnten im Vorbild beispielsweise die natürlichen Zahlen als Zeichenfolgen von dargestellt werden Bits das repräsentiert Binärzahlen. Aus diesem Grund werden Rechenprobleme häufig synonym als Sprachen bezeichnet, da Bits -Zeichenfolgen repräsentieren formelle Sprachen (Ein Konzept, das ausgeliehen wurde Linguistik); zum Beispiel sagen, dass das Das Problem liegt in der Komplexitätsklasse Np ist gleichbedeutend mit der Aussage, dass die Sprache ist in Np.

Entscheidungsprobleme

A Entscheidungsproblem hat nur zwei mögliche Ausgänge, Jawohl oder nein (Alternativ 1 oder 0) auf jeder Eingabe.

Die am häufigsten analysierten Probleme in der theoretischen Informatik sind Entscheidungsprobleme- Die Arten von Problemen, die als ja, keine Fragen. Das obige Vorbild oben ist zum Beispiel ein Beispiel für ein Entscheidungsproblem, da es durch die Ja-no-Frage dargestellt werden kann "ist die natürliche Zahl Prime". In Bezug auf die Berechnungstheorie wird ein Entscheidungsproblem als Satz von Eingabebestnen dargestellt, die ein Computer ein korrektes Ausführen ausführen Algorithmus würde "Ja" antworten. Im Vorbild, Beispiel, ist die Reihe von Zeichenfolgen, die natürliche Zahlen darstellen, die bei Eingabe in einen Computer einen Algorithmus korrekt ausführen Tests auf PrimalitätDer Algorithmus antwortet "Ja, diese Zahl ist Prime". Dieses "Ja-no" -Format wird oft gleichbedeutend mit "Akzeptanz-Rejekt" angegeben. Das heißt, ein Algorithmus "akzeptiert" eine Eingabezeichenfolge, wenn die Antwort auf das Entscheidungsproblem "Ja" ist und "ablehnt", wenn die Antwort "Nein" lautet.

Während einige Probleme nicht leicht als Entscheidungsprobleme ausgedrückt werden können, umfassen sie dennoch eine breite Palette von Rechenproblemen.[1] Andere Arten von Problemen, die bestimmte Komplexitätsklassen in Bezug auf inklusive definiert sind Funktionsprobleme (z.B. FP), Probleme zählen (z.B. #P), Optimierungsprobleme, und Probleme versprechen (Siehe Abschnitt "Andere Arten von Problemen").

Computermodelle

Um konkret den Begriff eines "Computers" zu machen, werden in theoretischen Informatikproblemen im Kontext von a analysiert Computermodell. Computermodelle machen genau die Vorstellungen von Rechenressourcen wie "Zeit" und "Speicher". Im Computerkomplexitätstheorie, Komplexitätsklassen befassen sich mit dem inhärent Ressourcenanforderungen an Probleme und nicht die Ressourcenanforderungen, die davon abhängen, wie ein physischer Computer konstruiert ist. In der realen Welt können beispielsweise verschiedene Computer unterschiedliche Zeit und Speicher benötigen, um dasselbe Problem zu lösen, da sie konstruiert wurden. Durch die Bereitstellung eines abstrakten mathematischen Repräsentationen von Computern werden Computermodelle abstrakt überflüssige Komplexitäten der realen Welt abtrakt (wie Unterschiede in Prozessor Geschwindigkeit), die ein Verständnis der Grundprinzipien behindern.

Das am häufigsten verwendete Computermodell ist das Turing Maschine. Während andere Modelle existieren und viele Komplexitätsklassen in Bezug auf sie definiert werden (siehe Abschnitt "Andere Berechnungsmodelle"), Die Turing -Maschine wird verwendet, um die meisten grundlegenden Komplexitätsklassen zu definieren. Mit der Turing -Maschine, anstatt Standardeinheiten der Zeit wie die zweite zu verwenden (was es unmöglich macht, die Laufzeit von der Geschwindigkeit der physischen Hardware zu entwirren) und Standardeinheiten des Speichers wie BytesDer Begriff der Zeit wird als die Anzahl der elementaren Schritte abstrahiert, die eine Turing -Maschine zur Lösung eines Problems unternimmt, und der Begriff des Speichers wird als die Anzahl der Zellen abstrahiert, die auf dem Klebeband der Maschine verwendet werden. Diese werden unten ausführlicher erklärt.

Es ist auch möglich, die zu verwenden Blum -Axiome Komplexitätsklassen definieren, ohne sich auf einen Beton zu beziehen ComputermodellAber dieser Ansatz wird in der Komplexitätstheorie seltener verwendet.

Deterministische Turing -Maschinen

Eine Illustration einer Turing -Maschine. Das "B" zeigt das leere Symbol an.

A Turing Maschine ist ein mathematisches Modell einer allgemeinen Computermaschine. Es ist das am häufigsten verwendete Modell in der Komplexitätstheorie, was zum großen Teil darauf zurückzuführen ist, dass es als so leistungsfähig angesehen wird wie jedes andere Berechnungsmodell und mathematisch leicht zu analysieren. Wichtig ist, dass es angenommen wird, dass ein Algorithmus, der ein bestimmtes Problem löst These der Kirche und tätige These); Dies bedeutet, dass es angenommen wird, dass das jeder Algorithmus kann als Turing -Maschine dargestellt werden.

Mechanisch manipuliert eine Turing Machine (TM) Symbole (im Allgemeinen auf die Bits 0 und 1 beschränkt, um eine intuitive Verbindung zu realen Computern herzustellen), die auf einem unendlich langen Bandstreifen enthalten sind. Das TM kann nacheinander lesen und schreiben, mit einem Bandkopf. Die Operation wird vollständig durch einen endlichen Satz elementarer Anweisungen bestimmt, wie z. 0, schreiben Sie eine 1 und wechseln Sie in den Status 6 ". Die Turing -Maschine beginnt nur mit der Eingangszeichenfolge auf dem Klebeband und auf der Leerzeichen überall sonst. Der TM akzeptiert die Eingabe, wenn sie in einen benannten Akzeptanzstatus eintritt und die Eingabe ablehnt, wenn sie in einen Ablehnungszustand eintritt. Die deterministische Turing Machine (DTM) ist die grundlegendste Art der Turing -Maschine. Es verwendet eine feste Reihe von Regeln, um seine zukünftigen Aktionen zu bestimmen (weshalb es genannt wird. "deterministisch").

Ein Rechenproblem kann dann in Bezug auf eine Turing -Maschine als Satz von Eingabesteichen definiert werden, die eine bestimmte Turing -Maschine akzeptiert. Zum Beispiel das Primalitätsproblem Von oben ist die Reihe von Zeichenfolgen (die natürliche Zahlen darstellen), die eine Turing -Maschine mit einem korrekten Algorithmus ausführen Tests auf Primalität Akzeptiert. Eine Turing -Maschine soll gesagt erkenne Eine Sprache (erinnern Sie sich daran, dass "Problem" und "Sprache" weitgehend gleichbedeutend mit Berechnungs- und Komplexitätstheorie), wenn sie alle Eingaben in der Sprache akzeptiert und zu sagen wird sich entscheiden Eine Sprache, wenn sie zusätzlich alle Eingaben ablehnt, die nicht in der Sprache enthalten sind (bestimmte Eingaben können dazu führen, dass eine Turing -Maschine für immer läuft. Dekidabilität legt die zusätzliche Einschränkung über Erkennbarkeit dass die Turing -Maschine alle Eingänge anhalten muss). Eine Turing -Maschine, die ein Problem "löst", soll im Allgemeinen eine bedeuten, die die Sprache entscheidet.

Turing -Maschinen ermöglichen intuitive Vorstellungen von "Zeit" und "Raum". Das Zeitkomplexität Von einem TM auf einer bestimmten Eingabe ist die Anzahl der elementaren Schritte, die die Turing -Maschine ausnimmt, um entweder einen Akzeptanz- oder Ablehnungszustand zu erreichen. Das Raumkomplexität ist die Anzahl der Zellen auf seinem Band, mit dem es entweder einen Akzeptierstatus erreicht oder ablehnt.

Nichtdeterministische Turing -Maschinen

Ein Vergleich der deterministischen und nicht deterministischen Berechnung. Wenn ein Zweig auf der nicht deterministischen Berechnung akzeptiert wird, akzeptiert das NTM.

Die deterministische Turing -Maschine (DTM) ist eine Variante der nichtdeterministischen Turing -Maschine (NTM). Intuitiv ist ein NTM nur eine regelmäßige Turing -Maschine, die die zusätzliche Fähigkeit hat, mehrere mögliche zukünftige Aktionen aus einem bestimmten Zustand zu untersuchen und einen Zweig zu "auswählen", der akzeptiert (falls vorhanden). Das heißt, während ein DTM nur einem Berechnungszweig folgen darf, kann ein NTM als Berechnungsbaum vorgestellt werden, der in jedem Schritt in viele mögliche Rechenwege verzweigt wird (siehe Bild). Wenn mindestens ein Zweig des Baumes mit einem "Akzeptieren" -Kongrund angehalten wird, akzeptiert der NTM die Eingabe. Auf diese Weise kann ein NTM als gleichzeitig alle rechnerischen Möglichkeiten parallel und ausgewählt werden und einen Akzeptanzbetrag auswählen.[2] NTMs sind nicht als physikalisch realisierbare Modelle gedacht, sondern sind einfach theoretisch interessante abstrakte Maschinen, die zu einer Reihe interessanter Komplexitätsklassen führen (die häufig physikalisch realisierbare äquivalente Definitionen haben).

Das Zeitkomplexität eines NTM ist die maximale Anzahl von Schritten, die der NTM verwendet irgendein Zweig seiner Berechnung.[3] Ebenso das Raumkomplexität Von einem NTM ist die maximale Anzahl von Zellen, die der NTM für jeden Zweig seiner Berechnung verwendet.

DTMs können als Sonderfall von NTMs angesehen werden, die die Kraft des Nichtdeterminismus nicht nutzen. Daher kann jede Berechnung, die von einem DTM durchgeführt werden kann, auch von einem äquivalenten NTM durchgeführt werden. Es ist auch möglich, NTM mit einem DTM zu simulieren. Daher sind die beiden in Bezug auf die Berechnung äquivalent. Das Simulieren eines NTM mit einem DTM erfordert jedoch häufig mehr Zeit- und/oder Speicherressourcen. Wie zu sehen sein wird, ist die Bedeutung dieser Verlangsamung für bestimmte Klassen von Rechenproblemen eine wichtige Frage in der Theorie der Computerkomplexität.

Ressourcengrenzen

Komplexitätsklassen Gruppenprobleme nach ihren Ressourcenanforderungen. Um dies zu tun, unterscheiden sich Rechenprobleme durch Obergrenzen Bei der maximalen Menge an Ressourcen dauert der effizienteste Algorithmus, um sie zu lösen. Insbesondere die Komplexitätsklassen befassen sich mit dem Wachstumsrate In den Ressourcen, die zur Lösung bestimmter Rechenprobleme mit zunehmender Eingabegröße erforderlich sind. Zum Beispiel, wie viel Zeit benötigt wird, um Probleme in der Komplexitätsklasse zu lösen P wächst bei a Polynom Rate mit zunehmender Eingangsgröße, was vergleichsweise langsam im Vergleich zu Problemen in der exponentiellen Komplexitätsklasse ist Nachfolger (oder genauer gesagt für Probleme in Nachfolger das sind außerhalb von P, seit ).

Beachten Sie, dass das Studium der Komplexitätsklassen in erster Linie gedacht ist, um das zu verstehen inhärent Komplexität erforderlich, um Rechenprobleme zu lösen. Komplexitätstheoretiker befassen sich daher im Allgemeinen mit der Suche nach der kleinsten Komplexitätsklasse, in die ein Problem fällt höchsteffizient Algorithmus. Zum Beispiel kann es einen Algorithmus geben, der ein bestimmtes Problem in der Exponentialzeit löst. Wenn jedoch der effizienteste Algorithmus zur Lösung dieses Problems in der Polynomzeit ausgeführt wird, wird die inhärente Zeitkomplexität dieses Problems besser als Polynom bezeichnet.

Zeitgrenzen

Das Zeitkomplexität Von einem Algorithmus in Bezug auf das Turing -Maschinenmodell ist die Anzahl der Schritte, die ein Turing -Maschine unternimmt, um einen Algorithmus auf einer bestimmten Eingangsgröße auszuführen. Formal die zeitliche Komplexität für einen Algorithmus, der mit einer Turing -Maschine implementiert ist ist definiert als die Funktion , wo ist die maximale Anzahl von Schritten, die nimmt jede Längeeingabe an .

In der Theorie der Computerkomplexität sind theoretische Informatiker weniger mit bestimmten Laufzeitwerten und mehr mit der allgemeinen Klasse von Funktionen beteiligt, in die die Zeitkomplexitätsfunktion fällt. Zum Beispiel ist die Zeitkomplexitätsfunktion a Polynom? EIN logarithmische Funktion? Ein Exponentialfunktion? Oder eine andere Art von Funktion?

Raumgrenzen

Das Raumkomplexität Von einem Algorithmus in Bezug auf das Turing -Maschinenmodell ist die Anzahl der Zellen auf dem Band des Turing -Maschinenbands erforderlich, um einen Algorithmus auf einer bestimmten Eingangsgröße auszuführen. Formal die Raumkomplexität eines Algorithmus mit einer Turing -Maschine implementiert ist definiert als die Funktion , wo ist die maximale Anzahl von Zellen, die Verwendet für jede Längeeingabe .

Grundlegende Komplexitätsklassen

Grundlegende Definitionen

Komplexitätsklassen werden häufig unter Verwendung von detaillierten Komplexitätsklassen definiert, die genannt werden Time und Ntzeit (für die Zeitkomplexität) und DSpace und Nspace (für die Raumkomplexität). Verwendung Big O NotationSie sind wie folgt definiert:

  • Die Zeitkomplexitätsklasse ist die Menge aller Probleme, die von einem entschieden werden Zeit deterministische Turing -Maschine.
  • Die Zeitkomplexitätsklasse ist die Menge aller Probleme, die von einem entschieden werden Zeit nichtdeterministische Turing -Maschine.
  • Die Raumkomplexitätsklasse ist die Menge aller Probleme, die von einem entschieden werden Raumdeterministische Turing -Maschine.
  • Die Raumkomplexitätsklasse ist die Menge aller Probleme, die von einem entschieden werden Space Nichtdeterministische Turing -Maschine.

Zeitkomplexitätsklassen

P und NP

P ist die Klasse von Problemen, die durch a lösbar sind deterministische Turing -Maschine in Polynomzeit und Np ist die Klasse von Problemen, die durch a lösbar sind Nichtdeterministische Turing -Maschine in Polynomzeit. Oder formaler,

P wird oft als die Klasse von Problemen bezeichnet, die "schnell" oder "effizient" von einem deterministischen Computer gelöst werden können, da die Zeitkomplexität ein Problem in der Lösung eines Problems in P Erhöht sich mit der Eingangsgröße relativ langsam.

Ein wichtiges Merkmal der Klasse Np ist, dass es äquivalent definiert werden kann als die Klasse von Problemen, deren Lösungen sind überprüfbar durch eine deterministische Turing -Maschine in Polynomzeit. Das heißt, eine Sprache ist in Np Wenn es vorhanden ist a deterministisch Polynomiale Zeitturing -Maschine, die als Verifizierer bezeichnet wird und die als Eingabe eine Zeichenfolge nimmt und eine Polynomgröße Zertifikat Saite und akzeptiert wenn ist in der Sprache und lehnt ab wenn ist nicht in der Sprache. Intuitiv wirkt das Zertifikat als nachweisen dass die Eingabe ist in der Sprache. Formal:[4]

Np ist die Klasse von Sprachen wofür es eine polynomiale deterministische Turing-Maschine gibt und ein Polynom so dass für alle , ist in dann und nur dann, wenn Es gibt einige so dass Akzeptiert.

Diese Äquivalenz zwischen der nichtdeterministischen Definition und der Definition der Verifizierer zeigt einen grundlegenden Zusammenhang zwischen Nichtdeterminismus und Lösung Überprüfbarkeit. Darüber hinaus bietet es eine nützliche Methode, um zu beweisen, dass sich eine Sprache befindet Np- Identifizieren Sie ein geeignetes Zertifikat und zeigen Sie, dass es in Polynomzeit überprüft werden kann.

Das P -Vers -NP -Problem

Zwar scheint es einen offensichtlichen Unterschied zwischen der Klasse von Problemen zu geben, die effizient lösbar sind, und der Klasse von Problemen, deren Lösungen lediglich effizient überprüft werden können, P und Np stehen tatsächlich im Zentrum eines der berühmtesten ungelösten Probleme in der Informatik: die P gegen Np Problem. Während es bekannt ist PNp (Intuitiv sind deterministische Turing -Maschinen nur eine Unterklasse von nichtterministischen Turing -Maschinen, die ihren Nichtdeterminismus nicht verwenden, oder unter der Definition der Verifizierer. P ist die Klasse von Problemen, deren Polynomzeit -Überprüfer nur die leere Zeichenfolge als Zertifikat erhalten müssen), es ist nicht bekannt, ob Np ist streng größer als P. Wenn P=NpDann folgt, dass der Nichtdeterminismus liefert Keine zusätzliche Rechenleistung Über Determinismus in Bezug auf die Fähigkeit, schnell eine Lösung für ein Problem zu finden; das heißt, in der Lage zu erforschen alle möglichen Zweige der Berechnung liefert maximal Eine Polynom beschleunigt, nur einen einzigen Zweig zu erkunden. Darüber hinaus würde folgen, dass, wenn es einen Beweis für eine Probleminstanz gibt und dieser Beweis schnell auf Korrektheit überprüft werden kann (dh wenn das Problem in liegt Np), dann gibt es auch einen Algorithmus, der schnell kann konstruieren Dieser Beweis (das heißt, das Problem liegt in P).[5] Die überwältigende Mehrheit der Informatiker glauben jedoch, dass dies der Ansicht ist PNp,[6] Und die meisten Kryptografische Programme beschäftigt heute verlassen sich auf die Annahme, dass PNp.[7]

Expime und Nexptime

Nachfolger ist die Klasse von Entscheidungsproblemen, die durch eine deterministische Turing -Maschine in exponentieller Zeit löslich sind und Nexptime ist die Klasse der Entscheidungsprobleme, die in exponentieller Zeit durch eine nichtdeterministische Turing -Maschine lösbar sind. Oder formaler,

Nachfolger ist ein strenger Superet von P und Nexptime ist ein strenger Superet von Np. Es ist weiter der Fall, dass NachfolgerNexptime. Es ist nicht bekannt, ob dies richtig ist, aber wenn P=Np dann Nachfolger muss gleich Nexptime.

Raumkomplexitätsklassen

L und NL

Während es möglich ist zu definieren logarithmisch Zeitkomplexitätsklassen, dies sind extrem enge Klassen, da die Sublinear -Zeiten nicht einmal eine Turing -Maschine ermöglichen, den gesamten Eingang zu lesen (weil ).[8] Es gibt jedoch eine sinnvolle Anzahl von Problemen, die im logarithmischen Raum gelöst werden können. Die Definitionen dieser Klassen erfordern a Zwei-Turing-Maschine so dass es möglich ist, dass die Maschine den gesamten Eingang speichert (es kann gezeigt werden, dass in Bezug auf die Berechnbarkeit Die zweifarbige Turing-Maschine entspricht der Turing-Maschine mit einer Tape).[9] Im Modell mit Zwei-Turing-Maschine ist ein Band das Eingangsband, das nur schreibgeschützt ist. Das andere ist das Arbeitsband, das sowohl Lesen als auch Schreiben ermöglicht und das Band ist, auf dem die Turing -Maschine Berechnungen durchführt. Die Raumkomplexität der Turing -Maschine wird als Anzahl der Zellen gemessen, die auf dem Arbeitsband verwendet werden.

L wird dann als die Klasse von Problemen definiert, die im logarithmischen Raum auf einer deterministischen Turing -Maschine löslich sind und Nl ist die Klasse von Problemen, die im logarithmischen Raum auf einer nichtdeterministischen Turing -Maschine lösbar sind. Oder formaler,[9]

Es ist bekannt, dass . Es ist jedoch nicht bekannt, ob eine dieser Beziehungen angemessen ist.

PSPACE und NPSPACE

Die Komplexitätsklassen PSPACE und Npspace sind die Raumanaloga zu P und Np. Das ist, PSPACE ist die Klasse von Problemen im Polynomraum durch eine deterministische Turing -Maschine und im Polynomraum löslich Npspace ist die Klasse von Problemen, die im Polynomraum durch eine nichtdeterministische Turing -Maschine löslich sind. Formeller,

Obwohl nicht bekannt ist, ob P=Np, Savitchs Theorem berühmt gezeigt das PSPACE=Npspace. Es ist auch bekannt, dass das PPSPACE, was intuitiv aus der Tatsache folgt, dass ein Turing -Maschine, der in Polynomzeit eine Zeiteinheit nimmt, nur an polynomiale Zellen schreiben kann, da das Schreiben in eine Zelle auf einem Turing -Maschine als eine Zeiteinheit definiert ist. Es wird vermutet, dass P ist streng kleiner als PSPACE, aber das wurde nicht bewiesen.

Expace und Nexpspace

Die Komplexitätsklassen Expace und Nexpspace sind die Raumanaloga zu Nachfolger und Nexptime. Das ist, Expace ist die Klasse von Problemen, die im exponentiellen Raum durch eine deterministische Turing -Maschine löslich sind und Nexpspace ist die Klasse von Problemen, die im exponentiellen Raum durch eine nichtdeterministische Turing -Maschine lösbar sind. Oder formaler,

Savitchs Theorem zeigte, dass Expace=Nexpspace. Diese Klasse ist extrem breit: Es ist bekannt, dass sie ein strenger Superet von ist PSPACE, Np, und Pund soll ein strenger Superet von sind Nachfolger.

Eigenschaften von Komplexitätsklassen

Schließung

Komplexitätsklassen haben eine Vielzahl von Schließung Eigenschaften. Zum Beispiel können Entscheidungskurse unter geschlossen sein Negation, disjunktion, Verbindungoder sogar unter allen Boolesche Operationen. Darüber hinaus könnten sie auch unter einer Vielzahl von Quantifizierungsschemata geschlossen werden. PZum Beispiel wird unter allen booleschen Operationen und unter Quantifizierung über polynomisch große Domänen geschlossen. Verschlusseigenschaften können bei der Trennung von Klassen hilfreich sein - eine mögliche Route zur Trennung von zwei Komplexitätsklassen besteht darin, einige Schließeigenschaften zu finden, die von einer Klasse besessen sind, jedoch nicht von der anderen.

Jede Klasse X Das ist nicht geschlossen, wenn Negation eine Komplementklasse hat Co-X, was aus den Ergänzungen der Sprachen besteht, die in enthalten sind X (d.h. Co-X= X ). Co-NPZum Beispiel ist eine wichtige Komplementkomplexitätsklasse und sitzt im Zentrum des ungelösten Problems darüber, ob Co-NP=Np.

Verschlusseigenschaften sind einer der wichtigsten Gründe, warum viele Komplexitätsklassen so definiert sind, wie sie es sind.[10] Nehmen Sie zum Beispiel ein Problem, das gelöst werden kann Zeit (dh in linearer Zeit) und eine, die bestenfalls gelöst werden kann, Zeit. Beide Probleme sind in PDoch die Laufzeit der zweiten wird erheblich schneller als die Laufzeit der ersten, wenn die Eingangsgröße zunimmt. Man könnte sich fragen, ob es besser wäre, die Klasse von "effizient lösbaren" Problemen zu definieren, die eine kleinere Polynomgebundene verwenden, wie eher als alle Polynome, die so große Diskrepanzen ermöglichen. Es stellt sich jedoch heraus, dass der Satz aller Polynome die kleinste Klasse von Funktionen ist, die die linearen Funktionen enthalten, die auch unter Hinzufügung, Multiplikation und Zusammensetzung geschlossen werden (z. B., , was aber ein Polynom ist, aber ).[10] Da wir gerne einen effizienten Algorithmus mit einem anderen effizienten Algorithmus komponieren möchten, der noch als effizient angesehen wird, sind die Polynome die kleinste Klasse, die die Zusammensetzung von "effizienten Algorithmen" gewährleistet.[11] (Beachten Sie, dass die Definition von P ist auch nützlich, weil empirisch fast alle Probleme in P Das sind praktisch nützlich, die tatsächlich polynomarme Laufzeiten mit geringer Ordnung und fast alle Probleme außerhalb von haben P Das sind praktisch nützlich, haben keine bekannten Algorithmen mit kleinen exponentiellen Laufzeiten, d. H. Mit Laufzeiten wo ist nahe bei 1.[12]))

Reduzierungen

Viele Komplexitätsklassen werden unter Verwendung des Konzepts von a definiert die Ermäßigung. Eine Reduzierung ist eine Umwandlung eines Problems in ein anderes Problem. Es erfasst die informelle Vorstellung eines Problems, das mindestens so schwierig ist wie ein weiteres Problem. Zum Beispiel, wenn ein Problem kann mit einem Algorithmus für gelöst werden , ist nicht schwieriger als und wir sagen das reduziert zu . Es gibt viele verschiedene Arten von Reduktionen, die auf der Reduktionsmethode basieren, wie z. Kochreduzierungen, KARP -Reduktionen und Levin -Reduktionenund die gebundene Komplexität von Reduktionen, wie z. Polynomzeitreduzierungen oder Log-Raum-Reduzierungen.

Die am häufigsten verwendete Reduktion ist die Polynomzeitreduktion, was einfach bedeutet, dass der Reduktionsprozess höchstens Polynomzeit dauert. Zum Beispiel kann das Problem des Quadrierens einer Ganzzahl auf das Problem der Multiplizierung von zwei Ganzzahlen reduziert werden. Dies bedeutet, dass ein Algorithmus zum Multiplizieren von zwei Ganzzahlen verwendet werden kann, um eine Ganzzahl zu quadrieren. Daher sehen wir, dass Quadrat nicht schwieriger als die Multiplikation ist, da das Quadrieren auf die Multiplikation reduziert werden kann.

Härte

Reduktionen motivieren das Konzept eines Problems schwer für eine Komplexitätsklasse. Ein Problem fällt für eine Klasse von Problemen schwer C Wenn jedes Problem in C kann auf reduziert werden auf . Somit kein Problem in C ist schwieriger als Seit einem Algorithmus für ermöglicht es uns, jedes Problem in C. Natürlich hängt der Begriff der harten Probleme von der Art der Verwendung der Verringerung ab. Für Komplexitätsklassen größer als PEs werden üblicherweise Polynomzeitverringerungen verwendet. Insbesondere die Probleme, die schwer für Probleme sind Np ist der Satz von Np-harte Probleme.

Vollständigkeit

Wenn ein Problem ist in C und ist schwer für C, dann wird gesagt, dass Komplett zum C. Das bedeutet, dass ist das schwierigste Problem in C (Da es viele Probleme geben könnte, die ebenso schwierig sind, könnte man das sagen ist so schwer wie die schwierigsten Probleme in C). So die Klasse von Np-Komplett Probleme enthalten die schwierigsten Probleme in Npin dem Sinne, dass sie diejenigen sind, die höchstwahrscheinlich nicht in P sind, weil das Problem P=Np ist nicht gelöst, in der Lage zu sein, einen bekannten zu reduzieren Np-Complete Problem, π2, zu einem anderen Problem, π1würde darauf hinweisen, dass es keine Polynom-Zeit-Lösung für π gibt1. Dies liegt daran, dass eine Polynom-Zeit-Lösung für π1 würde eine Polynom-Zeit-Lösung für π liefern2. Ähnlich, weil alle Np Probleme können auf das Set reduziert werden, um eine zu finden Np-Complete Problem, das in der Polynomzeit gelöst werden kann, würde das bedeuten P=Np.

Beziehungen zwischen Komplexitätsklassen

Savitchs Theorem

Savitchs Theorem legt das fest PSPACE = Npspace und Expace = Nexpspace. Eine zentrale Frage der Komplexitätstheorie ist, ob der Nichtdeterminismus einem Computermodell erhebliche Kraft verleiht. Dies ist von zentraler Bedeutung für die Open P gegen Np Problem, das sich mit zwei der wichtigsten Zeitkomplexitätsklassen befasst. Savitchs Theorem zeigt, dass der Nichtdeterminismus für den Raum nicht wesentlich mehr Leistung ergibt, wobei "signifikant" den Unterschied zwischen Polynom- und Superpolynomressourcenanforderungen bedeutet (oder, für Expaceder Unterschied zwischen exponentiell und superexponential). Beispielsweise beweist der Theorem von Savitch, dass kein Problem, das einen exponentiellen Raum für eine deterministische Turing -Maschine erfordert, durch eine nichtdeterministische Polynomflächen -Turing -Maschine gelöst werden kann.

Hierarchie -Theoreme

Per Definition von Time, es folgt dem ist in wenn , seit wenn . Diese Definition gibt jedoch keinen Hinweis darauf, ob diese Aufnahme streng ist. Für Zeit- und Raumanforderungen werden die Bedingungen, unter denen die Aufnahme streng ist, durch die Zeit- und Raumhierarchie -Theoreme angegeben. Sie werden als Hierarchie -Theoreme bezeichnet, weil sie eine ordnungsgemäße Hierarchie in den Klassen induzieren, die durch Einschränkung der jeweiligen Ressourcen definiert sind. Die Hierarchie -Theoreme ermöglichen es, quantitative Aussagen darüber zu machen, wie viel zusätzlicher Zeit oder Platz mehr benötigt werden, um die Anzahl der Probleme zu erhöhen, die gelöst werden können.

Das Zeithierarchie Theorem besagt, dass

.

Das Raumhierarchie Theorem besagt, dass

.

Die Zeit- und Raumhierarchie -Theoreme bilden die Grundlage für die meisten Trennungsergebnisse von Komplexitätsklassen. Zum Beispiel legt der Zeithierarchie -Theorem das fest P ist streng enthalten in Nachfolgerund der Raumhierarchie -Theorem legt das fest L ist streng enthalten in PSPACE.

Andere Berechnungsmodelle

Während deterministisch und nicht deterministisch Turing -Maschinen sind die am häufigsten verwendeten Berechnungsmodelle, viele Komplexitätsklassen werden in Bezug auf andere Computermodelle definiert. Im Speziellen,

Diese werden unten ausführlicher erklärt.

Randomisierte Berechnung

Eine Reihe wichtiger Komplexitätsklassen werden mit dem definiert Probabilistische Turing -Maschineeine Variante der Turing Maschine Das kann zufällige Münzen werfen. Diese Klassen tragen dazu bei, die Komplexität von besser zu beschreiben Randomisierte Algorithmen.

Eine probabilistische Turing -Maschine ähnelt einer deterministischen Turing -Maschine, außer einer einzelnen Übergangsfunktion (eine Reihe von Regeln für die Fortsetzung des Fortschritts bei jedem Schritt der Berechnung). Sie wählt wahrscheinlich zwischen mehreren Übergangsfunktionen bei jedem Schritt aus. Die Standarddefinition einer probabilistischen Turing -Maschine gibt zwei Übergangsfunktionen an, so dass die Auswahl der Übergangsfunktion bei jedem Schritt einem Münzflip ähnelt. Die in jedem Schritt der Berechnung eingeführte Zufälligkeit führt das Fehlerpotential ein. Das heißt, die Saiten, die die Turing -Maschine akzeptieren soll, dürfen bei einigen Gelegenheiten abgelehnt werden, und Zeichenfolgen, die die Turing -Maschine ablehnen soll, kann bei einigen Gelegenheiten akzeptiert werden. Infolgedessen werden die auf der probabilistischen Turing -Maschine basierenden Komplexitätsklassen größtenteils um die zulässige Fehlermenge definiert. Formal werden sie unter Verwendung einer Fehlerwahrscheinlichkeit definiert . Eine probabilistische Turing -Maschine soll eine Sprache erkennen mit Fehlerwahrscheinlichkeit wenn:

  1. ein Faden in impliziert, dass
  2. ein Faden nicht in impliziert, dass

Wichtige Komplexitätsklassen

Die Beziehungen zwischen den grundlegenden probabilistischen Komplexitätsklassen. BQP ist probabilistisch Quantenkomplexität Klasse und wird im Quantum Computing -Abschnitt beschrieben.

Die grundlegenden randomisierten Zeitkomplexitätsklassen sind Zpp, RP, Co-RP, BPP, und Pp.

Die strengste Klasse ist Zpp (probabilistische Polynomzeit mit Zero-Fehler), die Klasse der Probleme, die in der Polynomzeit durch eine probabilistische Turing-Maschine mit Fehlerwahrscheinlichkeit 0 löslich sind. Intuitiv ist dies die strengste Klasse von probabilistischen Problemen, da es erfordert Kein Fehler.

Eine leicht lockere Klasse ist RP (Randomisierte Polynomzeit), was keinen Fehler für Zeichenfolgen beibehält, die nicht in der Sprache, sondern einen begrenzten Fehler für Zeichenfolgen in der Sprache ermöglichen. Formell ist eine Sprache in RP Wenn es eine probabilistische Polynom-Zeit-Turing-Maschine gibt so dass, wenn eine Zeichenfolge dann nicht in der Sprache ist, dann lehnt immer ab und wenn sich eine Zeichenfolge in der Sprache befindet Akzeptiert mit einer Wahrscheinlichkeit mindestens 1/2. Die Klasse Co-RP ist ähnlich definiert, außer dass die Rollen umgedreht werden: Fehler ist für Zeichenfolgen in der Sprache nicht zulässig, aber für Zeichenfolgen, die nicht in der Sprache sind. Zusammengenommen, die Klassen RP und Co-RP umfassen alle Probleme, die durch probabilistische Turing -Maschinen mit gelöst werden können einseitiger Fehler.

Lockerung der Fehleranforderungen weiter zuzulassen, um es zuzulassen Zweiseitiger Fehler ergibt die Klasse BPP (Probabilistische Polynomzeit begrenztem Error), die Klasse der Probleme, die in der Polynomzeit durch eine probabilistische Turing-Maschine mit Fehlerwahrscheinlichkeit von weniger als 1/3 lösbar sind (für beide Zeichenfolgen in der Sprache und nicht in der Sprache). BPP ist die praktisch relevante der probabilistischen Komplexitätsklassen - Programme in BPP effizient haben Randomisierte Algorithmen Das kann schnell auf echten Computern ausgeführt werden. BPP steht auch im Mittelpunkt des wichtigen ungelösten Problems in der Informatik darüber, ob P = BPP, was, wenn wahr würde, dass Zufälligkeit die Rechenleistung von Computern nicht erhöht, d. H. Eine probabilistische Turing -Maschine könnte durch eine deterministische Turing -Maschine mit höchstens polynomialen Verlangsamung simuliert werden.

Die breiteste Klasse effizient löslicher probabilistischer Probleme ist Pp (probabilistische Polynomzeit), die von einer probabilistische Turing -Maschine in Polynomzeit lösbare Sprachen mit einer Fehlerwahrscheinlichkeit von weniger als 1/2 für alle Zeichenfolgen.

Zpp, RP und Co-RP sind alle Teilmengen von BPP, was wiederum eine Teilmenge von ist Pp. Der Grund dafür ist intuitiv: Die Klassen, die keinen Fehler und nur einseitigen Fehler ermöglichen, sind alle in der Klasse enthalten, die einen zweiseitigen Fehler ermöglichen, und Pp Lockert einfach die Fehlerwahrscheinlichkeit von BPP. Zpp bezieht sich auf RP und Co-RP auf die folgende Weise: . Das ist, Zpp besteht genau aus diesen Problemen, die in beiden sind RP und Co-RP. Intuitiv folgt dies aus der Tatsache, dass RP und Co-RP Nur einseitiger Fehler zulassen: Co-RP erlaubt keinen Fehler für Zeichenfolgen in der Sprache und RP Erlaubt kein Fehler für Zeichenfolgen, die nicht in der Sprache sind. Daher, wenn ein Problem in beiden ist RP und Co-RPund dann darf beides in beiden in keinem Fehler vorliegen und Nicht in der Sprache (d. H. Keiner Fehler überhaupt nicht), was genau die Definition von ist Zpp.

Wichtige randomisierte Raumkomplexitätsklassen umfassen Bpl, Rl, und RLP.

Interaktive Proof -Systeme

Eine Reihe von Komplexitätsklassen werden mit Verwendung definiert Interaktive Proof -Systeme. Interaktive Beweise verallgemeinern die Proof -Definition der Komplexitätsklasse Np und geben Einblicke in Kryptographie, Näherungsalgorithmen, und formelle Überprüfung.

Allgemeine Darstellung eines interaktiven Proofprotokolls

Interaktive Proof -Systeme sind Abstrakte Maschinen Diese Modellberechnung als Austausch von Nachrichten zwischen zwei Parteien: ein Prover und ein Verifizierer . Die Parteien interagieren durch den Austausch von Nachrichten, und eine Eingabezeichenfolge wird vom System akzeptiert, wenn der Überprüfer beschließt, die Eingabe auf der Grundlage der vom Prover empfangenen Nachrichten zu akzeptieren. Der Prover hat unbegrenzte Rechenleistung, während der Verifier die Rechenleistung begrenzt hat (die Standarddefinition von interaktiven Proofsystemen definiert den Verifizierer als polynomial zeitgrenkt). Der Prover ist jedoch nicht vertrauenswürdig (dies verhindert, dass alle Sprachen durch das Proof -System trivial erkannt werden, indem der rechnerisch unbegrenzte Prover dafür gelöst wird ), so dass der Verifizierer eine "Befragung" des Provers durchführen muss, indem er aufeinanderfolgende Fragen "fragt" und nur dann akzeptiert, wenn er ein hohes Maß an Vertrauen entwickelt, dass sich die Saite in der Sprache befindet.[13]

Wichtige Komplexitätsklassen

Die Klasse Np ist ein einfaches Proof-System, bei dem der Überprüfer auf eine deterministische Polynomzeit beschränkt ist Turing Maschine und das Verfahren ist auf eine Runde beschränkt (dh der Prover sendet nur einen einzelnen, vollständigen Beweis - Typisch bezeichnet als die Zertifikat- zum Verifizierer). Anders in der Definition der Klasse ausdrücken Np (Die Reihe von Entscheidungsproblemen, für die die Probleminstanzen, wenn die Antwort "Ja" ist, in der Polynomzeit durch eine deterministische Turing -Maschine nachweisbar ist. Maschine ist der Überprüfer. Deshalb, Np kann auch genannt werden tauchen (deterministischer interaktiver Beweis), obwohl es selten als solche bezeichnet wird.

Es stellt sich heraus, dass Np Erfasst die volle Leistung interaktiver Proofsysteme mit deterministischen (Polynomzeit-) Verifikatoren, da gezeigt werden kann, dass es für jedes Proof-System mit einem deterministischen Überprüfer nie mehr als eine einzelne Messaging-Runde zwischen dem Prover und dem Überprüfung benötigt wird. Interaktive Proofsysteme, die eine größere Rechenleistung gegenüber Standardkomplexitätsklassen bieten, die somit erfordern probabilistisch Verifizierer, was bedeutet, dass die Fragen des Verifizierers an den Prover mit Verwendung berechnet werden Probabilistische Algorithmen. Wie im obigen Abschnitt oben erwähnt Randomisierte Berechnung, probabilistische Algorithmen führen ein Fehler in das System ein, sodass Komplexitätsklassen, die auf probabilistischen Beweissystemen basieren .

Die allgemeinste Komplexitätsklasse, die sich aus dieser Charakterisierung ergibt, ist die Klasse IP (Interaktive Polynomzeit), die die Klasse aller Probleme ist, die durch ein interaktives Proof -System lösbar sind , wo ist probabilistische Polynomzeit und das Proof-System erfüllt zwei Eigenschaften: für eine Sprache

  1. (Vollständigkeit) eine Zeichenfolge in impliziert
  2. (Soundness) eine Zeichenfolge nicht in impliziert

Ein wichtiges Merkmal von IP ist, dass es gleich ist PSPACE. Mit anderen Worten, jedes Problem, das durch ein interaktives System der Polynomzeit gelöst werden kann, kann auch durch a gelöst werden deterministische Turing -Maschine mit polynomialen Raumressourcen und umgekehrt.

Eine Modifikation des Protokolls für IP erzeugt eine weitere wichtige Komplexitätsklasse: BIN (Arthur -Merlin -Protokoll). In der Definition interaktiver Proof -Systeme von verwendet von IPDer Prover war nicht in der Lage, die Münzen zu sehen, die der Verifizierer in seiner probabilistischen Berechnung verwendete - es war nur in der Lage, die Nachrichten zu sehen, die der mit diesen Münzen erzeugte Verifier erzeugte. Aus diesem Grund werden die Münzen genannt Private zufällige Münzen. Das interaktive Proof -System kann so eingeschränkt werden, dass die vom Überprüfer verwendeten Münzen verwendet werden Öffentliche zufällige Münzen; Das heißt, der Prover kann die Münzen sehen. Formal, BIN ist definiert als die Klasse von Sprachen mit einem interaktiven Beweis, bei dem der Verifizierer eine zufällige Zeichenfolge an den Prover sendet, der Prover mit einer Nachricht antwortet und der Verifizierer entweder akzeptiert oder ablehnt, indem er eine deterministische Polynom-Zeit-Funktion auf die Nachricht von der Nachricht anwendet Prover. BIN kann verallgemeinert werden auf BIN[k], wo k ist die Anzahl der ausgetauschten Nachrichten (also in der verallgemeinerten Form der Standard BIN oben definiert ist BIN[2]). Es ist jedoch der Fall, dass für alle , BIN[k] =BIN[2]. Es ist auch der Fall, dass .

Andere Komplexitätsklassen, die mit interaktiven Proof -Systemen definiert sind, umfassen MIP (Multiprover interaktive Polynomzeit multiprover) und QIP (Quanteninteraktiver Polynomzeit).

Boolesche Schaltungen

Beispiel Boolean Circuit Computing Die Boolesche Funktion mit Beispieleingabe , , und . Das Knoten sind Und Tore, das Knoten sind Oder Tore, und die Knoten sind Keine Tore.

Ein alternatives Berechnungsmodell an der Turing Maschine ist der Boolesche Schaltung, ein vereinfachtes Modell der Digitale Schaltungen in der Moderne verwendet Computers. Dieses Modell liefert nicht nur eine intuitive Verbindung zwischen der Berechnung in der Theorie und der Berechnung in der Praxis, sondern es ist auch ein natürliches Modell für ungleichmäßige Berechnung (Berechnung, bei der unterschiedliche Eingabeberaten innerhalb desselben Problems unterschiedliche Algorithmen verwenden).

Formell eine Boolesche Schaltung ist ein Regie acyclische Graphen in denen Kanten Drähte darstellen (die das tragen bisschen Die Werte 0 und 1), die Eingangsbits werden durch Quellenscheitelpunkte (Scheitelpunkte ohne eingehende Kanten) dargestellt, und alle Nicht-Source-Scheitelpunkte repräsentieren Logik -Tore (im Allgemeinen die UND, ODER, und Keine Tore). Ein logisches Tor wird als Ausgangstor bezeichnet und repräsentiert das Ende der Berechnung. Das Eingangs-/Ausgangsverhalten einer Schaltung mit Eingabevariablen werden durch die dargestellt Boolesche Funktion ; Zum Beispiel bei Eingangsbits das Ausgangsbit der Schaltung wird mathematisch dargestellt als . Die Rennbahn wird gesagt zu berechnen die boolesche Funktion .

Jeder bestimmte Schaltkreis verfügt über eine feste Anzahl von Eingangskräften, sodass er nur auf Eingänge dieser Größe wirken kann. Sprachen (die formalen Darstellungen von Entscheidungsprobleme) enthalten jedoch Zeichenfolgen unterschiedlicher Längen, sodass Sprachen nicht vollständig von einem einzigen Schaltkreis erfasst werden können (dies steht im Gegensatz zu dem Turing -Maschinenmodell, bei dem eine Sprache vollständig von einer einzelnen Turing -Maschine beschrieben wird, die auf jede Eingangsgröße wirken kann). Eine Sprache wird somit durch a dargestellt Kreislauffamilie. Eine Schaltkreisfamilie ist eine unendliche Liste von Schaltungen , wo ist eine Schaltung mit Eingabevariablen. Eine Schaltkreisfamilie soll eine Sprache entscheiden Wenn, für jede Zeichenfolge , ist in der Sprache dann und nur dann, wenn , wo ist die Länge von . Mit anderen Worten, eine Zeichenfolge von Größe ist in der Sprache, die von der Kreisfamilie dargestellt wird Wenn die Schaltung (Die Schaltung mit der gleichen Anzahl von Eingangskräften wie die Anzahl der Zeichen in ) bewertet auf 1, wenn ist seine Eingabe.

Während Komplexitätsklassen, die unter Verwendung von Turing -Maschinen definiert sind Zeitkomplexität, Schaltungskomplexitätsklassen werden in Bezug auf die Schaltungsgröße definiert - die Anzahl der Scheitelpunkte in der Schaltung. Die Größenkomplexität einer Schaltkreisfamilie ist die Funktion , wo ist die Schaltungsgröße von . Die vertrauten Funktionsklassen folgen natürlich aus diesem; Zum Beispiel ist eine Polynomgröße eine Schaltungsfamilie so, dass die Funktion ist ein Polynom.

Wichtige Komplexitätsklassen

Die Komplexitätsklasse P/poly ist die Reihe von Sprachen, die durch polynomiale Kreisleiterfamilien entschlossen sind. Es stellt sich heraus, dass eine natürliche Verbindung zwischen Schaltkomplexität und Zeitkomplexität besteht. Eine Sprache mit kleiner Zeitkomplexität (dh relativ wenige sequentielle Operationen auf einer Turing -Maschine erfordert intuitiv), weist auch eine kleine Kreislaufkomplexität auf (dh relativ wenige boolesche Vorgänge). Formal kann gezeigt werden, dass, wenn eine Sprache in ist , wo ist eine Funktion dann hat es Schaltungskomplexität .[14] Es folgt direkt aus dieser Tatsache, dass . Mit anderen Worten, jedes Problem, das durch eine deterministische Turing-Maschine in der Polynomzeit gelöst werden kann, kann auch durch eine Polynomgröße gelöst werden. Es ist ferner der Fall, dass die Aufnahme richtig ist, d.h. (Zum Beispiel gibt es einige unentscheidbare Probleme das sind in P/poly).

P/poly hat eine Reihe von Eigenschaften, die es bei der Untersuchung der Beziehungen zwischen Komplexitätsklassen sehr nützlich machen. Insbesondere ist es hilfreich bei der Untersuchung von Problemen im Zusammenhang mit P gegen Np. Zum Beispiel, wenn es eine Sprache in gibt Np das ist nicht in P/poly, dann .[15] P/poly ist auch hilfreich bei der Untersuchung von Eigenschaften der Polynomhierarchie. Zum Beispiel wenn NpP/poly, dann PH zusammenbricht zu . Eine vollständige Beschreibung der Beziehungen zwischen P/poly und andere Komplexitätsklassen sind bei "erhältlich"Bedeutung von P/Poly". P/poly ist auch hilfreich bei der allgemeinen Studie der Eigenschaften von Turing -Maschinen, wie die Klasse äquivalent definiert werden kann als die Klasse von Sprachen, die von einer Polynom-Zeit-Turing-Maschine mit einem polynomartigen Rang erkannt werden Beratungsfunktion.

Zwei Unterklassen von P/poly Das haben selbst interessante Eigenschaften NC und AC. Diese Klassen werden nicht nur in Bezug auf ihre Schaltungsgröße definiert, sondern auch in Bezug auf ihre Tiefe. Die Tiefe einer Schaltung ist die Länge der längsten gerichteter Weg Von einem Eingangsknoten zum Ausgangsknoten. Die Klasse NC ist die Reihe von Sprachen, die durch Leiterfamilien gelöst werden können, die nicht nur auf Polynomgröße, sondern auch auf Polylogarithmie-Tiefe beschränkt sind. Die Klasse AC ist ähnlich definiert wie NCWie auch immer Tore unbegrenzter Fan-In haben (dh die und und oder Tore können auf mehr als zwei Bit angewendet werden). NC ist eine bemerkenswerte Klasse, weil sie gleichbedeutend mit der Klasse von Sprachen definiert werden kann, die effizient sind Parallelalgorithmen.

Quantenberechnung

Die Klassen BQP und QMA, die von entscheidender Bedeutung sind in Quanteninformationswissenschaft, werden definiert verwendet Quanten -Turing -Maschinen.

Andere Arten von Problemen

Während die meisten Komplexitätsklassen von Informatikern untersucht werden EntscheidungsproblemeEs gibt auch eine Reihe von Komplexitätsklassen, die in Bezug auf andere Arten von Problemen definiert sind. Insbesondere gibt es Komplexitätsklassen aus Probleme zählen, Funktionsprobleme, und Probleme versprechen. Diese werden unten ausführlicher erklärt.

Probleme zählen

A Zählproblem fragt nicht nur ob Es gibt eine Lösung (wie bei a Entscheidungsproblem), fragt aber wie viele Lösungen existieren.[16] Zum Beispiel das Entscheidungsproblem fragt ob ein bestimmtes Diagramm hat ein Einfacher Zyklus (Die Antwort ist ein einfaches Ja/Nein); Das entsprechende Zählproblem (ausgesprochen "scharfer Zyklus") fragt wie viele einfache Zyklen hat.[17] Die Ausgabe eines Zählerproblems ist somit eine Zahl im Gegensatz zur Ausgabe für ein Entscheidungsproblem, das ein einfaches Ja/Nein ist (oder Akzeptieren/Ablehnen, 0/1 oder ein anderes äquivalentes Schema).[18]

Während Entscheidungsprobleme mathematisch als als formelle Sprachen, Zählprobleme werden mathematisch als Funktionen: Ein Zählproblem wird als Funktion formalisiert so dass für jeden Eingang , ist die Anzahl der Lösungen. Zum Beispiel in der Problem, die Eingabe ist eine Grafik (eine Grafik als Zeichenfolge von Bits) und ist die Anzahl der einfachen Zyklen in .

Zählprobleme ergeben sich in einer Reihe von Feldern, einschließlich Statistische Schätzung, Statistische Physik, Netzwerk-Design, und Wirtschaft.[19]

Wichtige Komplexitätsklassen

#P (ausgesprochen "scharfe p") ist eine wichtige Klasse von Zählproblemen, die als Zählversion von betrachtet werden können Np.[20] Die Verbindung zu Np ergibt sich aus der Tatsache, dass die Anzahl der Lösungen für ein Problem der Anzahl der Akzeptieren von Zweigen in a entspricht Nichtdeterministische Turing -MaschineBerechnungsbaum. #P wird also formell wie folgt definiert:

#P ist der Satz aller Funktionen so dass es eine polynomiale Zeit nicht deterministische Turing -Maschine gibt so dass für alle , entspricht der Anzahl der Akzeptieren von Zweigen in Berechnungsbaum auf .[20]

Und genau wie Np kann sowohl als Nichtdeterminismus als auch in Bezug auf einen Überprüfung definiert werden (d. H. Als Interaktives Proof -System), auch kann #P äquivalent definiert in Bezug auf einen Überprüfer definiert. Denken Sie daran, dass ein Entscheidungsproblem in liegt Np Wenn es eine Polynom-Zeit-Überprüfung gibt Zertifikat zu einer bestimmten Probleminstanz - das heißt, Np fragt, ob ein Beweis für die Mitgliedschaft (ein Zertifikat) für die Eingabe vorliegt, die auf die Korrektheit der Polynomzeit überprüft werden kann. Die Klasse #P fragt wie viele Solche Zertifikate existieren.[20] In diesem Zusammenhang, #P wird wie folgt definiert:

#P ist der Satz von Funktionen so dass es ein Polynom gibt und eine Polynom-Zeit-Turing-Maschine (der Verifizierer), so dass für jeden , .[21] Mit anderen Worten, entspricht der Größe des Satzes, der alle Zertifikate der Polynomgröße enthält .

Funktionsprobleme

Zählprobleme sind eine Teilmenge einer breiteren Klasse von Problemen, die genannt werden Funktionsprobleme. Ein Funktionsproblem ist eine Art von Problem, bei dem die Werte von a Funktion werden berechnet. Formal ein Funktionsproblem ist definiert als eine Beziehung über Strings eines willkürlichen Alphabet :

Ein Algorithmus löst Wenn für jeden Eingang so dass es a existiert a befriedigend Der Algorithmus produziert einen solchen . Dies ist nur eine andere Art, das zu sagen ist ein Funktion und der Algorithmus löst für alle .

Wichtige Komplexitätsklassen

Eine wichtige Funktionskomplexitätsklasse ist FP, die Klasse effizient lösbarer Funktionen.[21] Genauer, FP ist der Satz von Funktionsproblemen, die durch a gelöst werden können deterministische Turing -Maschine in Polynomzeit.[21] FP kann als das Funktionsproblem angesehen werden P. Wichtig, dass FP Bietet einen Einblick in beide Zählprobleme und P gegen Np. Wenn #P=FP, dann die Funktionen, die die Anzahl der Zertifikate für Probleme in festlegen Np sind effizient lösbar. Und da die Anzahl der Zertifikate mindestens so schwierig ist wie die Bestimmung, ob ein Zertifikat vorliegt, muss dies folgen, wenn #P=FP dann P=Np (Es ist nicht bekannt P=Np impliziert #P=FP).[21]

Genauso wie FP ist das Funktionsproblem entspricht von P, Fnp ist das Funktionsproblem entspricht von Np. Wichtig, dass FP=Fnp dann und nur dann, wenn P=Np.[22]

Probleme versprechen

Probleme versprechen sind eine Verallgemeinerung von Entscheidungsproblemen, bei denen die Eingabe in ein Problem garantiert ist ("versprochen"), um aus einer bestimmten Teilmenge aller möglichen Eingaben zu stammen. Erinnern Sie sich an das mit einem Entscheidungsproblem ein Algorithmus zum muss (richtig) aufgehen jeder . Ein Versprechenproblem lockert die Eingabeanforderung an Durch Einschränkung der Eingabe auf eine Teilmenge von .

Insbesondere wird ein Versprechenproblem als Paar nicht intersektierende Sätze definiert , wo:[23]

  • ist der Satz aller Eingänge, die akzeptiert werden.
  • ist der Satz aller Eingänge, die abgelehnt werden.

Die Eingabe in einen Algorithmus Für ein Versprechenproblem Somit , was genannt wird versprechen. Saiten in werden gesagt das Versprechen befriedigen.[23] Per Definition, und muss disjunkt sein, d.h. .

Innerhalb dieser Formulierung ist zu erkennen, dass Entscheidungsprobleme nur die Teilmenge von Versprechensproblemen mit dem trivialen Versprechen sind . Bei Entscheidungsproblemen ist es daher einfacher, das Problem einfach so zu definieren (mit implizit sein ), die auf dieser Seite bezeichnet wird das betonen ist ein formelle Sprache.

Versprechen Probleme für eine natürlichere Formulierung vieler Rechenprobleme. Zum Beispiel könnte ein Rechenproblem so etwas wie "gegeben a sein Planare Graph, stellen Sie fest, ob ... "[24] Dies wird oft als Entscheidungsproblem angegeben, wobei es angenommen wird, dass es ein Übersetzungsschema gibt jeder Saite zu einer Planargrafik. Es ist jedoch einfacher, dies als ein Versprechenproblem zu definieren, bei dem die Eingabe als planarer Graphen versprochen wird.

Beziehung zu Komplexitätsklassen

Versprechen Probleme bieten eine alternative Definition für Standardkomplexitätsklassen von Entscheidungsproblemen. Pkann zum Beispiel als ein Versprechensproblem definiert werden:[25]

P ist die Klasse von Versprechensproblemen, die in der deterministischen Polynomzeit lösbar sind. Das heißt, das Versprechenproblem ist in P Wenn es einen Polynom-Zeit-Algorithmus gibt so dass:
  • Für jeden
  • Bis in alle Ewigkeit

Klassen von Entscheidungsproblemen - dh Klassen von Problemen, die als formale Sprachen definiert sind - übersetzen natürlich zu Problemen, bei denen eine Sprache in der Klasse ist einfach und ist implizit .

Formulierung vieler grundlegender Komplexitätsklassen wie P Als Versprechensprobleme gibt es wenig zusätzliche Einblicke in ihre Natur. Es gibt jedoch einige Komplexitätsklassen, für die sie als Versprechenprobleme für Informatiker nützlich waren. Versprechensprobleme haben zum Beispiel eine Schlüsselrolle in der Studie von gespielt SZK (Statistisches Zero-Wissen).[26]

Zusammenfassung der Beziehungen zwischen Komplexitätsklassen

Die folgende Tabelle zeigt einige der Probleme von Problemen, die in der Komplexitätstheorie berücksichtigt werden. Wenn Klasse X ist streng Teilmenge von Y, dann X wird unten angezeigt Y mit einer dunklen Linie, die sie verbindet. Wenn X ist eine Untergruppe, aber es ist nicht bekannt, ob sie gleiche Sätze sind, dann ist die Linie leichter und gepunktet. Technisch gesehen bezieht sich der Zusammenbruch in lichtbar und unentscheidbarer mehr auf die Untersuchung von Computerbarkeitstheorie, ist nützlich, um die Komplexitätsklassen in die richtige Perspektive zu setzen.

Entscheidungsproblem
SolidLine.png SolidLine.png
Typ 0 (rekursiv aufgezählt)
Unentscheidbar
SolidLine.png
Entschlossen
SolidLine.png
Expace
DottedLine.png
Nexptime
DottedLine.png
Nachfolger
DottedLine.png
PSPACE
SolidLine.png SolidLine.png DottedLine.png DottedLine.png DottedLine.png
Typ 1 (Kontextempfindlichkeit)
SolidLine.png DottedLine.png DottedLine.png DottedLine.png
SolidLine.png SolidLine.png DottedLine.png DottedLine.png DottedLine.png
SolidLine.png SolidLine.png
Co-NP
BQP
Np
SolidLine.png SolidLine.png DottedLine.png DottedLine.png DottedLine.png
SolidLine.png SolidLine.png DottedLine.png
BPP
DottedLine.png
SolidLine.png SolidLine.png DottedLine.png DottedLine.png DottedLine.png
SolidLine.png SolidLine.png
P
SolidLine.png SolidLine.png DottedLine.png
SolidLine.png
NC
SolidLine.png SolidLine.png
Typ 2 (kontextfrei)
SolidLine.png
Typ 3 (regulär)

Siehe auch

Verweise

  1. ^ Arora & Barak 2009, p. 28.
  2. ^ SIPser 2006, p. 48, 150.
  3. ^ SIPser 2006, p. 255.
  4. ^ Aaronson 2017, p. 12.
  5. ^ Aaronson 2017, p. 3.
  6. ^ Gasarch 2019.
  7. ^ Aaronson 2017, p. 4.
  8. ^ SIPser 2006, p. 320.
  9. ^ a b SIPser 2006, p. 321.
  10. ^ a b Aaronson 2017, p. 7.
  11. ^ Aaronson 2017, p. 5.
  12. ^ Aaronson 2017, p. 6.
  13. ^ Arora & Barak 2009, p. 144.
  14. ^ SIPser 2006, p. 355.
  15. ^ Arora & Barak 2009, p. 286.
  16. ^ Fortnow 1997.
  17. ^ Arora 2003.
  18. ^ Arora & Barak 2009, p. 342.
  19. ^ Arora & Barak 2009, p. 341–342.
  20. ^ a b c Barak 2006.
  21. ^ a b c d Arora & Barak 2009, p. 344.
  22. ^ Rich 2008, p. 689 (510 in vorgesehener PDF).
  23. ^ a b Watrous 2006, p. 1.
  24. ^ Goldreich 2006, p. 255 (2–3 in vorgesehener PDF).
  25. ^ Goldreich 2006, p. 257 (4 in vorgesehener PDF).
  26. ^ Goldreich 2006, p. 266 (11–12 in vorgesehener PDF).

Literaturverzeichnis

Weitere Lektüre

  • Der Komplexitätszoo Archiviert 2019-08-27 bei der Wayback -Maschine: Eine riesige Liste von Komplexitätsklassen, eine Referenz für Experten.
  • Neil Immerman. "Rechenkomplexitätstheorie". Archiviert von das Original am 2016-04-16. Enthält ein Diagramm, das die Hierarchie der Komplexitätsklassen zeigt und wie sie zusammenpassen.
  • Michael Garey, und David S. Johnson: Computer und Unverständlichkeit: Ein Leitfaden zur Theorie der NP-Vervollständigung. New York: W. H. Freeman & Co., 1979. Die Standardreferenz zu NP -Complete -Problemen - Eine wichtige Kategorie von Problemen, deren Lösungen für die Berechnung eine unpraktisch lange Zeit zu erfordern scheinen.