Questa lingua è riconoscibile da una TM a 3 simboli in O (n log n)?


10

Stavo giocando con l'interessantissima e ancora aperta domanda " Alphabet of single-tape Turing machine " (di Emanuele Viola) e mi è venuta in mente la seguente lingua:

L={X{0,1}n st |X|=n=2m e count1(X)=K*m;n,m,K1}

dove è il numero di 1 s nella stringa x.count1(X)1

Ad esempio, se x = 01101111, allora n = 8, m = 3, k = 2; così XL

L può essere riconosciuto da una macchina di Turing con un singolo nastro e un alfabeto di 3 simboli nei passaggi O ( n log n ) ? {ε,0,1}O(nlogn)

Se utilizziamo 4 simboli la risposta è sì:

  • controlla se sostituendo 0 s con ϵ e 1 s con 2 e allo stesso tempo memorizza m 1 s a destra;|X|=2m0ε12m 1
  • quindi contare il numero di s modulo m in O ( n log n ) .2mO(nlogn)

Per esempio:

....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

Se è il numero naturale rappresentato da x di c o u n t 1 ( x ) è sempre uguale a 1 e quindi L = { 10 } ? |X|=n=2mXcount1(X)1L={10}
Marc Bury,

Spiacente | x | indica la lunghezza della stringa x. Un esempio: x = 01101111, n = 8, m = 3, k = 2, e quindi XL
Marzio De Biasi

1
A proposito, questo è un ottimo candidato per la domanda di Emanuele, poiché è in : non è regolare dal lemma di pompaggio, quindi non può essere o ( n log n ) , ma è O ( n log n ) . Θ(nlogn)o(nlogn)O(nlogn)
Joshua Grochow,

Risposte:


10

Non puoi usare la stessa idea di quello che hai per il caso di 4 simboli , con le seguenti modifiche:

  • Elaborare sempre una coppia di simboli contemporaneamente.
  • Negli sweep "div 2", contrassegnare un blocco di due simboli come "elaborato" mappando . Hai ancora ϵ ϵ disponibile come "separatore" che puoi utilizzare ad entrambe le estremità e puoi recuperare facilmente i dati originali.(00,01,10,11)(ε0,ε1,0ε,1ε)εε
  • Usa un trucco simile per i passaggi "mod 2".

In generale, è possibile spremere una quantità arbitrariamente grande di informazioni contabili con l'aiuto del terzo simbolo elaborando i simboli alla volta.O(1)


Hai ragione! ... ora sospetto che la risposta alla domanda di Emanuele sia sì ... ma è ancora aperta, quindi probabilmente non è troppo facile dimostrarlo formalmente :-( Grazie!
Marzio De Biasi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.