Linguaggi unari riconosciuti da contatori automatici deterministici a due vie


17

Gli automi deterministici a due vie a un contatore ( 2dca) (Petersen, 1994) sono in grado di riconoscere il seguente linguaggio unario:

POWER={02nn0}.

Esiste un altro linguaggio unario non banale riconosciuto da 2dca?

Si noti che non è ancora noto se i 2dca possano riconoscere ?SQUARE={0n2n0}


DEFINIZIONE: un 2dca è un automa finito deterministico a due vie con un contatore. Un 2dca può verificare se il valore del contatore è zero o meno e incrementare o decrementare il valore del contatore di 1 in ogni passaggio.


3
Potresti aggiungere un link a una definizione di un 2DCA?
Suresh Venkat,

3
@SureshVenkat: ho aggiunto un riferimento e anche una definizione.
Abuzer Yakaryilmaz,

1
@AbuzerYakaryilmaz: per ogni fisso può riconoscere { 0 k n : n 0 }k{0kn:n0}
Marzio De Biasi

@MarzioDeBiasi: l'algoritmo per può essere facilmente generalizzato a P O W E R k = { 0 k nn 0 } , dove k 3 . Pertanto, queste lingue sono abbastanza banali per me. POWERPOWERk={0knn0}k3
Abuzer Yakaryilmaz,

1
Hm, in effetti penso che in questo modo finisca con la stessa osservazione di ciò che Marzio ha già fatto, quindi niente di nuovo in quello che ho detto. Sono comunque interessato a sapere se è necessario leggere il marker più di un numero limitato di volte.
domotorp,

Risposte:


6

Questa è solo un'idea che mi è venuta in mente durante la lettura di Marvin L. Minsky, "Insolvibilità ricorsiva del problema dei tag di Post e altri argomenti in Theory of Turing Machines"; in particolare il famoso teorema Ia:

Teorema Ia: possiamo rappresentare qualsiasi funzione ricorsiva parziale da un programma che opera su due numeri interi S 1 e S 2 usando le istruzioni I j dei moduli: (i) AGGIUNGI 1 a S j e vai a I j 1 ( ii) SUBTRATTO 1 da S j , se S j0 e vai a I j 1 , altrimenti vai a I j 2 Cioè, possiamo costruire un tale programma che inizia con S 1f(n)S1S2ioj
Sjioj1
SjSj0ioj1ioj2
e S 2 = 0 e infine si ferma con S 1 = 2 f ( n ) e S 2 = 0S1=2nS2=0S1=2f(n)S2=0

Se hai un DFA a due vie con un contatore su un nastro (semi) infinito in cui l'input è dato in modo unario: il DFA può:$12n000 ...

  1. leggere l'input unario (e memorizzarlo nel contatore);
  2. lavorare sulla parte del nastro e utilizzare la distanza da 1 s come secondo contatore.01

così può simulare una macchina completa a due contatori di Turing.

Ora, se si dispone di una funzione ricorsiva che viene eseguita nel tempo T ( n ) su una macchina Turing standard, un DFA a due vie con un contatore che inizia sul nastro finito $ 1 m $f(n)T(n) $1m$(dove e T ( n ) T ( n ) ) può:m=2n3T'(n)T'(n)»T(n)

  1. leggere l'input unario (e memorizzarlo nel contatore);
  2. ritorna al simbolo più a sinistra;
  3. dividere il contatore per 3 fino a quando il contatore contiene in questo modo: andare a destra in loop dagli stati q z 0 , q z 1 , q z 2 e sottrarre 1; se il contatore raggiunge 0 nello stato q z 0 vai al simbolo più a sinistra aggiungendo +1 e continua il ciclo di divisione, altrimenti aggiungi 1 (se nello stato q z 1 ) o 2 (se nello stato q z 2 ) e vai al simbolo più a sinistra aggiungendo + 3 (ovvero recuperare il valore precedente del contatore non divisibile per 3) e procedere con il passaggio 4 .;2nqz0,qz1,qz2qz0qz1qz2
  4. a questo punto il contatore contiene ;2n
  5. calcola usando lo spazio T ( n ) disponibile a destra come secondo contatore (il valore del secondo contatore è la distanza dal simbolo più a sinistra $ ).2f(n)T(n)$

Quindi, con la speciale codifica di input descritta sopra che gli dà abbastanza spazio sul nastro finito, un DFA a due vie con un contatore e un alfabeto unario può calcolare ogni funzione ricorsiva.

Se l'approccio è corretto, sarebbe interessante ragionare su come scegliere o quando è abbastanza per prendere una grande dispari k » 2 e codificare l'ingresso come 1 m , m = 2 n k nT(n)T(n)k21mm=2nkn


-1

Per non banale, suppongo che intendi una lingua L che non può essere accettata da un 1dca. Qui sembra essere una tale lingua:

CENTRO = {w | w è superiore a {0,1} * e w = x1y per alcuni x, y tali che | x | = | y |}

Questa lingua non può essere accettata da 1dca, ma PU CAN essere accettata da 1nca. Può essere accettato da un 2dca. I dettagli sono lasciati come esercizio.


2
Il PO chiede lingue unarie (il contributo è dato in )$1n$
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.