Czy ten język jest rozpoznawalny po 3 symbolach TM w O (n log n)?

10

Bawiłem się bardzo interesującym i wciąż otwartym pytaniem „ Alfabet maszyny Turinga na jedną taśmę ” (autor: Emanuele Viola) i wymyśliłem następujący język:

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

gdzie jest liczbą s w ciągu x.1count1(x)1

Na przykład, jeśli x = 01101111, to n = 8, m = 3, k = 2; więcxL

Czy L może zostać rozpoznany przez maszynę Turinga z pojedynczą taśmą i 3 symbolami alfabetu w krokach ? {ϵ,0,1}O(nlogn)

Jeśli użyjemy 4 symboli, odpowiedź brzmi tak:

  • sprawdź, czy zastępuje s i s a jednocześnie zapisz s po prawej stronie;|x|=2m0ϵ12m 1
  • następnie policz liczbę s modulo w .2mO(nlogn)

Na przykład:

....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
źródło
Jeśli to liczba naturalna reprezentowana przez x niż c o u n t 1 ( x ) jest zawsze równe 1, a więc L = { 10 } ? |x|=n=2)mxdoount1(x)1L={10}
Marc Bury,
Przepraszam | x | oznacza długość łańcucha x. Przykład: x = 01101111, n = 8, m = 3, k = 2, a zatem xL.
Marzio De Biasi
1
Nawiasem mówiąc, jest to doskonały kandydat na pytanie Emanuele, ponieważ jest w : nie jest regularny przez lemat pompujący, więc nie może być o ( n log n ) , ale jest O ( n log n ) . Θ(nlogn)o(nlogn)O(nlogn)
Joshua Grochow

Odpowiedzi:

10

Czy nie możesz użyć tego samego pomysłu, co masz w przypadku 4 symboli , z następującymi modyfikacjami:

  • Zawsze przetwarzaj parę symboli jednocześnie.
  • W przeciągnięciach „div 2” zaznacz blok dwóch symboli jako „przetworzony” przez mapowanie . Nadal masz ϵ ϵ dostępny jako „separator”, którego możesz używać na obu końcach, i możesz łatwo odzyskać oryginalne dane.(00,01,10,11)(ϵ0,ϵ1,0ϵ,1ϵ)ϵϵ
  • Użyj podobnej sztuczki dla kroków „mod 2”.

O(1)

Jukka Suomela
źródło
Masz rację! ... teraz podejrzewam, że odpowiedź na pytanie Emanuele'a brzmi „tak”, ale wciąż jest otwarta, więc prawdopodobnie nie jest to zbyt łatwe, aby udowodnić to formalnie :-( Dzięki!
Marzio De Biasi