Im Zusammenhang mit dieser Frage stellte sich mir die Frage : Wie viel Zeit benötigt eine Single-Tape-Single-Head-Turing-Maschine, um die Länge ihrer Eingabe zu berechnen? Angenommen, das Bandalphabet ist , die Eingabe ist eine Zeichenfolge in die von Leerzeichen umgeben ist. Die Maschine beginnt am linken Eingabesymbol und muss bei enden Das Symbol ganz links in (ebenfalls von Leerzeichen umgeben), das die binäre Darstellung der Eingabelänge angibt. Dies kann auch als das Problem angesehen werden, eine Zahl von unär nach binär umzuwandeln.
Es ist einfach, dies auf einem Zwei-Band-Computer oder einem Zwei-Kopf-Computer in linearer Zeit zu lösen (scannen Sie einfach die Eingabe mit einem Kopf, während Sie den anderen Kopf zum wiederholten Inkrementieren eines Zählers verwenden; Inkrementieren ist eine konstant amortisierte Zeitoperation). Die Einzelkopflösungen, die ich finden kann, sind jedoch nur (z. B. durch wiederholtes Inkrementieren eines Zählers und anschließendes Verschieben um eine Position entlang des Bandes). Gibt es eine passende Untergrenze?
Ich habe einige Suchanfragen durchgeführt, aber Ausdrücke wie "ein Kopf" und "Eingabelänge" sind so verbreitet, dass es schwierig ist, in der Literatur nach bekannten Ergebnissen zu diesem Problem zu suchen.
quelle
Antworten:
Es kann nicht in der Zeit berechnet werden .o(nlgn)
Sei eine Maschine, bei der eine eingegebene Zeichenfolge x mit der Größe von x stoppt, die binär auf das Band geschrieben ist.M x x
Wir können einen einfachen DFA (mit linearer Zeit im Nullraum) zu hinzufügen , um zu überprüfen, ob die Größe der Eingabe eine Zweierpotenz ist: Überprüfen Sie einfach, ob das erste Bit 1 und der Rest Null ist.M
Nehmen wir an, dass die Zeit o ( n lg n ) hat . Dann können wir in der Zeit o ( n lg n ) entscheiden, dass die Größe der Eingabe eine Potenz von zwei ist. Mit anderen Worten ist die folgende Sprache in D T i m e ( n lg n ) bestimmbar . L = { 0 i ∣ ∃ k i = 2 k } Es folgt aus D T i m e (M o ( n lgn ) o ( nlgn ) D T i m e (n lgn )
quelle