Kann jede Funktion , die in der Zeit berechenbar ist auf einer Single-Band Turingmaschine mit einem Alphabet der Größe in berechnenden Zeit auf einer Single-Tape-Turing-Maschine mit einem Alphabet der Größe (z. B. und leer)?t k = O ( 1 ) O ( t ) 3 0 , 1 ,
(Aus den Kommentaren unten vom OP) Beachten Sie, dass die Eingabe mit , aber die Turing-Maschine, die ein Alphabet der Größe kann die Eingabesymbole mit Symbolen aus dem größeren Alphabet überschreiben. Ich verstehe nicht, wie man Symbole im größeren Alphabet im kleineren Alphabet codiert, ohne die Eingabe verschieben zu müssen, was Zeit kosten würde .k N 2
Antworten:
Eine Teilantwort, wenn TM in läufto(|x|log|x|)
Wenn TM4 ein 4-Zeichen-TM ist (mit dem Alphabet ), das berechnet , dh entscheidet Sprache inΣ4={ϵ,0,1,2} f:{0,1}∗→{0,1} L={x|f(x)=1} (o(|x|log|x|))
Eine ist1DLIN=1DTime(O(n))
Also ist regulär und ist offensichtlich immer noch regulär über das AlphabetL Σ3={ϵ,0,1}
Es gibt also einen DFA, der über L entscheidet und nur Symbole in . Ein Ein-Band-TM3 mit drei Symbolen kann direkt aus dem DFA erstellt werden und entscheidet über L unter Verwendung des gleichen ungepolsterten Eingangs des ursprünglichen TM4 .Σ3
... Sie können es nicht direkt aus TM4 erstellen, aber TM3 existiert.
Wenn TM4 in wird, können Sie die Eingabe verschieben und eine direkte Konvertierung von TM4 nach TM3 vornehmen.Ω(n2)
Wie in den Kommentaren bemerkt, ist der schwierige Fall, wenn TM4 unter .Ω(nlogn)∩o(n2)
(1) Hennie, One-Tape, Offline-Turing-Maschinenberechnungen (1965)
(2) Kobayashi, Über die Struktur der nichtdeterministischen Turing-Maschinen-Zeithierarchie auf einem Band (1985)
quelle
Für alle Alphabetgrößen größer als ändern sich die Laufzeiten nur um einen konstanten Faktor, da für alle .1 logk(x)∈Θ(logl(x)) k,l>1 Ausarbeitung:In Zeitschritten kann die angenommene Turing-Maschine höchstens Positionen / Bits verarbeiten. Die Bits stammen aus einem jährigen Alphabet, wlog . Erstellen Sie eine neue Turing-Maschine, indem Sie jeden Übergang durch Übergänge . Jedes alte Bit wird durch Bits in codiert (Leerzeichen sind reserviert, um nicht verwendete Zellen zu markieren). Beachten Sie, dass dies im Wesentlichen binär codierte Ziffern sind.Offensichtlich führt die resultierende Turing-Maschine höchstens Schritten aus.⌈log2(k)⌉⋅t∈O(t)
Zusatz: Die obige Argumentation bricht ab, da Operationen, die ein Eingabesymbol mit einem Bit überschreiben, das nicht in ist, nicht direkt übersetzt werden können. der eingang muss verschoben werden. Dies kann geändert werden, indem die ursprüngliche Eingabe vor dem Start der Berechnung übersetzt wird (im Wesentlichen Auffüllen). Dies kann in der Zeit , was zu einer Gesamtlaufzeit von .O ( n 2 ) O ( n 2 ) + ⌈ log 2 ( k ) ⌉ ⋅ t{0,1} O(n2) O(n2)+⌈log2(k)⌉⋅t
Folglich hat die Verwendung von nur zwei Symbolen zur Codierung von Zwischenergebnissen keine asymptotische Auswirkung, wenn , aber die Vorverarbeitung dominiert schnellere Algorithmen. Da sich die interessantesten Funktionen in (z. B. das Hinzufügen von zwei Zahlen), kann man das Problem als vernachlässigbar betrachten.Ω ( n 2 )t(n)∈Ω(n2) Ω(n2)
quelle