Für jede berechenbare Funktion gibt es ein Problem, das bestenfalls in Zeit gelöst werden kann, oder gibt es eine berechenbare Funktion so dass jedes Problem, das in gelöst werden kann, gelöst werden kann auch in Zeit gelöst werden?
Diese Frage tauchte gestern in meinem Kopf auf. Ich habe jetzt ein bisschen darüber nachgedacht, kann es aber nicht herausfinden. Ich weiß nicht wirklich, wie ich das googeln soll, also frage ich hier. Folgendes habe ich mir ausgedacht:
Mein erster Gedanke war, dass die Antwort ja lautet: Für jede berechenbare Funktion das Problem "Ausgabe von Punkten" (oder Erstellen einer Zeichenfolge mit Punkten oder was auch immer) offensichtlich nicht in ) gelöst werden Zeit. Wir müssen also nur zeigen, dass es in Zeit gelöst werden kann . Kein Problem, nimm einfach den folgenden Pseudocode:
x = f(n)
for i from 1 to x:
output(".")
Dieser Algorithmus löst eindeutig das angegebene Problem. Und es ist Laufzeit ist offensichtlich in , also Problem gelöst. Das war einfach, oder? Außer nein, das liegt nicht daran, dass Sie die Kosten für die erste Zeile berücksichtigen müssen. Die Laufzeit des obigen Algorithmus liegt nur in wenn die zur Berechnung von erforderliche Zeit in . Dies gilt natürlich nicht für alle Funktionen 1 .O ( f ( n ) )
Dieser Ansatz brachte mich also nicht weiter. Ich wäre dankbar, wenn jemand mich in die richtige Richtung weisen würde, um dies richtig herauszufinden.
1 Betrachten Sie zum Beispiel die Funktion . Es ist klar, dass , aber es gibt keinen Algorithmus, der in O (1) berechnet .
quelle
Antworten:
Nach dem Gap-Theorem (unter Verwendung der Formulierung von hier , suche nach 'Gap') gibt es für jede berechenbare unbegrenzte Funktion einige zunehmende (tatsächlich beliebig große) berechenbare Funktion so dass . F : N → N D T I M E ( f ( n ) ) = D T I M E ( g ( f ( n ) )g:N→N f:N→N DTIME(f(n))=DTIME(g(f(n))
Ihre Frage damit beantwortet, dass es existiert eine solche (unendlich viele in der Tat): Für jede berechenbare Funktion , so dass , gibt es eine steigende Funktion , so dass alle Probleme in auflösbar Zeit ist auch lösbar in Zeit. Beachten Sie, dass nicht unbedingt zeitkonstruierbar ist - für den zeitkonstruierbaren Fall siehe die Antwort von @RanG.g g = o ( n ) f O ( f ( n ) ) O ( g ( f ( n ) ) = o ( f ( n ) ) ff g g=o(n) f O(f(n)) O(g(f(n))=o(f(n)) f
In der Wikipedia-Formulierung (für die erforderlich ist ) wird zu Ihrem Beispiel, und muss (also gehen Sie andersherum - Probleme, die in lösbar sind) sind auch lösbar in 'ist der interessante Teil).g ≤ f f ω ( n ) O ( g ( f ( n ) ) O ( g ( n ) )g(x)≥x g∘f f ω(n) O(g(f(n)) O(g(n))
Der Wikipedia-Artikel bemerkt nicht, dass zunimmt und tatsächlich beliebig groß sein kann (zum Beispiel ). Der Artikel, der den Lückensatz beweist, erwähnt und beweist dies (siehe hier zum Beispiel).f ( n ) ≥ g ( n )f f(n)≥g(n)
quelle
Wenn ist eine zeit konstruierbar Funktion , dann ist die Zeithierarchie Theorem besagt , dass es Probleme gibt , die erfordern Zeit und kann nicht mit der Zeit gelöst werden . Insbesondere O ( f ( n ) ) o ( f ( n )f O(f(n)) DTIME(o(f(n)o(f(n)log(f(n)))
Dies berücksichtigt nur Entscheidungsprobleme und nicht die Zeit, die zum Generieren der Ausgabe benötigt wird.
quelle
Ich werde versuchen, einen Rahmen zu schaffen, in der Hoffnung, dass er einen tieferen Einblick gewährt.
Wenn Sie zu etwas so grundlegendem gelangen, gibt es überall unerwartete Fallstricke. Zum Beispiel: Was ist es, ein Problem zu "lösen"? In der Informatik betrachten wir oft nur die "Entscheidungs" -Variante, in der wir eine Eingabe erhalten und nur Wahr oder Falsch ausgeben müssen. Sie konzentrieren sich auf das Problem "Funktion".
Wenn Sie die O (f (n)) - Notation als Versuch ansehen, zu erfassen, wie viel "Arbeit" erforderlich ist, um ein Problem zu lösen, erscheint die Verwendung von Entscheidung anstelle von Funktion (wo Ausgabe erforderlich ist) besser, da Sie die Berechnung sauber von der Ausgabeformatierung trennen .
Ich glaube nicht, dass dies Ihre Frage beantworten wird, aber das könnte Sie interessieren: http://en.wikipedia.org/wiki/Time_hierarchy_theorem
Seien Sie auch vorsichtig mit dem Beschleunigungssatz .
quelle