In seinem Buch Computational Complexity definiert Papadimitriou FNP wie folgt:
Angenommen, ist eine Sprache in NP . Nach Satz 9.1 gibt es eine polynomisch-zeitlich entscheidbare, polynomisch ausgeglichene Beziehung so dass für alle Zeichenketten : Es gibt eine Zeichenkette mit genau dann, wenn . Das mit verbundene Funktionsproblem , das mit , ist das folgende Rechenproblem:
Wenn , finde eine Zeichenkette so dass wenn eine solche Zeichenkette existiert; Wenn keine solche Zeichenfolge vorhanden ist, geben Sie "no" zurück.
Die Klasse aller Funktionsprobleme, die wie oben mit der Sprache in NP verbunden sind, heißt FNP . FP ist die Unterklasse, die sich ergibt, wenn wir nur Funktionsprobleme in FNP betrachten , die in Polynomzeit gelöst werden können.
(...)
(...) nennen wir ein Problem in FNP total, wenn es für jeden String mindestens ein so dass . Die Unterklasse von FNP, die alle Gesamtfunktionsprobleme enthält, wird als TFNP bezeichnet .
In einem Venn-Diagramm in der Kapitelübersicht impliziert Papadimitriou, dass FP TFNP FNP .
Ich habe eine harte Zeit zu verstehen , warum genau gilt, dass FP TFNP da Probleme in FP müssen nicht per se insgesamt sein.
Zum besseren Verständnis habe ich in der Literatur nach einer wasserdichten Definition von FP , FNP und Sorten gesucht, ohne Erfolg.
Meiner (bescheidenen) Meinung nach gibt es zu diesen Themen wenig (korrektes!) Didaktisches Material.
Bei Entscheidungsproblemen sind die Klassen Sätze von Sprachen (dh Sätze von Zeichenfolgen).
Was genau sind die Klassen für Funktionsprobleme? Sind sie Zusammenhänge, Sprachen, ...? Was ist eine feste Definition?
quelle
Antworten:
Emil Jerabeks Kommentar ist eine schöne Zusammenfassung, aber ich wollte darauf hinweisen, dass es andere Klassen mit klareren Definitionen gibt, die mehr oder weniger dasselbe Konzept erfassen und die Beziehung zwischen all diesen Dingen klarstellen.
[Warnung: Während ich glaube, dass ich die Definitionen richtig verstanden habe, spiegeln einige der folgenden Dinge meine persönlichen Vorlieben wider - ich habe versucht, klar zu machen, wo das war.]
In der deterministischen Welt, ist eine Funktionsklasse nur eine Sammlung von Funktionen (in dem üblichen mathematischen Sinne des Wortes „Funktion“, das heißt, eine Karte ). Gelegentlich möchten wir "Teilfunktionen" zulassen, deren Ausgabe für bestimmte Eingaben "undefiniert" ist. (Gleichwertig Funktionen , die auf einer Untergruppe von definierten Σ * und nicht alle davon.)Σ∗→ Σ∗ Σ∗
Leider gibt es zwei verschiedene Definitionen für , und soweit ich das beurteilen kann, sind sie nicht äquivalent (obwohl sie "moralisch" äquivalent sind).F P
In der nichtdeterministischen Welt wird es ein bisschen komisch. Dort ist es zweckmäßig, "teilweise mehrwertige Funktionen" zuzulassen. Es wäre natürlich auch so etwas eine nennen binäre Relation , die eine Teilmenge von ist . Unter dem Gesichtspunkt der Komplexität ist es jedoch oft philosophisch und mental nützlich, diese Dinge als "nicht deterministische Funktionen" zu betrachten. Ich denke, viele dieser Definitionen werden durch die folgenden Klassen geklärt (deren Definitionen vollständig standardisiert sind, wenn auch nicht sehr bekannt):Σ∗× Σ∗
: Die Klasse von "partiellen mehrwertigen Funktionen", die von einer nicht deterministischen Maschine in der Polynomzeit berechnet werden können. Dies bedeutet, dass es eine nicht deterministische Mehrfachzeitmaschine gibt und dass sie bei Eingabe x in jedem nicht deterministischen Zweig wählen kann, eine Ausgabe zu akzeptieren und durchzuführen oder eine Ausgabe abzulehnen und keine Ausgabe vorzunehmen. Der "mehrwertige" Ausgang am Eingang x ist dann die Menge aller Ausgänge an allen nicht deterministischen Zweigen, wenn x als Eingang angegeben wird. Beachten Sie, dass dieser Satz leer sein kann, sodass dies als "mehrwertige Funktion" nur teilweise sein kann. Wenn wir es in binären Beziehungen sehen, entspricht dies der Beziehung { ( x , y ) : yN P M V x x x ausgegeben .{ ( x , y) : y wird von einem Zweig der Berechnung bei Eingabe x ausgegeben }
: Summe der "Funktionen" in N P M V , dh an jedem Eingangxakzeptiert mindestens ein Zweig (und gibt daher per Definition einen Ausgang aus)N P M Vt N P M V x
: einwertig (möglicherweise teilweise) Funktionen in N P M V . Hier besteht jedoch eine gewisse Flexibilität dahingehend, dass möglicherweise mehrere Zweige akzeptieren. Wenn jedoch ein Zweig akzeptiert wird, muss sichergestellt sein, dass alle akzeptierenden ZweigedieselbeAusgabe liefern (sodass sie wirklich einwertig sind). Allerdings ist es immer noch möglichdass kein Zweig akzeptiert, so dass die Funktion nur eine „Teilfunktion“ (dh nicht definiert auf alle Σ * ).N P S V N P M V Σ∗
: einwertig Gesamt Funktionen in N P S V . Diese wirklich sind Funktionen, im üblichen Sinne des Wortes, Σ * → Σ * . Es ist keine allzu schwere Übung zu sehen, dass N P S V t = F P N P ∩ c o N P (unter Verwendung von Def 1 für FP oben).N P S Vt N P S V Σ∗→ Σ∗ N P S Vt= F PNP∩coNP
Wenn wir von potentiell mehrwertigen Funktionen sprechen, ist es nicht mehr wirklich sinnvoll, von der Eindämmung von Komplexitätsklassen zu sprechen: bedingungslos, weil N P S V keine mehrwertigen "Funktionen enthält “, aber N P M V der Fall ist. Stattdessen sprechen wir von "c-Containment", bezeichnet mit ⊆ c . Eine (potentiell partielle, mehrwertige) Funktion f verfeinert eine (potentiell partielle, mehrwertige) Funktion g, wenn: (1) für jeden Eingang x, für den g giltNPMV⊈NPSV NPSV NPMV ⊆c f g x g macht eine Ausgabe, , und (2) die Ausgaben von f sind immer eine Teilmenge der Ausgaben von g . Die richtige Frage ist dann, ob jede N P M V -Funktion eine N P S V -Verfeinerung aufweist. Wenn ja, schreiben wir N P M V ⊆ c N P S V .f f g NPMV NPSV NPMV⊆cNPSV
ist eine Klasse von "Funktionsproblemen" (und keine Klasse von Funktionen). Ich würde auch anrufen F N P eine „Beziehungsklasse“, aber wirklichwas WorteSie es beschreiben Sie brauchensich danach zu klären, weshalb ich auf diese Definition nicht besonders teilweise bin. Für jede binäre Relation R ⊆ Σ * × Σ * gibt es ein zugehöriges "-Funktion Problem"Was ist ein Funktionsproblem? Ich habe keine klare mathematische Definition, wie ich es für Sprache / Funktion / Beziehung tue. Vielmehr wird definiert, was eine gültige Lösung ist:FNP FNP R⊆Σ∗×Σ∗ R f so dass , wenn dann f Ausgänge jeder derartiger y , und sonst f machen keinen Ausgang. F N P ist die Klasse von Funktionsproblemen, die mit Beziehungen R verbunden sind, so dass R ∈ P (wenn es als eine Sprache von Paaren betrachtet wird) und p-ausgeglichen ist. So F N P ist nicht eine Klasse von Funktionen, noch eine Klasse von Sprachen, sondern eine Klasse von „Funktionsstörungen“ , wo „Problem“ hier definiert ist grob in Hinblick darauf, was es bedeutet , es zu lösen.(∃y)[R(x,y)] f y f FNP R R∈P FNP
ist dann die Klasse von Funktionsproblemen in F N P - definiert durch eine Beziehung R wie oben - ein solches R ist insgesamt in dem Sinne, dass für jedes x ein y existiert,so dass R ( x , y ) .TFNP FNP R R x y R(x,y)
Um nicht schreiben zu müssen wie "Wenn jedes Funktionsproblem (bzw. T F N P ) eine Lösung in P F (bzw. F P gemäß obiger Definition) hat, dann ..." in In diesem Zusammenhang wird Definition 2 von F P verwendet , die lautet:FNP TFNP PF FP FP
Hier ist, wie diese verschiedenen Definitionen zueinander in Beziehung stehen: (Definition 2, was Sie annehmen sollten, weil es sich in einem Kontext befindet, in dem es mit F N P verglichen wird ) ist äquivalent zu N P M V ⊆ c P F . T F N P ≤ F P (def 2) ist äquivalent zu N P M V t ≤ c F P (def 1).FNP⊆FP FNP NPMV⊆cPF TFNP⊆FP NPMVt⊆cFP
quelle
Zusätzlich zu Joshuas ausführlicher Antwort möchte ich die folgenden Definitionen aus Elaine Ruchs Automaten, Rechenfähigkeit und Komplexität hinzufügen .
Aus diesen Definitionen ist es , dass klar . Sie hat auch kurz spricht über Probleme außerhalb von F N P .FP⊆TFNP⊆FNP FNP
Für mich ist dies die befriedigendste Ressource, die aus einer einzigen Seite besteht, die ich seit langer Zeit gefunden habe.
quelle