Ist diese Sprache an 3 Symbolen TM in O (n log n) erkennbar?

10

Ich habe mit der sehr interessanten und noch offenen Frage " Alphabet der Single-Tape-Turing-Maschine " (von Emanuele Viola) gespielt und mir folgende Sprache ausgedacht:

L={x{0,1}n s.t. |x|=n=2m and count1(x)=km;n,m,k1}

Dabei ist die Anzahl von 1 s in der Zeichenfolge x.count1(x)1

Wenn zum Beispiel x = 01101111 ist, dann ist n = 8, m = 3, k = 2; also xL

Kann L von einer Turingmaschine mit einem einzelnen Band und einem 3-Symbol-Alphabet in Schritten von O ( n log n ) erkannt werden? {ϵ,0,1}O(nlogn)

Wenn wir 4 Symbole verwenden, lautet die Antwort ja:

  • Überprüfen Sie, ob 0 s durch ϵ und 1 s durch 2 ersetzen und gleichzeitig m 1 s rechts speichern ;|x|=2m0ϵ12m 1
  • Zählen Sie dann die Anzahl von s Modulo m in O ( n log n ) .2mO(nlogn)

Zum Beispiel:

....01101111....... input x  (|x| = 8 = 2^3)
000.021.1212.0001.. div 2, first sweep (000. can safely be used as a delimiter)
000.022.1222.00011. div 2, second sweep
000.022.2222.000111 div 2, third sweep --> m = 3 (= log(n) )
000..22.2222....111 cleanup (original 1s are preserved as 2)
000..22.2221102.... start modulo m=3 calculation
000..22.2210022.... mod 3 = 2
000..22.2000222.... mod 3 = 0
000..22.0012222.... mod 3 = 1
000..20112.2222.... mod 3 = 2
000..11122.2222.... ACCEPT
Marzio De Biasi
quelle
|x|=n=2mxcount1(x)1L={10}
xL
1
Θ(nlogn)o(nlogn)O(nlogn)

Antworten:

10

Können Sie nicht die gleiche Idee wie für den Fall von 4 Symbolen mit den folgenden Änderungen verwenden:

  • Verarbeiten Sie immer zwei Symbole gleichzeitig.
  • (00,01,10,11)(ϵ0,ϵ1,0ϵ,1ϵ)ϵϵ
  • Verwenden Sie einen ähnlichen Trick für "Mod 2" -Schritte.

O(1)

Jukka Suomela
quelle
Du hast recht! ... jetzt vermute ich, dass die Antwort auf Emanueles Frage ja ist ... aber sie ist noch offen, so dass es wahrscheinlich nicht allzu einfach ist, sie formal zu beweisen :-( Danke!
Marzio De Biasi