Komplexitätsklassen für andere Fälle als den „schlimmsten Fall“

10

Haben wir Komplexitätsklassen beispielsweise in Bezug auf die durchschnittliche Fallkomplexität? Gibt es zum Beispiel eine (benannte) Komplexitätsklasse für Probleme, deren Entscheidung die erwartete Polynomzeit benötigt?

Eine andere Frage berücksichtigt die Best-Case- Komplexität, die im Folgenden beispielhaft dargestellt wird:

Gibt es eine Klasse von (natürlichen) Problemen, deren Entscheidung mindestens exponentielle Zeit erfordert ?

Um zu klären, betrachten einige EXP -komplette Sprache . Offensichtlich erfordern nicht alle Instanzen von eine exponentielle Zeit: Es gibt Instanzen, die auch in Polynomzeit entschieden werden können. Die beste Komplexität von ist also nicht die exponentielle Zeit.L L.LLL

EDIT: Da mehrere Unklarheiten aufgetreten sind, möchte ich versuchen, dies noch genauer zu klären. Mit "Best-Case" -Komplexität meine ich eine Komplexitätsklasse, deren Komplexität durch eine Funktion niedriger begrenzt ist. Definieren Sie beispielsweise BestE als die Klasse von Sprachen, die nicht zeitlich unter einem linearen Exponential entschieden werden kann. Symbolisch sei eine beliebige Turingmaschine, und , und seien natürliche Zahlen:c n 0 nMcn0n

LBestE (c)(M)[(L(M)=L)(n0)(n>n0)(x{0,1}n)[T(M(x))2c|x|]]

wobei die Zeiten bezeichnet, die es dauert, bis am Eingang anhält .M xT(M(x))Mx

Ich akzeptiere, dass die Definition einer solchen Klasse von Problemen sehr seltsam ist, da wir verlangen, dass jede Turing-Maschine , unabhängig von ihrer Leistung, die Sprache nicht in einer Zeit entscheiden kann, die kleiner als ein lineares Exponential ist.M

Beachten Sie jedoch , dass das Gegenstück zur Polynomzeit ( BestP ) natürlich ist, da jede Turing-Maschine Zeitum zumindest seine Eingabe zu lesen.|x|

PS: Vielleicht müssen wir , anstatt als "für alle Turingmaschinen " zu quantifizieren , diese auf eine vorgegebene Klasse von Turingmaschinen beschränken, wie z. B. Turingmaschinen mit Polynomzeit. Auf diese Weise können wir Klassen wie definieren. ist die Klasse von Sprachen, für deren Entscheidung mindestens eine quadratische Zeit für Turing-Maschinen mit Polynomzeit erforderlich ist.B e s t ( n 2 )MBest(n2)

PS2: Man kann auch das Gegenstück zur Schaltungskomplexität berücksichtigen, bei dem wir die geringste Schaltungsgröße / -tiefe berücksichtigen, um eine Sprache zu bestimmen.

MS Dousti
quelle
Nur weil es Fälle von SAT gibt, die einfach sind, bedeutet dies nicht, dass die erwartete Zeit polynomisch ist. Ich bin nicht sicher, ob ich Ihre Frage verstehe.
Lev Reyzin
@ Lev Reyzin: Ich habe nicht gemeint, dass SAT in der erwarteten Poly-Zeit ist. Ich meinte, da SAT einfache Instanzen hat, können wir nicht sagen, dass seine "Best-Case" -Komplexität schwierig ist.
MS Dousti
Oh, ich verstehe, die durchschnittliche Komplexität der Fälle und die Komplexität der besten Fälle sind zwei getrennte Fragen! Irgendwie habe ich das in meiner ersten Lesung verpasst - mein Fehler.
Lev Reyzin
Ich kann Ihre Definition von BestE nicht ganz analysieren. M und x sitzen außerhalb ihrer Quantifizierung ... möchten Sie nicht, dass Eingaben ablehnt, die nicht in ? L.ML
Ryan Williams
@ Ryan: Danke, dass du auf den Fehler hingewiesen hast. Ich habe es korrigiert.
MS Dousti

Antworten:

13

Obwohl ich Ihre Definitionen nicht ganz analysieren kann, sollten Sie wissen, dass viel stärkere Zeithierarchien bekannt sind, insbesondere "fast überall" Zeithierarchien.

Hier ist die formale Aussage: Für jede zeitgebundene gibt es eine Sprache L T I M E [ T ( n ) ] mit der Eigenschaft, dass jeder deterministische Algorithmus, der L korrekt erkennt , in einer Zeit asymptotisch größer als t laufen muss ( n ) an allen bis auf endlich viele Eingaben für eine ausreichend kleine Zeit t ( n ) . T(n)LTIME[T(n)]Lt(n)t(n)

"Ausreichend klein" bedeutet .t(n)logt(n)o(T(n))

Angenommen , wir wählten für ein Beispiel, und erhält eine harte Sprache L . Dann muss jeder Algorithmus, der L korrekt erkennt , an allen Eingaben nach einer bestimmten Länge mindestens 2 n / n 2 Zeit benötigen. Dies scheint das zu sein, wonach Sie in Ihrer Klasse BestE suchen.T(n)=2nLL2n/n2

Referenz:

John G. Geske, Joel I. Seiferas, Dung T. Huynh: Eine Anmerkung zu fast überall komplexen Mengen und zur Trennung deterministischer Zeit-Komplexitätsklassen Inf. Comput. 92 (1): 97 & ndash; 104 (1991)

Ryan Williams
quelle
Sehr gut, danke. Ich denke, Sie haben meine Frage ziemlich gut verstanden, und Ihr einleitender Satz "Ich kann Ihre Definitionen nicht ganz analysieren" ist nur ein Zeichen Ihrer Bescheidenheit :)
MS Dousti
2
Vorausgesetzt, ich habe richtig geraten, sollte Ihre Definition ungefähr so ​​lauten: "L \ in BestE \ iff (\ existiert c) (\ forall M) [(L (M) = L) \ Rightarrow (\ existiert n_0) (\ forall n > n_0) (\ forall x \ in \ {0,1 \} ^ n) [T (M (x))> 2 ^ {c | x |})]. "
Ryan Williams
Ja, du hast recht. Ich habe die Definition in letzter Minute bearbeitet und einige der Quantifizierer falsch platziert. Ich habe die Frage basierend auf Ihrer Definition korrigiert.
MS Dousti
12

Es gibt eine Reihe von Klassen, die versuchen, verschiedene Vorstellungen von durchschnittlicher Fallkomplexität anzugehen. Im Complexity Zoo sind einige Klassen, an denen Sie interessiert sein könnten:

Durchschn

HeurP

DistNP

(NP, P-Probenahme)

Arora / Barak deckt viele ähnliche Klassen ab (in Kapitel 18) und definiert distP, distNP und sampNP.

Die genaue Beziehung zwischen all diesen Klassen ist durch Impagliazzos Fünf Welten gekennzeichnet, nach denen zuvor in einer anderen Frage gefragt wurde .

Was die Komplexitätsfrage "Best Case" betrifft, bin ich mir nicht sicher, ob ich genau verstehe, was Sie meinen. Suchen Sie EXP ?

Wenn Sie Komplexitätsklassen meinen, die als Laufzeit im besten Fall über alle Instanzen definiert sind, ist dies kein sehr gutes Komplexitätsmaß a priori, da Sie nur die trivialen Fälle eines bestimmten Problems betrachten würden.

Daniel Apon
quelle
Sehr gut gemacht! Das war es, was ich für den Teil der durchschnittlichen Komplexität der Frage brauchte. In Bezug auf den "Best-Case" -Teil bemerkte ich, dass die ursprüngliche Aussage der Frage vage war. Mein Fehler! Ich habe es viel bearbeitet, also lesen Sie es bitte noch einmal.
MS Dousti
5

TIME[T(n)]CLCLLLCLCLL¯=ΣLCBestEE

(Historisch gesehen: Der Begriff der Immunität wurde 1944 von Post erstmals in der Berechenbarkeitstheorie entwickelt, lange bevor P überhaupt definiert wurde. Post betrachtete tatsächlich "einfache Mengen" - eine Menge ist einfach, wenn ihr Komplement immun ist. Für einen Berechenbarkeitstheoretiker Das Wort "immun" bedeutet normalerweise "immun gegen berechenbare Mengen". In dieser Einstellung ist Immunität gleichbedeutend mit "immun gegen ce-Mengen", da jede unendliche ce-Menge eine unendlich berechenbare Menge enthält Vorstellung von einer Reduzierung um viele, aber das konnte ich nicht schwören.)

Joshua Grochow
quelle
MLLM(x)=1
LLC
1
@Sadeq: behoben, danke. @ Ryan: Richtig (oder es war vor ein paar Stunden: er hat seitdem die Definition aktualisiert). Dann wäre es Immunität statt Doppelimmunität. In beiden Fällen wollte ich hauptsächlich auf das Schlüsselwort "Immunität" hinweisen.
Joshua Grochow
2

Verschiedene Fälle sind sinnvoller, wenn es um Algorithmen geht, nicht um Probleme. Andererseits geht es bei Komplexitätsklassen um Probleme, nicht um Algorithmen. Daher ist die Komplexitätsklasse, die für jeden Algorithmus immer der schlechteste Fall ist, auf die Definition zurückzuführen.

In der Komplexität besteht Ihr Ziel darin, die Anzahl der Ressourcen zu kennen, die zur Lösung einer Instanz eines bestimmten Problems erforderlich sind. Daher wissen Sie, dass Sie für eine bestimmte Instanz und einen bestimmten Algorithmus diese Ressourcen benötigen und nicht mehr.

Bei der Algorithmusanalyse besteht Ihr Ziel darin, sicherzustellen, dass Ihr Algorithmus in jedem Fall des Problems eine Obergrenze für eine Ressource hat. Eine triviale Grenze ist die Komplexitätsklasse des Problems, da kein nützlicher Algorithmus (der unnötige Schritte ausführt) mehr Zeit benötigt. Sie können diese Grenze jedoch aufgrund der Besonderheiten des Algorithmus verbessern.

Angenommen, Sie analysieren Mergesort. Wenn die Lösung gegeben ist, können Sie sie in Polynomzeit bestätigen, daher ist SORTIEREN in NP. Durch Analyse können Sie dies jedoch auf senken.Θ

Im besten Fall ist es für jedes Problem trivial, die geringste Anzahl an benötigten Ressourcen zu finden. Angenommen, die Eingabe hat die Länge O (n) und die Ausgabe die Länge O (m). Dann läuft das folgende TM M im besten Fall immer in O (n) + O (m):

M {Eingabe, Instanz, Lösung}

  1. Vergleichen Sie die angegebene Instanz mit der auf dem Computer codierten Instanz.
  2. Wenn sie gleich sind, geben Sie die codierte Lösung zurück.
  3. Andernfalls führen Sie eine Brute-Force-Suche durch.
Chazisop
quelle
-1

O(1)

umar
quelle
1
Ich denke nicht, dass dies als korrekter Algorithmus für das Problem gilt. Ihr Algorithmus kann jedoch so geändert werden, dass zunächst geprüft wird, ob die Eingabe der von Ihnen festgelegten Instanz entspricht (in O (1) -Zeit). Wenn dies der Fall ist, wird die vorberechnete Antwort ausgegeben. Wenn nicht, lösen Sie die angegebene Instanz auf irgendeine Weise. Denken Sie darüber nach , alle richtigen Algorithmus läuft in O (1) Zeit für jedes Beispiel, wenn wir verschiedene Konstanten hinter dem O-Notation für verschiedene Instanzen nehmen. Deshalb ist die „Best-Case-Komplexität“ im wörtlichen Sinne nicht sinnvoll.
Tsuyoshi Ito
Wenn Sie von deterministischer, nicht-probabilistischer Berechnung sprechen, würde es eine lineare Zeit (O (n) Zeit) dauern, um zu überprüfen, ob zwei Codierungen von Instanzen äquivalent sind: Scannen Sie die n Bits der Eingabecodierung und stellen Sie sicher, dass sie gleich sind als programmierte Kodierung, nein?
Daniel Apon
2
@ Daniel: Ja, aber wenn eine der Instanzen fest ist, dauert es nur eine konstante Zeit, wobei die Konstante von der Länge der festen Instanz abhängt.
Tsuyoshi Ito