Unter welchen Umständen implizieren Algorithmen Algorithmen?

16

Angenommen, für jedes gibt es eine Turingmaschine , die eine Sprache in der Zeit . Gibt es einen einzelnen Algorithmus, der in der Zeit ? (Hier wird der Term in Form von , der Eingabelänge, gemessen .)M ε L O ( n a + ε ) L O ( n a + O ( 1 ) ) O ( 1 ) nϵ>0MϵLO(na+ϵ)LO(na+o(1))o(1)n

Macht es einen Unterschied, ob die Algorithmen in Bezug auf berechenbar oder effizient berechenbar sind ? ϵMϵϵ

Motivation: In vielen Beweisen ist es einfacher, Algorithmen der Zeit zu konstruieren als den limitierenden Algorithmus . Insbesondere müssen Sie den konstanten Term in begrenzen, um an die Grenze . Es wäre schön, wenn es ein allgemeines Ergebnis gibt, das Sie aufrufen können, um direkt an das Limit zu gelangen.O ( n a + O ( 1 ) ) O ( n a + ε ) O ( n a + O ( 1 ) )O(na+ϵ)O(na+o(1))O(na+ϵ)O(na+o(1))

David Harris
quelle

Antworten:

10

Die Frage ähnelt der Frage nach der konstruktiven Existenz der Grenze einer Folge von (konstruktiven) Objekten. Wenn Sie diese Objekte (hier ) effizient genug einheitlich konstruieren können, können Sie in der Regel die Existenz der Grenze konstruktiv nachweisen.Mϵ

Angenommen, wir haben ein TM das auf und dessen Laufzeit (auch hier sind die Grenzen einheitlich, zB würde so etwas wie nicht funktionieren). Dann können wir diesen einheitlichen Simulator mit der Funktion kombinieren , um die Maschine , die in der Zeit läuft .N(k,x)M|k|1xO(na+|k|1)+O(|k|)O(2k.na+|k|1)(k,x)xN(x,x)O(na+o(1))

PS: ist etwas mehrdeutig, da asymptotische Notationen verschachtelt sind. Ich interpretiere es als . Außerdem müssen wir nicht zu klein sein, zB mindestens .n a + O ( 1 ) a 1O(na+o(1))na+o(1)a1

Kaveh
quelle
8

Sie können den universellen Suchalgorithmus von Levin verwenden. Angenommen, Sie können irgendwie eine Folge von Algorithmen aufzählen , die bestimmen und jeweils zur Zeit ablaufen . Levins Algorithmus läuft in der Zeit für jedes , wobei eine Konstante in Abhängigkeit von . So wird für jeden , Wenn , wähle und lasseAkLCkna+1/kT(n)Dkna+1/kkDkCkkε>0k=2/εN=D 2 / ε knNτ(n)ετ(n)0na+τ(n)=na

τ(n)logT(n)lognalogDk+(a+1/k)lognlogna=logDklogn+1k.
ϵ>0k=2/ϵN=Dk2/ϵ. Dann für , . Deshalb , und wir erhalten, dass der Levin-Algorithmus in der Zeit läuft .nNτ(n)ϵτ(n)0na+τ(n)=na+o(1)
Yuval Filmus
quelle
Wenn ich Levins Algorithmus verstehe, gilt dies nur für Suchalgorithmen. Dieser Algorithmus würde funktionieren, um eine Funktion zu invertieren , wobei in der Zeit berechnet werden kann . f O ( n o ( a ) )ffO(no(a))
David Harris
Ich schlage nicht vor, den Levinschen Algorithmus selbst zu verwenden, sondern alle Algorithmen mithilfe der Schwalbenschwanzführung parallel auszuführen, sodass jeder Algorithmus nur durch einen multiplikativen Faktor verlangsamt wird. Ak
Yuval Filmus
@ Yuval, wenn Sie alle Algorithmen miteinander verzahnt haben, wie entscheiden Sie dann, welche Antwort Sie akzeptieren möchten? Bei einem Suchproblem können Sie jede vermeintliche Ausgabe testen, dies ist jedoch im Allgemeinen nicht möglich.
David Harris
Ich akzeptiere die erste Antwort, die erscheint. Wir erhalten die , dass die Algorithmen korrekt entscheiden . LAkL
Yuval Filmus