Es gibt zwei grundlegende Antworten auf Ihre Frage:
Komplexitätstheorie beinhaltet mehr als Sprachen, zum Beispiel Funktionsklassen, arithmetische Komplexität und die Teilbereiche von Approximationsalgorithmen und Inapproximierbarkeit.
Historische Gründe: Eine der grundlegenden Arbeiten in der Berechenbarkeitstheorie war die Erörterung von Hilberts Entscheidungsproblem (eine Form des Halteproblems).
Leider weiß ich nicht viel über Letzteres, aber lassen Sie mich auf Ersteres eingehen.
Komplexität jenseits der Sprachen
Jeder rechnerischen Komplexitätsklasse ist eine Funktionsklasse zugeordnet . Beispielsweise ist die Klasse P aller in der Polynomzeit entscheidbaren Probleme FP zugeordnet, der Klasse aller in der Polynomzeit berechenbaren Funktionen. FP ist wichtig , da es verwendet wird , NP-Härte zu definieren: eine Sprache NP-hard ist , wenn für jede Sprache in NP gibt es eine Funktion in FP , so dass iff . Eine weitere Komplexitätsklasse von Funktionen, #P , bezieht sich auf die so genannte Polynom Hierarchie über Toda-Theorem .M f M x ∈ M f M ( x ) ∈ L.LMfMx∈MfM(x)∈L
Die Komplexität arithmetischer Schaltkreise (oder die algebraische Komplexitätstheorie ) befasst sich mit der Komplexität der Berechnung verschiedener Polynome. Wichtige Komplexitätsklassen sind hier VP und VNP, und die geometrische Komplexitätstheorie ist ein wichtiges Projekt, das versucht, VP und VNP (und später P und NP) unter Verwendung der algebraischen Geometrie und Darstellungstheorie zu trennen.
Ein weiteres wichtiges Beispiel für algebraische Komplexität ist die schnelle Matrixmultiplikation. Hier ist die grundlegende Frage, wie schnell wir zwei Matrizen multiplizieren können . Ähnliche Fragen stellen die Frage, wie schnell wir Ganzzahlen multiplizieren können, wie schnell wir Ganzzahlen auf Primalität testen können (dies ist ein Entscheidungsproblem!) Und wie schnell wir Ganzzahlen faktorisieren können.
Die konvexe Optimierung befasst sich mit Optimierungsproblemen, die effizient (oder fast gelöst) werden können. Beispiele sind lineare Programmierung und semidefinite Programmierung, die beide über effiziente Algorithmen verfügen. Hier interessiert uns sowohl die optimale als auch die optimale Lösung. Da es oft mehr als eine optimale Lösung gibt, wird die Berechnung einer optimalen Lösung als Entscheidungsproblem nicht gut dargestellt.
Die Approximierbarkeit ist der Bereich, in dem untersucht wird, wie gut eine Approximation für ein Optimierungsproblem in der Polynomzeit sein kann. Betrachten Sie zum Beispiel das klassische Problem der Set-Abdeckung: Wie viele von ihnen benötigen wir bei einer Sammlung von Sets, um das gesamte Universum abzudecken? Die optimale Zahl zu finden ist NP-schwer, aber vielleicht ist es möglich, eine Näherung zu berechnen? Approximationsalgorithmen sind der Teilbereich, in dem Algorithmen zur Berechnung von Approximationen untersucht werden, während Inapproximierbarkeit die Grenzen von Approximationsalgorithmen untersucht. Im speziellen Fall von Set Cover haben wir einen Algorithmus, der eine Näherung (den Greedy-Algorithmus), und es ist NP-schwer, es besser zu machen.lnn