Kann man entscheiden, ob ein bestimmter Algorithmus asymptotisch optimal ist?

11

Gibt es einen Algorithmus für das folgende Problem:

Bei einer Turing - Maschine , die eine Sprache entscheidet , Gibt es eine Turing - Maschine entscheiden , so dass ?M1L
M2Lt2(n)=o(t1(n))

Die Funktionen und sind die Worst-Case-Laufzeiten der Turing-Maschinen bzw. .t1t2M1M2

Was ist mit der Komplexität des Raums?

StaticBug
quelle
1
Die Antwort ist definitiv nicht. Es ist bekannt, dass die Bestimmung der Worst-Case-Laufzeit eines TM unentscheidbar ist.
Chazisop
Allgemeinere Frage .
Raphael

Antworten:

9

Hier ist ein einfaches Argument, um zu zeigen, dass sie nicht entscheidbar sind, dh es gibt keine Algorithmen, mit denen überprüft werden kann, ob ein bestimmter Algorithmus hinsichtlich seiner Laufzeit oder Speichernutzung optimal ist.

Wir reduzieren das Problem des Anhaltens auf leerem Band auf Ihr Problem der Laufzeitoptimierung.

Sei eine gegebene Turingmaschine. Sei N die folgende Turingmaschine:M

: am Eingang n 1. Führen Sie M für (höchstens) n Schritteauf einem leeren Band aus. 2. Wenn M nicht in n Schritten anhält, führen Sie eine Schleife der Größe 2 n aus und geben Sie NO zurück. 3. Andernfalls geben Sie JA zurück.Nn
Mn
Mn2n

Es gibt zwei Fälle:

  1. Wenn nicht auf leerem Band anhält, läuft die Maschine N für Θ ( 2 n ) Schritte am Eingang n . Die Laufzeit beträgt also Θ ( 2 n ) . In diesem Fall ist N offensichtlich nicht optimal.MNΘ(2n)nΘ(2n)N

  2. Wenn auf einem leeren Band anhält, läuft die Maschine N für eine konstante Anzahl von Schritten für alle ausreichend großen n , sodass die Laufzeit O ( 1 ) ist . In diesem Fall ist N offensichtlich optimal.MNnO(1)N

Zusamenfassend:

M halts on blank tape N is optimial 

Außerdem können wir mit dem Code für den Code für N berechnen . Daher haben wir eine Reduzierung vom Problem des Anhaltens auf leerem Band zum Problem der Laufzeitoptimierung. Wenn wir entscheiden könnten, ob eine gegebene Turingmaschine N optimal ist, könnten wir die obige Reduzierung verwenden, um zu prüfen, ob eine gegebene Maschine M auf einem leeren Band anhält. Da das Anhalten auf leerem Band nicht entschieden werden kann, ist auch Ihr Problem nicht zu entscheiden.MNNM

Ein ähnliches Argument kann für den Speicherplatz verwendet werden, dh es ist auch unentscheidbar zu prüfen, ob eine bestimmte Turing-Maschine hinsichtlich des von ihr verwendeten Speicherplatzes optimal ist.

Eine noch stärkere Aussage ist wahr: Wir können nicht entscheiden, ob eine bestimmte berechenbare Funktion eine Obergrenze für die zeitliche Komplexität der Berechnung einer bestimmten berechenbaren Funktion darstellt. Ähnliches gilt für den Weltraum. Das heißt, selbst die grundlegende Komplexitätstheorie kann nicht durch Algorithmen automatisiert werden (was für Komplexitätstheoretiker eine gute Nachricht sein kann;).

Kaveh
quelle
Ich möchte nur erwähnen, dass OP in der ursprünglichen Frage angenommen hat, dass die Sprache in quadratischer Zeit entscheidet. M1
Pål GD
Bitte stellen Sie klar, dass Sie die asymptotische Optimalität betrachten. Selbst in Fall 2 ist nicht unbedingt optimal; Die Funktion n YES kann in einem Schritt berechnet werden, während N mehr als n 0 (für großes n ) benötigt, wobei n 0 die Länge der Berechnung von M auf leerem Band ist. nnYESNn0nn0M
Raphael
Ah, die Frage hat sich geändert, seit ich sie das letzte Mal gelesen habe. Keine Ursache.
Raphael
@ PålGD, ich denke, OP hat das als Beispiel verwendet (basierend auf der ursprünglichen Frage, die auf cstheory veröffentlicht wurde). Sie können die Kommentare unter dieser Frage überprüfen.
Kaveh
2

Wie andere bereits erwähnt haben, lautet die Antwort nein.

Aber es gibt einen interessanten Artikel von Blum " Eine maschinenunabhängige Theorie der Komplexität rekursiver Funktionen ". Er zeigte, dass es einige Funktionen mit der Eigenschaft gibt, dass unabhängig davon, wie schnell ein Programm diese Funktionen berechnet, ein anderes Programm existiert, um sie sehr viel schneller zu berechnen .

ein sehr schönes Hotel!

Reza
quelle
-3

Ha! Wäre die Antwort ja, würden wir in einer anderen Welt leben.

Stellen Sie sich vor, die Antwort auf Ihre Frage wäre ja (und natürlich kannten wir den Algorithmus , der Ihre Frage beantworten würde). Dann könnten wir für jeden Algorithmus A für Sprache L (unter Verwendung von A 0 ) feststellen, ob A optimal ist oder nicht.A0ALA0A

Leider ist dies nicht möglich, und ich persönlich denke, dass der Nachweis (nicht trivialer) Optimalität das interessanteste (und schwierigste) Problem in der Informatik ist. Soweit ich weiß - ich würde mich freuen, korrigiert zu werden - gibt es kein Optimalitätsergebnis für ein Polynomproblem (außer den trivialen Optimalitätsergebnissen von Algorithmen, deren Zeit proportional zur Eingabegröße ist).

t zum t
quelle
1
Ω(N)
1
Ω(nlogn)
@vonbrand - das habe ich mit Algorithmen gemeint, die proportional zur Eingabegröße sind.
t bis zum
1
@ttothet Ok, ich fürchte, es wird fruchtlos sein, aber ich werde es erneut versuchen. 1) Nein, überhaupt nicht. Wenn Sie bei jeder Eingabe nur einen Schritt speichern, haben Sie einen besseren Algorithmus als zuvor, obwohl er dieselbe asymptotische Laufzeit hat. 2) Nein, das tut es nicht. Es kann auch bedeuten "Ich weiß nicht, aber wenn ja, dann X". Dies ist nicht ungewöhnlich (vgl. P? = NP). 3) Sie behauptet , es gab keine nicht-triviale untere Grenze (auf Asymptotiken, nehme ich an) überhaupt . Das ist falsch. Mach bitte deine Hausaufgaben.
Raphael
1
@ MartinJonáš Ich meine eine 2-Band-Turingmaschine. Kaveh hat einen Punkt, der Beweis des Zeithierarchiesatzes liefert zwar lösbare Probleme mit beliebig hoher Komplexität, aber die Beispiele sind nicht ganz natürlich und fühlen sich nicht sehr explizit an. Es ist auch keine Hierarchie für die Wahrscheinlichkeitszeit bekannt, also haben wir dort wirklich nichts.
Sasho Nikolov