Langages unaires reconnus par les contre-automates déterministes bidirectionnels


17

Les automates déterministes bidirectionnels à un compteur de 2dca (Petersen, 1994) peuvent reconnaître le langage unaire suivant:

POWER={02nn0}.

Existe-t-il une autre langue unaire non triviale reconnue par 2dca?

Remarquez qu'on ne sait toujours pas si les 2dca peuvent reconnaître ?SQUUNERE={0n2n0}


DÉFINITION: Un 2dca est un automate fini déterministe bidirectionnel avec un compteur. Un 2dca peut tester si la valeur du compteur est zéro ou non, et incrémenter ou décrémenter la valeur du compteur de 1 à chaque étape.


3
Pourriez-vous ajouter un lien vers une définition d'un 2DCA?
Suresh Venkat

3
@SureshVenkat: J'ai ajouté une référence et aussi une définition.
Abuzer Yakaryilmaz

1
@AbuzerYakaryilmaz: pour chaque fixe, il peut reconnaître { 0 k n : n 0 }k{0kn:n0}
Marzio De Biasi

@MarzioDeBiasi: L'algorithme pour peut être facilement généralisé à P O W E R k = { 0 k nn 0 } , où k 3 . Par conséquent, ces langues sont assez triviales pour moi. POWERPOWERk={0knn0}k3
Abuzer Yakaryilmaz

1
Hm, en fait, je pense que de cette façon, je me retrouve à la même observation que Marzio a déjà fait, donc rien de nouveau dans ce que j'ai dit. Je suis toujours intéressé cependant à savoir si nous devons lire l'endmarker plus d'un nombre limité de fois.
domotorp

Réponses:


6

Ce n'est qu'une idée qui m'est venue à l'esprit en lisant Marvin L. Minsky, «Insolvabilité récursive du problème de tag de Post et d'autres sujets de la théorie des machines de Turing»; en particulier le célèbre théorème Ia:

Théorème Ia: On peut représenter toute fonction récursive partielle par un programme fonctionnant sur deux entiers S 1 et S 2 en utilisant les instructions I j des formes: (i) ADD 1 à S j , et aller à I j 1 ( ii) SOUSTRAIRE 1 de S j , si S j0 et aller à I j 1 , sinon aller à I j 2 Autrement dit, nous pouvons construire un tel programme qui commence par S 1f(n)S1S2Ij
SjIj1
SjSj0Ij1Ij2
et S 2 = 0 et finit par s'arrêter avec S 1 = 2 f ( n ) et S 2 = 0S1=2nS2=0S1=2f(n)S2=0

Si vous avez un DFA bidirectionnel avec un compteur sur une bande (semi) infinie où l'entrée est donnée en unaire: alors le DFA peut:$12n000...

  1. lire l'entrée unaire (et la stocker dans le compteur);
  2. travailler sur la partie de la bande et utiliser la distance des 1 s comme deuxième compteur.01

il peut donc simuler une machine complète à deux compteurs Turing.

Maintenant, si vous avez une fonction récursive qui s'exécute dans le temps T ( n ) sur une machine de Turing standard, un DFA bidirectionnel avec un compteur qui démarre sur la bande finie $ 1 m $f(n)T(n) $1m$(où et T ( n ) T ( n ) ) peut:m=2n3T(n)T(n)T(n)

  1. lire l'entrée unaire (et la stocker dans le compteur);
  2. retourner au symbole le plus à gauche;
  3. divisez le compteur par 3 jusqu'à ce que le compteur contienne de cette manière: allez à droite en boucle à partir des états q z 0 , q z 1 , q z 2 et soustrayez 1; si le compteur atteint 0 dans l'état q z 0 aller au symbole le plus à gauche en ajoutant +1 et continuer la boucle de division, sinon ajouter 1 (si dans l'état q z 1 ) ou 2 (si dans l'état q z 2 ) et aller au symbole le plus à gauche en ajoutant + 3 (c'est-à-dire récupérer la valeur précédente du compteur non divisible par 3) et passer à l'étape 4;2nqz0,qz1,qz2qz0qz1qz2
  4. à ce stade, le compteur contient ;2n
  5. calculer utilisant l' espace T ( n ) disponible à droite comme deuxième compteur (la valeur du deuxième compteur est la distance du symbole le plus à gauche $ ).2f(n)T(n)$

Ainsi, avec l'encodage d'entrée spécial décrit ci-dessus qui lui donne suffisamment d'espace sur la bande finie, un DFA bidirectionnel avec un compteur et un alphabet unaire peut calculer chaque fonction récursive.

Si l'approche est correcte, il serait intéressant de raisonner sur la façon de choisir ou quand il suffit de choisir un grand k 2 impair et de coder l'entrée comme 1 m , m = 2 n k nT(n)T(n)k21mm=2nkn


-1

Par non trivial, je suppose que vous entendez un langage L qui ne peut pas être accepté par un 1dca. Voici un tel langage:

CENTRE = {w | w est supérieur à {0,1} * et w = x1y pour certains x, y tels que | x | = | y |}

Cette langue ne peut pas être acceptée par 1dca, mais PEUT être acceptée par 1nca. Il peut être accepté par un 2dca. Les détails sont laissés comme exercice.


2
L'OP demande des langues unaires (l'entrée est donnée comme )$1n$
Marzio De Biasi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.