Warum Sprachen in der Komplexitätstheorie verwenden?

10

Ich beginne gerade mit der Berechnungstheorie, die untersucht, was wie schnell berechnet werden kann, wie viel Speicher verwendet wird und mit welchem ​​Rechenmodell.

Ich habe eine ziemlich grundlegende Frage, hoffe aber wirklich, dass einige von euch mir helfen können, das Konzept dahinter zu verstehen:

Warum dreht sich alles um den Begriff und die Definition von SPRACHEN (dh reguläre Sprachen und kontextfreie Sprachen)? Und wie hängen diese zusammen und beschreiben die Komplexität eines Algorithmus und die möglichen Rechenmodelle zu ihrer Lösung?

Ich habe diese verwandten Fragen gelesen:

Aber ich habe immer noch keine Antwort auf meine Zweifel, da sie eine praktische Begründung dafür liefern, warum sie wichtig sind (was ich verstehe), aber mir nicht helfen zu verstehen, warum die Komplexitätstheorie auf ihnen basiert.

Matteo
quelle
1
Wird dies nicht durch unsere Referenzfragen abgedeckt ?
Raphael
@ Raphael - Danke, dass Sie mich auf diese Frage hingewiesen haben, es ist eine großartige Referenz! Ich lese es gerade durch, aber im Moment glaube ich, dass dies ein Nachtrag zu der Frage cs.stackexchange.com/questions/13669/… sein könnte . Es scheint mir nicht, dass es bereits beantwortet ist, bitte lassen Sie mich wissen, wenn Sie sonst dünn sind
Matteo
3
Eine Sprache ist nur eine Menge von Strings endlicher Länge, was mit einer Funktion identisch ist, die endliche Strings auf 1 oder 0 abbildet. Sie fragen sich also wirklich: "Warum ist so viel Komplexitätstheorie über Entscheidungsprobleme?" Und die Antwort lautet, dass dies der Fall ist Die einfachste (nicht triviale) Art von Rechenaufgaben und häufig kompliziertere Rechenaufgaben können auf Entscheidungsprobleme reduziert werden.
Sasho Nikolov

Antworten:

10

Das liegt daran, dass Sprachen die beste (einzige?) Möglichkeit sind, das Konzept eines "Problems" zu formalisieren.

Ein Algorithmus (Turing Machine) hat eine Leistung, die wir durch Big-O-Komplexität ausdrücken. Ein Problem (Sprache) gehört zu einer Komplexitätsklasse. Diese werden normalerweise durch die Existenz definiert: Wenn eine Maschine existiert, die eine Sprache akzeptiert, die in einer bestimmten Leistung (Raum oder Zeit) ausgeführt wird, gehört die Sprache zur entsprechenden Komplexitätsklasse.L

Dafür gibt es einige Gründe. Erstens sind Sprachen plattformunabhängig. Sie müssen sich keine Gedanken darüber machen, ob eine Ganzzahl 32 oder 64 Bit beträgt oder ob Gleitkommaoperationen parallel zu anderen Operationen ausgeführt werden. Diese Dinge beschleunigen die Leistung auf Mikroebene, aber die Komplexitätsanalyse interessiert sich für die Makroebene. Wie ändert sich die Leistung des Algorithmus, wenn Sie von 100 auf bis auf skalieren ? Geht es von 1 Million Bandzellen auf 1 Milliarde oder von 1 Million auf mehr Zellen als Atome im Universum?10 9 10 121061091012

Das zweite ist, dass Sprachen nur eine schöne Abstraktion für Daten sind. Sie brauchen etwas, über das Sie Beweise machen können, etwas, das Sie formal modellieren können. Wenn Sie Ihre Eingabe und Ausgabe als Zeichenfolge codieren, handelt es sich jetzt nicht mehr um Bits im Speicher, sondern um mathematische Objekte mit bestimmten Eigenschaften. Sie können über sie argumentieren und Beweise über sie in einem formalen und sehr einfachen Sinne beweisen.

Die Komplexitätstheorie konzentriert sich in der Regel auf Entscheidungsprobleme, da diese schwierig werden. Wenn die Entscheidungsversion des reisenden Verkäufers NP-vollständig ist (dh es gibt eine Tour, die kürzer als die Länge ), ist es offensichtlich schwieriger, den kürzesten Weg zu finden. Es gibt nicht so viel Fokus auf Funktions- / Optimierungsprobleme, weil es immer noch viele offene Fragen und ungelöste Probleme bezüglich der einfacheren Entscheidungsprobleme gibt.k

Ich denke, hier ist meine Herausforderung für Sie: Finden Sie einen Weg, Probleme mathematisch zu beschreiben, die keine Sprachen sind. Ich weiß nicht, ob Sprachen etwas Besonderes sind, aber ich denke, sie sind das einfachste Werkzeug, mit dem wir umgehen können.

jmite
quelle
7
Sprachen sind sicherlich nicht die einzige Möglichkeit, Probleme zu formulieren. Sie können beispielsweise eine chromatische Zahl als Funktion von Diagrammen zu natürlichen Zahlen formalisieren . Und tatsächlich wird viel an Funktions- und Optimierungsproblemen gearbeitet.
David Richerby
2
Stimmt, aber wie würden Sie mit der Komplexität der Berechnung der chromatischen Zahl ohne ein Konzept einer Sprache oder Maschine umgehen?
Jmite
1
Vielen Dank für Ihre Antwort, ich verstehe Ihren Standpunkt. Ich habe jedoch noch zwei Fragen: 1) Hat die Tatsache, dass wir Sprachen verwenden, keinen Einfluss auf die Ergebnisse hinsichtlich der Komplexität oder Entscheidbarkeit eines Problems? dh könnte ein Problem in Gleitkomma-Arithmetik lösbar sein, aber nicht in Ganzzahl-Arithmetik (dh Ganzzahl-Programmierung)? 2) Wie führen wir diese Zuordnung von Daten jeglicher Art zu einer eindeutigen Sprache durch, die sie alle beschreibt (da wir die Komplexität eines Problems bewerten und von der spezifischen Eingabe abstrahieren möchten)? Danke noch einmal!
Matteo
3
@jmite Du brauchst eine Maschine, ja, aber nicht unbedingt eine Sprache.
Raphael
2
@Raphael Viele Komplexitätsklassen, die normalerweise in Bezug auf die Laufzeit von Maschinen definiert werden, können in Bezug auf die beschreibende Komplexität charakterisiert werden.
Sasho Nikolov
7

Es gibt zwei grundlegende Antworten auf Ihre Frage:

  1. Komplexitätstheorie beinhaltet mehr als Sprachen, zum Beispiel Funktionsklassen, arithmetische Komplexität und die Teilbereiche von Approximationsalgorithmen und Inapproximierbarkeit.

  2. 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.LMfMxMfM(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

Yuval Filmus
quelle
3

Betrachten wir diese Frage aus der Perspektive der Kategorietheorie. Die Entscheidungsprobleme (oder Sprachen) würden dann den Objekten einer Kategorie entsprechen, und die zulässigen Verringerungen zwischen zwei Problemen würden den Morphismen (Pfeilen) einer Kategorie entsprechen.

Das Sprechen über Sprachen hat den Vorteil, dass die Gleichwertigkeit von Sprachen gut definiert ist (nämlich durch die erweiterte Gleichheit). Zwei nicht miteinander verbundene Probleme können zu derselben Sprache führen, und dann dürfen wir sie als gleichwertig betrachten. Wenn wir stattdessen über isomorphe Probleme sprechen möchten, müssten wir die zulässigen Morphismen zwischen zwei Problemen definieren. Die zulässigen Morphismen hängen jedoch von der tatsächlich betrachteten Komplexitätsklasse ab, weshalb dieser Ansatz für den Vergleich verschiedener Komplexitätsklassen weniger geeignet ist.

Der Begriff der isomorphen Probleme ist normalerweise gröber als der Begriff der äquivalenten Sprachen, dh zwei Probleme können isomorph sein, selbst wenn ihre zugehörigen Sprachen nicht äquivalent sind. Schlimmer ist, dass es für die erlaubten Morphismen oft unterschiedliche vernünftige Begriffe gibt, die nur in Bezug auf die erlaubten Isomorphismen übereinstimmen. Wenn wir uns auf Sprachen konzentrieren, können wir solche Probleme verschieben, bis wir über verschiedene vernünftige Begriffe der Reduktion sprechen möchten (wie Karp-Reduktion vs. Cook-Reduktion).

Thomas Klimpel
quelle
Dies scheint die Frage nicht zu beantworten. Man könnte immer noch über Morphismen zwischen Problemen sprechen, was auch immer man als Objekte in der entsprechenden Kategorie verwendet.
David Richerby
@DavidRicherby Der Punkt, den ich ansprechen wollte, ist, dass das Festnageln der entsprechenden Morphismen schwieriger ist als das Festnageln der entsprechenden Objekte (= Sprachen). (Zumal es normalerweise mehr als einen geeigneten Begriff für Morphismen gibt.) Ohne Morphismen können Sie nicht über isomorphe Probleme (oder Algorithmen) sprechen. Sprachen bieten Ihnen jedoch die Möglichkeit, immer noch über die Gleichwertigkeit von Problemen zu sprechen. Vielleicht habe ich das nicht richtig erklärt, aber (für mich) ist dies ein guter Grund, "Sprachen in der Komplexitätstheorie zu verwenden".
Thomas Klimpel