Las máquinas de mostrador con dos o más contadores suelen ser equivalentes a las máquinas de Turing en cursos sobre teoría de la computación. Sin embargo, no he visto un análisis formal de qué idiomas puede reconocer una máquina de un contador. ¿Son estos lenguajes equivalentes a los lenguajes libres de contexto (quizás por alguna construcción inteligente que los relaciona con PDA), o son una clase de lenguajes completamente diferentes?
computability
automata
templatetypedef
fuente
fuente
Respuestas:
Un autómata de un contador es un autómata push down con solo un símbolo permitido en la pila (más un símbolo de fondo fijo). Los idiomas reconocidos por los autómatas de un contador forman un subconjunto adecuado de los idiomas libres de contexto.
Por ejemplo, un autómata de 1 contador puede reconocer el idioma que no es regular, pero no puede reconocer el idioma { a n b m a m b n } que está libre de contexto y puede ser reconocido por un contador 2 autómatas también.{ anortesinorte} { anortesimetrounmetrosinorte}
Si k-DCA es un autómata determinista de contador k, y k-NCA es un autómata no determinista de contador k, entonces tenemos las siguientes inclusiones adecuadas:
DFA (idiomas normales) 1-DCA ⊂ 2-DCA⊂ ⊂
1-DCA 1-NCA⊂
Si no permitimos las transiciones (cambiar a tiempo real ), entonces k-DCA ⊂ k'-DCA para k <k '.ϵ ⊂
Solo para completar: hay idiomas que están libres de contexto pero no pueden ser reconocidos por los autómatas de contador (k-DCA con k 2) (por ejemplo { w w R } ), y los idiomas reconocidos por los autómatas de contador que no están libres de contexto (para ejemplo { a n b n c n } ). Un contador de autómatas (en particular un autómata de dos contadores) puede completarse solo si su entrada y salida están codificadas correctamente (consulte la entrada de Wikipedia para más detalles).≥ { w wR} { anortesinorteCnorte}
fuente
Los contra autómatas fueron muy estudiados en el antiguo lenguaje formal en el pasado, en el contexto de la teoría AFA y AFL (familias abstractas de autómatas e idiomas) por equipos estadounidenses y franceses (Ginsberg, Greibach, ..., Nivat, Berstel, ...)
Los autómatas de contador generalmente se definen como autómatas de estado finito equipados con memoria externa, que consta de un número natural (o varios si tiene más de un contador). Este número puede incrementarse, disminuirse y (generalmente) probarse para cero. Un cálculo comienza con cero y solo se acepta cuando el contador es cero al final, comparable a la aceptación de la pila vacía.
Si dicha máquina tiene al menos dos de esos contadores, entonces es equivalente a una máquina de Turing, incluso en el caso determinista. La prueba de este hecho es de Minsky y se puede encontrar en el artículo de Wikipedia que ha vinculado. El modelo, por supuesto, está relacionado con la máquina de registro mencionada en la misma página de Wikipedia. Los problemas de codificación mencionados en el artículo de wikipedia no son importantes en esta configuración aquí, ya que consideramos los autómatas con una cinta de entrada (después de todo, tenemos que leer una cadena de entrada) mientras que wikipedia en esta página solo asume contadores.
Este contador de autómatas puede verse como un tipo especial de pda, que tiene un solo símbolo de pila y un fondo de pila (que nunca se mueve). Esto permite que el autómata pruebe si el contador / pila es cero y actúa en consecuencia.
De hecho, hay tres tipos de autómatas de contador. Así que combine los resultados sabiamente o terminará con contradicciones (como me sucedió en el pasado). Los tres tipos se incluyen (estrictamente) en los idiomas sin contexto para un contador.
El tipo anterior almacena un número entero (o un número natural, eso no importa) y puede probar su contenido desde cero. Los autómatas de contador ciego almacenan un número entero pero no pueden probar cero. Sin embargo, pueden contar explícitamente por debajo de cero. Los autómatas de contador parcialmente ciegos no pueden probar cero, pero almacenan un número natural. Si la máquina intenta ir por debajo de cero, se detiene sin aceptar. Este es un tipo de almacenamiento natural para modelar redes de Petri. También está relacionado con el PDA, ahora con un único símbolo de pila sin el marcador inferior especial (y, por lo tanto, el problema de la prueba de cero: simplemente nos quedamos atascados al hacer estallar el último elemento de la pila). A veces, los nombres de las familias definidas por los modelos de contador de resistencia son OCL, ROCL y 1-BLIND.
Como ejemplo de investigación relevante, Latteux etal tiene un documento no trivial "La familia de los idiomas de un contador está cerrado bajo el cociente" (que en realidad se trata de ROCL).
fuente