Quelles langues sont reconnues par les machines à guichet unique?

15

Les machines de comptage avec deux compteurs ou plus sont généralement équivalentes aux machines de Turing dans les cours sur la théorie du calcul. Cependant, je n'ai pas vu d'analyse formelle des langues pouvant être reconnues par une machine à guichet unique. Ces langues sont-elles équivalentes aux langues sans contexte (peut-être par une construction intelligente les reliant aux PDA), ou s'agit-il d'une classe de langues entièrement différente?

templatetypedef
la source
2
Ce livre: books.google.co.uk/books/about/… de Jean Berstel aborde en détail les langues à guichet unique et d'autres sous-ensembles de langues sans contexte, mais il a tendance à être très difficile à réaliser retrouvez-en une copie.
Sam Jones
1
@SamJones En effet, le célèbre livre Transductions and Context-Free Languages de Jean Berstel est épuisé. L'auteur a mis à disposition une version électronique des chapitres les plus importants du livre. www-igm.univ-mlv.fr/~berstel/LivreTransductions/…
Hendrik Jan

Réponses:

11

Un automate à un compteur est un automate push down avec un seul symbole autorisé sur la pile (plus un symbole fixe en bas). Les langues reconnues par un automate de compteur forment un sous-ensemble approprié des langues sans contexte.

Par exemple, un automate à 1 compteur peut reconnaître la langue qui n'est pas régulière, mais ne peut pas reconnaître la langue qui est sans contexte et peut être également reconnu par un automate à 2 compteurs.{unenbn}{unenbmunembn}

Si k-DCA est un automate à compteur k déterministe et k-NCA est un automate à compteur k non déterministe, alors nous avons les inclusions appropriées suivantes:

DFA (langues régulières) - 1-DCA - 2-DCA

1-DCA - 1-NCA

Si nous n'autorisons pas les transitions (passer en temps réel ), alors k-DCA - k'-DCA pour k <k '.ϵ

Juste pour l'achèvement: il y a des langues qui sont sans contexte mais ne peuvent pas être reconnues par des compteurs automatiques (k-DCA avec k 2) (par exemple ), et des langues reconnues par des compteurs automatiques qui ne sont pas du contexte gratuit (par exemple ). Un compteur d'automates (en particulier deux automates à compteur) ne peut être complet de Turing que si ses entrées et sorties sont correctement codées (voir l'entrée Wikipedia pour plus de détails).{wwR}{unenbncn}

Vor
la source
questions: (1) les langues reconnues par les compteurs automatiques qui ne sont pas sans contexte vous voulez dire pas régulières? (2) existe-t-il une hiérarchie pour DCA? Pourquoi? Ne sont-ils pas tous équivalents à Turing (quand ). k2
Hendrik Jan
(1) non je veux dire "qui ne sont pas sans contexte" (choisissez simplement un langage contextuel correctement encodé qui peut être reconnu par ak> 1 compteur machine) (2) vous avez raison, la hiérarchie se réfère au DCA en temps réel (j'ai corrigé la réponse)
Vor
Il me semble me souvenir qu'il existe des différences entre les compteurs qui ne sont pas bornés dans les deux sens, et tels que "bottom out" à zéro?
Raphael
7

Les contre-automates ont été très étudiés dans le passé ancien du langage formel, dans le cadre de la théorie AFA et AFL (familles abstraites d'automates & langages) par des équipes américaines et françaises (Ginsberg, Greibach, ..., Nivat, Berstel, ...)

Les automates de compteur sont généralement définis comme des automates à états finis équipés de mémoire externe, consistant en un nombre naturel (ou plusieurs si vous avez plusieurs compteurs). Ce nombre peut être incrémenté, décrémenté et (généralement) testé pour zéro. Un calcul commence par zéro et n'est accepté que lorsque le compteur est nul à la fin, comparable à l'acceptation de pile vide de refoulement.

Si une telle machine a au moins deux compteurs de ce type, elle est équivalente à une machine de Turing, même dans le cas déterministe. La preuve de ce fait est par Minsky et peut être trouvée dans l'article wikipedia que vous avez lié. Le modèle est bien sûr lié à la machine d'enregistrement mentionnée dans la même page wikipedia. Les problèmes de codage mentionnés dans l'article de wikipedia ne sont pas importants dans ce paramètre ici car nous considérons les automates avec une bande d'entrée (après tout, nous devons lire une chaîne d'entrée) alors que wikipedia sur cette page ne suppose que des compteurs.

Ce compteur automate peut être vu comme un type spécial de pda, ayant un seul symbole de pile et un bas de pile (qui n'est jamais déplacé). Cela permet à l'automate de tester si le compteur / pile est nul et d'agir en conséquence.

Il existe en fait trois types de contre-automates. Combinez donc les résultats à bon escient ou vous vous retrouvez avec des contradictions (comme cela m'est arrivé dans le passé). Les trois types sont (strictement) inclus dans les langages sans contexte pour un compteur.

Le type ci-dessus stocke un entier (ou un nombre naturel, peu importe) et peut tester son contenu à zéro. Les automates de compteurs aveugles stockent un entier mais ne peuvent pas tester zéro. Ils peuvent cependant compter sous zéro. Les contre-automates partiellement aveugles ne peuvent pas tester zéro, mais stockent un nombre naturel. Si la machine essaie de descendre en dessous de zéro, elle s'arrête sans accepter. Il s'agit d'un type de stockage naturel pour modéliser les filets de Petri. Il est également associé au PDA, maintenant avec un seul symbole de pile sans le marqueur inférieur spécial (et donc le problème du test de zéro: nous restons coincés lorsque nous éclatons le dernier élément de la pile). Parfois, les noms des familles définies par les modèles de compteur respactif sont OCL, ROCL et 1-BLIND.

(c)={w{une,b}#une(w)=#b(w)}unebc

À titre d'exemple de recherche pertinente, Latteux et al ont un article non trivial "La famille des langues à guichet unique est fermée sous quotient" (qui concerne en fait ROCL).

Hendrik Jan
la source