Un autómata finito (KA) en la teoría de los algoritmos es una abstracción matemática , un modelo de un dispositivo discreto que tiene una entrada, una salida y está en un estado entre muchos posibles en un momento dado. Es un caso especial de un autómata discreto abstracto , cuyo número de estados internos posibles es finito .
Durante el funcionamiento, las acciones de entrada se reciben secuencialmente en la entrada del SC y en la salida, el SC genera señales de salida. Por lo general, bajo las influencias de entrada, la entrada del autómata se acepta como la entrada de símbolos de un alfabeto , y la salida del KA en el proceso de operación da símbolos en el caso general de un diferente, tal vez incluso sin intersección con el entrada, alfabeto.
Además de los autómatas finitos, también hay infinitos autómatas discretos: autómatas con un número infinito de estados internos, por ejemplo, una máquina de Turing .
La transición de un estado interno de la nave espacial a otro puede ocurrir no solo por influencias externas, sino también espontáneamente.
Hay autómatas KA deterministas, en los que el siguiente estado está determinado únicamente por el estado actual y la salida depende solo del estado actual y la entrada actual, y KA no deterministas , cuyo siguiente estado es generalmente indeterminado y, en consecuencia , la señal de salida no está definida. Si la transición a estados subsiguientes ocurre con ciertas probabilidades, dicha CA se denomina CA probabilística .
Cualquier sistema digital, por ejemplo, computadoras o algunos nodos lógicos de computadoras con disparadores de memoria y otros dispositivos , pueden servir como ejemplos de la implementación física de KA . La lógica secuencial combinacional no puede ser una CA, ya que no tiene estados internos (no tiene memoria).
Desde un punto de vista abstracto, CA estudia una parte de las matemáticas discretas : la teoría de los autómatas finitos .
La teoría de los autómatas finitos se usa ampliamente en la práctica, por ejemplo, en analizadores y lexers , pruebas de software basadas en modelos .
Formalmente, el CA se define como cinco elementos ordenados de algunos conjuntos:
donde es un conjunto finito de estados de autómatas; son los alfabetos finales de entrada y salida, respectivamente, a partir de los cuales se forman cadenas que el autómata lee y emite; - función de transición; es la función de las salidas.Un autómata abstracto con algún estado seleccionado (este estado se llama estado inicial ) se llama autómata inicial . Dado que cada KA tiene un número finito de estados, y cualquiera de sus estados se puede asignar como estado inicial, el mismo autómata corresponde a los autómatas iniciales, es decir, el número de estados internos del KA. Así, una CA abstracta define una familia de autómatas iniciales. Si no se especifica el estado inicial, entonces el comportamiento del autómata siempre es no determinista, la palabra de salida del autómata depende del estado inicial, por lo que la descripción determinista completa del autómata será [1] :
Hay dos clases de KA: autómatas de Moore - KA, en los que la señal de salida depende solo del estado interno, según la figura, el autómata de Moore no tiene conexión desde la entrada a la función de salida , y los autómatas Mealy - la señal de salida depende tanto del estado interno como del estado de la entrada.
Hay varias formas de especificar el algoritmo para el funcionamiento de un autómata finito. Por ejemplo, un autómata finito se puede definir como cinco elementos ordenados de algunos conjuntos :
donde está el alfabeto de entrada (un conjunto finito de símbolos de entrada ), a partir del cual se forman las palabras de entrada , percibidas por el autómata finito; es el conjunto de estados internos ; — estado inicial ; - un conjunto de estados finales o finales ; es una función de transición definida como un mapeo tal que , es decir, el valor de la función de transición en un par ordenado (estado, símbolo de entrada o cadena vacía de símbolos) es el conjunto de todos los estados a los que es posible una transición desde un estado dado para un símbolo de entrada dado o una cadena vacía de símbolos, generalmente denotada por la letraAl analizar CA, se acostumbra suponer que el autómata finito comienza en algún estado inicial , recibe secuencialmente un carácter de la palabra de entrada (una cadena de caracteres de entrada). El carácter de lectura puede transferir el autómata a un nuevo estado o no transferir a un nuevo estado de acuerdo con la función de transición.
Al recibir una cadena de entrada de caracteres y hacer transiciones de estado a estado, el autómata después de recibir el último carácter[ aclarar ] la palabra de entrada estará en algún estado .
Si este estado es final, se dice que el autómata ha aceptado la palabra[ aclarar ]
Estado inicial |
siguiente estado | ||
---|---|---|---|
Introduzca el carácter a |
Introduzca el carácter b |
Cualquier otro personaje | |
p0 | p1 | p0 | p0 |
p1 | p1 | p2 | p1 |
p2 | p3 | p4 | p2 |
p3 | p3 | p5 | p3 |
p4 | p4 | p4 | p4 |
p5 | p3 | p5 | p5 |
Las máquinas de estado se dividen en deterministas y no deterministas .
Si consideramos el caso en que el autómata se especifica formalmente de la siguiente manera: , donde es el conjunto de estados iniciales del autómata, tal que , entonces aparece el tercer signo de no determinismo: la presencia de varios estados iniciales (de partida) para el autómata .
teorema de determinación afirma que para cualquier máquina de estados finitos se puede construir una máquina de estados finitos determinista equivalente (se dice que dos máquinas de estados finitos son equivalentes si sus lenguajes son los mismos[ claro ] ). Sin embargo, dado que el número de estados en el DFA equivalente crece exponencialmente en el peor de los casos con el crecimiento del número de estados del NFA original, en la práctica tal determinación no siempre es posible. Además, los autómatas finitos con salida son generalmente indeterministas.
Debido a las dos últimas observaciones, a pesar de la mayor complejidad de los autómatas finitos no deterministas, son los NFA los que se utilizan principalmente para tareas relacionadas con el procesamiento de textos. .
Para un autómata finito, es posible definir un lenguaje (un conjunto de palabras) en el alfabeto que permite , es decir, se llaman las palabras cuya lectura traslada al autómata del estado inicial a uno de los estados finales.
El teorema de Kleene establece que un lenguaje es regular si y solo si lo permite alguna máquina de estado utilizada en ese lenguaje.
Para cualquier lenguaje regular, existe un autómata único, salvo isomorfismo , que acepta este lenguaje y tiene el menor número posible de estados. El autómata mínimo para un lenguaje dado por un autómata finito determinista se puede implementar en tiempo polinomial, lo que permite optimizar el consumo de memoria necesario para trabajar con el autómata, así como resolver problemas como comprobar la equivalencia de dos autómatas en tiempo polinomial .
En el lenguaje gráfico SFC, un programa se describe como una secuencia esquemática de pasos conectados por transiciones.
Los autómatas finitos le permiten construir modelos de sistemas de procesamiento paralelo, sin embargo, para cambiar la cantidad de procesos paralelos en dicho modelo, debe realizar cambios significativos en el modelo mismo. Además, un intento de desarrollar un modelo complejo implementado por un autómata finito conduce a un rápido aumento en el número de estados del autómata, lo que eventualmente hará que el desarrollo de dicho modelo lleve mucho tiempo. Como se señaló anteriormente, el último problema se puede resolver utilizando un autómata no determinista.
La respuesta se da en diferentes términos dependiendo de si el autómata (respectivamente, la máquina P) es autónomo o no [2] . Un autómata finito autónomo, a partir de un cierto ciclo, solo puede generar una secuencia periódica de estados x (respectivamente, una máquina P es una secuencia de símbolos de salida y ). Si esta secuencia consta de un solo símbolo, significa que el autómata alcanza un estado de equilibrio en un número finito de ciclos. Si esta secuencia contiene varios símbolos, esto significa que el autómata pasa sucesivamente por los estados correspondientes a estos símbolos, y luego la operación del autómata se repite periódicamente indefinidamente. Además, cualquiera que sea la secuencia periódica de estados de longitud finita, siempre se puede construir un autómata finito autónomo que, a partir del segundo ciclo, genere esta secuencia. Nada más, excepto la repetición periódica del mismo estado o una secuencia finita de estados, el autómata autónomo puede "hacer". Sin embargo, debido al hecho de que la ejecución secuencial de un ciclo dado de operaciones es típica de muchas áreas de la tecnología moderna, los sistemas dinámicos que, en una idealización aceptable, pueden considerarse como un autómata autónomo, son ampliamente utilizados.
Un ejemplo clásico son los autómatas títeres que realizan secuencias complejas de acciones, por ejemplo: escribir un determinado texto en un papel, tocar obras preestablecidas en el piano, etc.
Un ejemplo moderno son muchas máquinas automáticas, líneas automáticas y sistemas de control automático para la producción cíclica. Si el autómata no es autónomo, es decir, el estado de la entrada cambia de un ciclo a otro, entonces la respuesta a la pregunta de qué puede “hacer” y qué no puede “hacer” un autómata finito se puede dar en diferentes términos. Por ejemplo, la respuesta se puede formular en un lenguaje de representación de eventos. De hecho, un autómata finito no autónomo o una máquina secuencial solo transforma secuencias de caracteres de entrada en secuencias de caracteres de estado o de salida, y decir lo que un autómata finito puede y no puede "hacer" es averiguar qué transformaciones de secuencia son posibles en un autómata finito y que son imposibles. Pero dado que el número de estados (respectivamente, símbolos de salida) es finito, esta pregunta es equivalente a la siguiente pregunta: ¿en qué secuencias de entrada ocurre cada uno de los estados posibles (o cada uno de los símbolos de salida)? Esta última pregunta, en términos aceptados en la teoría de los autómatas finitos, se formula de la siguiente manera: qué eventos pueden y qué no pueden ser representados en un autómata finito por cada uno de los estados posibles (o por cada uno de los símbolos de salida).
La respuesta la dan los teoremas de Kleene . Esta respuesta es correcta, ya que los teoremas de Kleene establecen condiciones necesarias y suficientes para la representabilidad de una secuencia de eventos en un autómata, a saber: se distinguen conjuntos especiales de secuencias de símbolos de entrada - conjuntos regulares . El hecho de que aparezca una secuencia de entrada de tal conjunto se denomina evento regular correspondiente. Los teoremas de Kleene establecen que en un autómata finito solo se pueden representar eventos regulares. Así, en el lenguaje de la representación de eventos, la respuesta a la pregunta de qué puede “hacer” un autómata finito se da de manera inequívoca: un autómata finito solo puede representar eventos regulares. Un número importante de conjuntos de secuencias de entrada, con los que uno tiene que lidiar a menudo en la práctica, son obviamente regulares. Entonces, por ejemplo, se sabe que un conjunto que consta de cualquier número finito de secuencias de entrada de longitud finita es regularmente regular; el conjunto de cualquier secuencia de entrada periódica; un conjunto de secuencias infinitas que contiene secuencias finitas dadas durante los últimos ciclos, etc.
En el caso general, si se da un conjunto infinito de secuencias de entrada de alguna manera arbitraria, entonces queda abierta la cuestión de si este conjunto es regular. El punto es que el concepto de conjunto regular se introduce inductivamente, es decir, se establece un algoritmo para construir cualquier conjunto regular. Sin embargo, no existe una forma suficientemente eficiente de resolver el problema inverso, es decir, de determinar si cada conjunto dado es regular.
Aunque los teoremas de Kleene responden a la pregunta de qué puede hacer una máquina de estado, responden a esta pregunta de manera ineficiente. Se han hecho los primeros intentos de construir otros lenguajes en los que se pueda dar la respuesta de manera efectiva. Este problema del lenguaje, que juega un papel cardinal para obtener una respuesta efectiva a la pregunta de qué puede y qué no puede "hacer" un autómata finito, es también crucial para las primeras etapas de la síntesis de autómatas, es decir, para responder a la segunda de las preguntas anteriores. Si ampliamos la clase de sistemas dinámicos, que hemos definido con los términos "autómata finito" y "máquina secuencial", incluyendo la memoria infinita (el modelo de memoria infinita puede ser, por ejemplo, una cinta infinita para almacenar símbolos o una número infinito de estados), entonces para los sistemas dinámicos de esta clase más amplia (los sistemas abstractos de esta clase se llaman máquinas de Turing ) la respuesta a la pregunta "¿qué pueden hacer?" mucho más simple: pueden implementar cualquier algoritmo predefinido . Al mismo tiempo, el concepto mismo de algoritmo se interpreta en las matemáticas modernas como una implementación del cálculo de los valores de cualquier función recursiva . Una respuesta tan inequívoca y clara a la pregunta "¿qué puede hacer una máquina de Turing?" permite poner el concepto de máquina de Turing como base para la definición del concepto de algoritmo: un algoritmo es cualquier proceso que puede llevarse a cabo en un autómata finito complementado con memoria infinita, es decir, máquinas algorítmicamente completas, en una máquina de Turing, en una máquina de Post , etc.
Lenguajes formales y gramáticas formales | |
---|---|
Conceptos generales | |
tipo 0 | |
Tipo 1 |
|
Tipo 2 | |
Tipo 3 |
|
analizando |
En catálogos bibliográficos |
---|