fbpx
Wikipedia

Autómata finito

Sistema combinacionalAutómata finitoAutómata con pilaMáquina de TuringTeoría de autómatas


Un autómata finito (AF) o máquina de estado finito es un modelo computacional que realiza cómputos en forma automática sobre una entrada para producir una salida.

Este modelo está conformado por un alfabeto, un conjunto de estados finito, una función de transición, un estado inicial y un conjunto de estados finales. Su funcionamiento se basa en una función de transición, que recibe a partir de un estado inicial una cadena de caracteres pertenecientes al alfabeto (la entrada), y que va leyendo dicha cadena a medida que el autómata se desplaza de un estado a otro, para finalmente detenerse en un estado final o de aceptación, que representa la salida.

La finalidad de los autómatas finitos es la de reconocer lenguajes regulares, que corresponden a los lenguajes formales más simples según la Jerarquía de Chomsky.

Historia

 
El modelo neuronal de McCulloch-Pitts también utiliza diagramas con estados y transiciones, además de los conceptos de entrada y salida.

El origen de los autómatas finitos probablemente se remonta a su uso implícito en máquinas electromecánicas, desde principios del siglo XX.[1]​ Ya en 1907, el matemático ruso Andréi Márkov formalizó un proceso llamado cadena de Markov, donde la ocurrencia de cada evento depende con una cierta probabilidad del evento anterior.[2]​ Esta capacidad de "recordar" es utilizada posteriormente por los autómatas finitos, que poseen una memoria primitiva similar, en que la activación de un estado también depende del estado anterior, así como del símbolo o palabra presente en la función de transición.

Posteriormente, en 1943, surge una primera aproximación formal de los autómatas finitos con el modelo neuronal de McCulloch-Pitts. Durante la década de 1950 prolifera su estudio, frecuentemente llamándoseles máquinas de secuencia; se establecen muchas de sus propiedades básicas, incluyendo su interpretación como lenguajes regulares y su equivalencia con las expresiones regulares.[1]​ Al final de esta década, en 1959, surge el concepto de autómata finito no determinista en manos de los informáticos teóricos Michael O. Rabin y Dana Scott.[3]

En la década de 1960 se establece su conexión con las series de potencias y los sistemas de sobreescritura.[4]​ Finalmente, con el desarrollo del sistema operativo Unix en la década de 1970, los autómatas finitos encuentran su nicho en el uso masivo de expresiones regulares para fines prácticos, específicamente en el diseño de analizadores léxicos (comando lex) y la búsqueda y reemplazo de texto (comandos ed y grep).[5]​ A partir de ese tiempo, los autómatas finitos también se comienzan a utilizar en sistemas dinámicos.[1]

Definición formal

Formalmente, un autómata finito es una 5-tupla (Q, Σ, q0, δ, F) donde:[6]

  •   es un conjunto finito de estados;
  •   es un alfabeto finito;
  •   es el estado inicial;
  •   es una función de transición;
  •   es un conjunto de estados finales o de aceptación.

Representación como diagramas de estados

 
Este autómata finito está definido sobre el alfabeto Σ={0,1}, posee dos estados s1 y s2, y sus transiciones son δ(s1,0)=s2, δ(s1,1)=s1, δ(s2,0)=s1 y δ(s2,1)=s2. Su estado inicial es s1, que es también su único estado final.

Los autómatas finitos se pueden representar mediante grafos particulares, también llamados diagramas de estados finitos, de la siguiente manera:

  • Los estados Q se representan como vértices, etiquetados con su nombre en el interior.
  • Una transición δ desde un estado a otro, dependiente de un símbolo del alfabeto, se representa mediante una arista dirigida que une a estos vértices, y que está etiquetada con dicho símbolo.
  • El estado inicial q0 se caracteriza por tener una arista que llega a él, proveniente de ningún otro vértice.
  • El o los estados finales F se representan mediante vértices que están encerrados a su vez por otra circunferencia.

Representación como tabla de transiciones

Otra manera de describir el funcionamiento de un autómata finito es mediante el uso de tablas de transiciones o matrices de estados. Dos posibles tablas para el ejemplo de la imagen anterior podrían ser las siguientes:

salida
q ∈ Q
símbolo
σ ∈ Σ
llegada
δ(q,σ) ∈ Q
s1 0 s2
s1 1 s1
s2 0 s1
s2 1 s2
0 1
→*s1 s2 s1
s2 s1 s2



La primera representa explícitamente los parámetros y el valor que toma cada ocurrencia de la función de transición.[7]​ La segunda es más compacta, y marca con una flecha el estado inicial, y con un asterisco los estados finales.

Funcionamiento

 
El esquema general es el de una cinta lectora que avanza sólo hacia delante y de a una celda, según la función de transición.

En el comienzo del proceso de reconocimiento de una cadena de entrada, el autómata finito se encuentra en el estado inicial y a medida que procesa cada símbolo de la cadena va cambiando de estado de acuerdo a lo determinado por la función de transición. Cuando se ha procesado el último de los símbolos de la cadena de entrada, el autómata se detiene en el estado final del proceso. Si el estado final en el que se detuvo es un estado de aceptación, entonces la cadena pertenece al lenguaje reconocido por el autómata; en caso contrario, la cadena no pertenece a dicho lenguaje.

Note que el estado inicial   de un autómata finito siempre es único, en tanto que los estados finales pueden ser más de uno, es decir, el conjunto   puede contener más de un elemento. También puede darse el caso de que un estado final corresponda al mismo estado inicial.

Generalización de la función de transición

Si Σ es un alfabeto, entonces se denota Σ* al conjunto de todas las cadenas de caracteres o palabras que se pueden conformar con dicho alfabeto.

Una función de transición δ se puede generalizar a una función δ*, que opera sobre estados y secuencias de símbolos, en lugar de símbolos individuales del alfabeto. Así, esta nueva función de transición se define  , permitiendo caracterizar los autómatas de manera más abreviada y sin perder expresividad.[6]

La función δ* puede expresarse también de manera recursiva, definiendo para toda cadena x ∈ Σ*, todo símbolo a ∈ Σ, y un estado qQ:[6]

  •  , que es la base inductiva, siendo ε la cadena vacía, y
  •  , que es la inducción propiamente tal.

Se llama configuración de un autómata finito a un "instante" en el cómputo de la máquina; es decir, al estado actual en que se encuentra dicho cómputo, junto con la palabra que ha sido procesada hasta ese momento. Formalmente, se define como un par ordenado (q, x) ∈ Q × Σ*. De este modo, se puede definir además la configuración inicial del autómata, como el par (q0,x), donde x es la entrada; y la configuración final, como el par (q,ε), con qF.

De este modo, el lenguaje regular aceptado por un autómata finito A puede denotarse como L(A) = {w; δ*(q0,w)∈ F}, es decir, como el conjunto de todas las configuraciones iniciales que conllevan a estados finales.

Autómata finito determinista

 
AFD que reconoce el lenguaje regular conformado exclusivamente por las cadenas con un número par de ceros y par de unos.

Un autómata finito determinista (abreviado AFD) es un autómata finito que además es un sistema determinista; es decir, para cada estado qQ en que se encuentre el autómata, y con cualquier símbolo a ∈ Σ del alfabeto leído, existe siempre a lo más una transición posible δ(q,a).

En un AFD no pueden darse ninguno de estos dos casos:

  • Que existan dos transiciones del tipo δ(q,a)=q1 y δ(q,a)=q2, siendo q1q2;
  • Que existan transiciones del tipo δ(q, ε), salvo que q sea un estado final, sin transiciones hacia otros estados.

Un tipo interesante de autómatas finitos deterministas son los llamados acíclicos y un ejemplo de estos son los tries.

Autómata finito no determinista

 
AFND con transiciones δ(q0,b)=q0 y δ(q0,b)=q1, que acepta el lenguaje regular sobre el alfabeto {a,b} conformado por todas las palabras que terminan en b; es decir, que equivale a la expresión regular (a|b)*b+.
 
AFND-ε a cuyo estado 2 se puede acceder pasando por el estado 3, sin procesar símbolos de entrada.

Un autómata finito no determinista (abreviado AFND) es aquel que, a diferencia de los autómatas finitos deterministas, posee al menos un estado qQ, tal que para un símbolo a ∈ Σ del alfabeto, existe más de una transición δ(q,a) posible.

Haciendo la analogía con los AFDs, en un AFND puede darse cualquiera de estos dos casos:

  • Que existan transiciones del tipo δ(q,a)=q1 y δ(q,a)=q2, siendo q1q2;
  • Que existan transiciones del tipo δ(q, ε), siendo q un estado no-final, o bien un estado final, pero con transiciones hacia otros estados.

Cuando se cumple el segundo caso, se dice que el autómata es un autómata finito no determinista con transiciones vacías o transiciones ε (abreviado AFND-ε). Estas transiciones permiten al autómata cambiar de estado sin procesar ningún símbolo de entrada.

Formalmente, se distingue de la 5-tupla que define a un autómata finito determinista en su función de transición. Mientras en un AFD esta función se define de la siguiente manera:

 

en un AFND se define como:

 

Para el caso de los AFND-ε, se suele expresar la función de transición de la forma:

 

donde P(Q) es el conjunto potencia de Q.

Esto significa que los autómatas finitos deterministas son un caso particular de los no deterministas, puesto que Q pertenece al conjunto P(Q).

La interpretación que se suele hacer en el cómputo de un AFND es que el autómata puede estar en varios estados a la vez, generándose una ramificación de las configuraciones existentes en un momento dado. Otra interpretación puede ser imaginar que la máquina "adivina" a qué estado debe ir, eligiendo una transición entre varias posibles.

Note finalmente que en un autómata finito no determinista podemos aceptar la existencia de más de un nodo inicial, relajando aún más la definición original.

Equivalencias entre autómatas finitos

Se dice que dos autómatas finitos son equivalentes, si ambos reconocen el mismo lenguaje regular.

Toda expresión regular (que define a su vez un lenguaje regular) puede ser expresada como un autómata finito determinista,[8]​ y viceversa.[9]​ Dada una expresión regular, es posible construir un AFND-ε que reconozca dicho lenguaje, por ejemplo mediante el algoritmo de Thompson. Luego, todo AFND-ε puede transformarse en un AFND equivalente, así como todo AFND puede transformarse en un AFD equivalente, mediante el método llamado construcción de conjunto potencia. Así, por transitividad, para cualquier autómata finito no determinista siempre existe un autómata finito determinista equivalente, y viceversa.[3]

Normalmente en el diseño de autómatas finitos, lo primero que se hace es construir un AFND-ε, que es el más sencillo de construir, por poseer menos restricciones en su función de transiciones. Luego dicho autómata se reduce a un AFND, y finalmente a un AFD, el cual por sus características deterministas ya puede ser implementado sin problemas utilizando un lenguaje de programación.

Conversión de un AFND-ε a un AFND

La conversión de un AFND-ε en un AFND se basa en el concepto de clausura-ε, que corresponde a una clausura transitiva contextualizada en la teoría de autómatas.

Dado un estado q, se llama clausura-ε(q) al conjunto de todos los estados a los que se puede acceder a partir de q, procesándose a lo más un único símbolo de la entrada. Puede definirse recursivamente de la siguiente manera:[10]

  • (Base inductiva) Para todo estado q, q ∈ clausura-ε(q).
  • (Inducción) Dados dos estados p y r, si p ∈ clausura-ε(q) y r ∈ δ(p,ε), entonces r ∈ clausura-ε(q).

El algoritmo para eliminar las transiciones vacías es el siguiente:

  1. Se calcula la clausura-ε del estado inicial, formándose un conjunto A que corresponderá al estado inicial del nuevo autómata.
  2. Para cada símbolo del alfabeto, se verifican los estados alcanzables a partir de algún estado contenido en A, y se calcula la clausura-ε de dichos estados alcanzables. Si dichas clausuras producen nuevos conjuntos distintos de A, estos serán nuevos estados a los que se accederá a partir de A y del símbolo correspondiente.
  3. Se repite lo anterior para cada nuevo conjunto, hasta que no existan transiciones posibles para ningún símbolo del alfabeto.
Ejemplo
Eliminación de las transiciones vacías de un AFND-ε.
 
AFND-ε inicial.
 
En este caso se obtiene un AFD, que es un caso particular de AFND.

En el ejemplo de la figura, se tendrá inicialmente:

clausura-ε(1) = {1,2,3,4,6} = A
Para A:
Para el símbolo a: 4 va a 5, y clausura-ε(5) = {5,7} = B.
Para el símbolo b: no existen transiciones posibles.
Para B:
Para el símbolo a: no existen transiciones posibles.
Para el símbolo b: 5 va a 6, y clausura-ε(6) = {6} = C.
Para C:
Para el símbolo a: no existen transiciones posibles.
Para el símbolo b: no existen transiciones posibles.

Con esto concluye el algoritmo y se obtiene el autómata de la figura.

En algunos casos puede ocurrir que al quitar las transiciones épsilon obtengamos directamente un AFD, pues la única razón de no-determinismo era justamente la presencia de dichas transiciones.

Conversión de un AFND a un AFD

Conversión de un AFND a un AFD.
 
AFND inicial.
 
Proceso de conversión.
 
AFD final.

Todo AFND (QN, Σ, q0, δN, FN) puede convertirse en un AFD (QD, Σ, q0, δD, FD) equivalente, que mantiene el alfabeto Σ y el estado inicial q0 originales. La conversión implica pasar por un AFD intermedio con estados y transiciones redundantes, que al no ser accesibles a partir del estado inicial, son eliminados para obtener el AFD definitivo.

Para definir el AFD intermedio, se deben seguir los siguientes pasos:

  1. Primero se redefine el conjunto de estados QN = {q0, q1, ..., qm} original, como uno conformado por todos los subconjuntos de QN. Los nuevos estados finales serán todos aquellos estados que contengan a alguno de los estados finales originales.
  2. Posteriormente, se redefine el conjunto de transiciones original, por transiciones del tipo δD(S,a), donde a∈Σ, y S es la unión de todos los estados q de QN para los cuales existía la transición δN(q,a).
  3. Por último, se eliminan los estados inaccesibles o inalcanzables (junto con sus transiciones de salida), es decir, aquellos a los que no se puede acceder a partir del estado inicial. Luego de esta depuración, se obtiene el AFD final.
Ejemplo

En las figuras de ejemplo, como el AFND inicial posee tres estados (q0, q1, q2), entonces el AFD intermedio poseerá siete ({q0}, {q1}, {q2}, {q0, q1}, {q0, q2}, {q1, q2}, {q0, q1, q2}), y como el estado final original era q2, entonces los estados finales del AFD intermedio son {q2}, {q0, q2}, {q1, q2} y {q0, q1, q2}. Con respecto a las nuevas transiciones, note por ejemplo que se mantuvo la transición δN(q0,1)=q0, siendo ahora llamada δD({q0},1)={q0}; sin embargo, dado que originalmente se daba que δN(q0,0)=q0 y δN(q0,0)=q1, ahora estas dos transiciones fueron reemplazadas por δD({q0},0)={q0, q1}. Para terminar, note que los estados {q1}, {q2} y {q1, q2} no están conectados con el resto del autómata que posee el estado inicial; por tanto, son eliminados. Asimismo es eliminado también {q0, q1, q2}, pues a pesar de estar conectado con el resto del autómata, no es accesible a partir de {q0}. Así finalmente, eliminando estos cuatro estados, así como sus respectivas transiciones, se obtiene el AFD buscado.

Minimización de un AFD

Dos estados de un autómata finito determinista son estados equivalentes si al unirse en un solo estado, pueden reconocer el mismo lenguaje regular que si estuviesen separados. Esta unión de estados implica la unión tanto de sus transiciones de entrada como de salida. Si dos estados no son equivalentes, se dice que son estados distinguibles. Un estado final con un estado no-final nunca serán equivalentes.

Un AFD está minimizado, si todos sus estados son distinguibles y alcanzables. Un algoritmo de minimización de AFD es el siguiente:

  1. Eliminar los estados inaccesibles del autómata.
  2. Construir una tabla con todos los pares (p, q) de estados restantes.
  3. Marcar en la tabla aquellas entradas donde un estado es final y el otro es no-final, es decir, aquellos pares de estados que son claramente distinguibles.
  4. Para cada par (p, q) y cada símbolo a del alfabeto, tal que r = δ(p,a) y s = δ(q,a):
    1. Si (r, s) ya ha sido marcado, entonces p y q también son distinguibles, por lo tanto marcar la entrada (p, q).
    2. De lo contrario, colocar (p, q) en una lista asociada a la entrada (r, s).
  5. Agrupar los pares de estados no marcados.

Luego del tercer paso, si la tabla creada queda completamente marcada, entonces el AFD inicial ya era mínimo.

La complejidad computacional del problema de minimizar un AFD es polinomial. De hecho, existen algoritmos más eficientes aún que el mostrado en este artículo (aunque menos intuitivos).[11]​ Sin embargo, el problema de minimizar un autómata finito no determinista es NP-completo y PSPACE-completo.[12][13]

Ejemplo
Minimización de un AFD.
 
AFD con estados redundantes.
 
AFD minimizado.

En la primera figura del ejemplo, se muestra un autómata con el estado inaccesible d, el cual puede eliminarse inmediatamente. Luego se construye la tabla de pares de estados, y a continuación se marcan, de acuerdo a la tercera línea del algoritmo, las filas y columnas correspondientes a los estados finales c y g, salvo la celda que representa el par (c,g), puesto que al ser ambos estados finales, pueden ser estados equivalentes. Posteriormente, se marcan las celdas restantes de acuerdo a la cuarta línea del algoritmo, notando que el par (b, f) queda asociado con el par (c, g), y así finalmente se obtiene el autómata final, agrupando los estados b y f, así como c y g, tal y como se muestra en la segunda figura del ejemplo.

Tablas para la búsqueda de estados equivalentes
b
c
e
f
g
a b c e f
            
b
c
e
f
g
a b c e f
            
b
c
e
f
g
a b c e f

Generalizaciones de autómatas finitos

 
Ejemplo de Máquina de Mealy, un tipo de transductor de estados finitos, que generaliza los autómatas finitos.

Existen diversas generalizaciones posibles de hacer sobre los autómatas finitos, para aumentar su uso y expresividad. Así, por ejemplo, se definen los transductores de estados finitos como autómatas finitos que están dotados además de un alfabeto de salida, distinto al de entrada, y que pueden poseer más de un estado inicial.[14]​ Las máquinas de Moore y máquinas de Mealy son conocidos ejemplos de transductores, que se utilizan sobre todo para modelar sistemas secuenciales.[15][16]

Es incluso posible aumentar el poder de cómputo de un autómata finito, permitiendo un alfabeto adicional sobre éste, que actúe sobre una memoria de tipo pila para ser considerada en cada transición. Esta es la idea utilizada por los llamados autómatas con pila, los cuales son capaces de reconocer lenguajes libres de contexto, que están un nivel por sobre los lenguajes regulares en la Jerarquía de Chomsky.[17]

Véase también

Referencias

  1. Wolfram, Stephen (2002). «Starting From Randomness». A New Kind of Science (en inglés). Wolfram Media. p. 958. Consultado el 31 de marzo de 2010. 
  2. Basharin, Gely P.; Langville, Amy N.; Naumov, Valeriy A. (2004). «The Life and Work of A. A. Markov». Linear Algebra and its Applications (en inglés) 386: 3-26. Consultado el 31 de marzo de 2010. 
  3. Rabin, Michael O.; Scott, Dana (1959). «Finite automata and their decision problems». IBM Journal of Research and Development (en inglés) (IBM Corp. Riverton, NJ, USA) 3 (2): 114-125. ISSN 0018-8646. Consultado el 5 de abril de 2010. 
  4. Wolfram, Stephen (2002). A New Kind of Science (en inglés). Wolfram Media. p. 893. Consultado el 31 de marzo de 2010. 
  5. Thompson, Ken (1968). «Programming Techniques: Regular expression search algorithm». Communications of the ACM (en inglés) 11 (6): 419-422. Consultado el 1 de abril de 2010. 
  6. Chakraborty, Samarjit (17 de marzo de 2003). «Formal Languages and Automata Theory. Regular Expressions and Finite Automata». Computer Engineering and Networks Laboratory. Swiss Federal Institute of Technology (ETH) Zürich (en inglés): 17. Consultado el 30 de marzo de 2010. 
  7. Brena, Ramón (2003). «Autómatas y Lenguajes. Un enfoque de diseño». Tecnológico de Monterrey, México: 205. Consultado el 31 de marzo de 2010. 
  8. Berry, G.; Sethi, R. (1987). «From regular expressions to deterministic automata». TCS: Theoretical Computer Science (en inglés) 48: 117-126. Consultado el 1 de abril de 2010. 
  9. Neumann, Christoph (2005). Converting Deterministic Finite Automata to Regular Expressions (en inglés). Consultado el 1 de abril de 2010. 
  10. van Noord, Gertjan (2000). «Treatment of epsilon moves in subset construction». Computational Linguistics (en inglés) (MIT Press. Cambridge, MA, USA) 26 (1): 61-76. ISSN 0891-2017. Consultado el 5 de abril de 2010. 
  11. Hopcroft, John E. (1971). «An n log n algorithm for minimizing states in a finite automaton». Theory of Machines and Computations (en inglés) (Academic Press, Nueva York): 189-196. Consultado el 9 de abril de 2010. 
  12. Jiang, Tai; Ravikumar, B. (1993). «Minimal NFA problems are hard». SIAM Journal on Computing (en inglés) (Society for Industrial and Applied Mathematics Philadelphia, PA, Estados Unidos) 22 (6): 1117-1141. ISSN 0097-5397. Consultado el 9 de abril de 2010. 
  13. Malcher, Andreas (2004). «Minimizing finite automata is computationally hard». Theoretical Computer Science (en inglés) (Elsevier Science Publishers Ltda. Essex, Reino Unido) 327 (3): 375-390. ISSN 0304-3975. Consultado el 5 de abril de 2010. 
  14. Koskenniemi, Kimmo (1984), , Morristown, NJ, Estados Unidos: Association for Computational Linguistics, pp. 178-181, archivado desde el original el 14 de junio de 2006, consultado el 10 de abril de 2010 .
  15. Moore, Edward F. (1956). «Gedanken-experiments on Sequential Machines». Automata Studies, Annals of Mathematical Studies (en inglés) (Princeton, N.J.: Princeton University Press) (34): 129-153. Consultado el 10 de abril de 2010. 
  16. Mealy, George H. (1955). «A Method for Synthesizing Sequential Circuits». Bell Systems Technical Journal (en inglés) 34: 1045-1079. 
  17. Hopcroft, John E.; Ullman, Jeffrey D. (1969), Formal languages and their relation to automata, Boston, MA, Estados Unidos: Addison-Wesley Longman Publishing Co., Inc., p. 262, consultado el 10 de abril de 2010 .

Bibliografía

  • Hopcroft, John; Motwani, Rajeev; Ullman, Jeffrey D. (2001). Introduction to Automata Theory, Languages, and Computation (en inglés). Massachusetts, Estados Unidos: Addison-Wesley. Consultado el 30 de marzo de 2010. 
  •   Datos: Q176452
  •   Multimedia: Finite state machine

autómata, finito, autómata, finito, máquina, estado, finito, modelo, computacional, realiza, cómputos, forma, automática, sobre, entrada, para, producir, salida, este, modelo, está, conformado, alfabeto, conjunto, estados, finito, función, transición, estado, . Un automata finito AF o maquina de estado finito es un modelo computacional que realiza computos en forma automatica sobre una entrada para producir una salida Este modelo esta conformado por un alfabeto un conjunto de estados finito una funcion de transicion un estado inicial y un conjunto de estados finales Su funcionamiento se basa en una funcion de transicion que recibe a partir de un estado inicial una cadena de caracteres pertenecientes al alfabeto la entrada y que va leyendo dicha cadena a medida que el automata se desplaza de un estado a otro para finalmente detenerse en un estado final o de aceptacion que representa la salida La finalidad de los automatas finitos es la de reconocer lenguajes regulares que corresponden a los lenguajes formales mas simples segun la Jerarquia de Chomsky Indice 1 Historia 2 Definicion formal 2 1 Representacion como diagramas de estados 2 2 Representacion como tabla de transiciones 2 3 Funcionamiento 2 4 Generalizacion de la funcion de transicion 3 Automata finito determinista 4 Automata finito no determinista 5 Equivalencias entre automatas finitos 5 1 Conversion de un AFND e a un AFND 5 2 Conversion de un AFND a un AFD 5 3 Minimizacion de un AFD 6 Generalizaciones de automatas finitos 7 Vease tambien 8 Referencias 9 BibliografiaHistoria Editar El modelo neuronal de McCulloch Pitts tambien utiliza diagramas con estados y transiciones ademas de los conceptos de entrada y salida El origen de los automatas finitos probablemente se remonta a su uso implicito en maquinas electromecanicas desde principios del siglo XX 1 Ya en 1907 el matematico ruso Andrei Markov formalizo un proceso llamado cadena de Markov donde la ocurrencia de cada evento depende con una cierta probabilidad del evento anterior 2 Esta capacidad de recordar es utilizada posteriormente por los automatas finitos que poseen una memoria primitiva similar en que la activacion de un estado tambien depende del estado anterior asi como del simbolo o palabra presente en la funcion de transicion Posteriormente en 1943 surge una primera aproximacion formal de los automatas finitos con el modelo neuronal de McCulloch Pitts Durante la decada de 1950 prolifera su estudio frecuentemente llamandoseles maquinas de secuencia se establecen muchas de sus propiedades basicas incluyendo su interpretacion como lenguajes regulares y su equivalencia con las expresiones regulares 1 Al final de esta decada en 1959 surge el concepto de automata finito no determinista en manos de los informaticos teoricos Michael O Rabin y Dana Scott 3 En la decada de 1960 se establece su conexion con las series de potencias y los sistemas de sobreescritura 4 Finalmente con el desarrollo del sistema operativo Unix en la decada de 1970 los automatas finitos encuentran su nicho en el uso masivo de expresiones regulares para fines practicos especificamente en el diseno de analizadores lexicos comando lex y la busqueda y reemplazo de texto comandos ed y grep 5 A partir de ese tiempo los automatas finitos tambien se comienzan a utilizar en sistemas dinamicos 1 Definicion formal EditarFormalmente un automata finito es una 5 tupla Q S q0 d F donde 6 Q displaystyle Q es un conjunto finito de estados S displaystyle Sigma es un alfabeto finito q 0 Q displaystyle q 0 in Q es el estado inicial d Q S Q displaystyle delta colon Q times Sigma to Q es una funcion de transicion F Q displaystyle F subseteq Q es un conjunto de estados finales o de aceptacion Representacion como diagramas de estados Editar Este automata finito esta definido sobre el alfabeto S 0 1 posee dos estados s1 y s2 y sus transiciones son d s1 0 s2 d s1 1 s1 d s2 0 s1 y d s2 1 s2 Su estado inicial es s1 que es tambien su unico estado final Los automatas finitos se pueden representar mediante grafos particulares tambien llamados diagramas de estados finitos de la siguiente manera Los estados Q se representan como vertices etiquetados con su nombre en el interior Una transicion d desde un estado a otro dependiente de un simbolo del alfabeto se representa mediante una arista dirigida que une a estos vertices y que esta etiquetada con dicho simbolo El estado inicial q0 se caracteriza por tener una arista que llega a el proveniente de ningun otro vertice El o los estados finales F se representan mediante vertices que estan encerrados a su vez por otra circunferencia Representacion como tabla de transiciones Editar Articulo principal Tabla de transicion de estados Otra manera de describir el funcionamiento de un automata finito es mediante el uso de tablas de transiciones o matrices de estados Dos posibles tablas para el ejemplo de la imagen anterior podrian ser las siguientes salidaq Q simbolos S llegadad q s Qs1 0 s2s1 1 s1s2 0 s1s2 1 s2 0 1 s1 s2 s1s2 s1 s2La primera representa explicitamente los parametros y el valor que toma cada ocurrencia de la funcion de transicion 7 La segunda es mas compacta y marca con una flecha el estado inicial y con un asterisco los estados finales Funcionamiento Editar El esquema general es el de una cinta lectora que avanza solo hacia delante y de a una celda segun la funcion de transicion En el comienzo del proceso de reconocimiento de una cadena de entrada el automata finito se encuentra en el estado inicial y a medida que procesa cada simbolo de la cadena va cambiando de estado de acuerdo a lo determinado por la funcion de transicion Cuando se ha procesado el ultimo de los simbolos de la cadena de entrada el automata se detiene en el estado final del proceso Si el estado final en el que se detuvo es un estado de aceptacion entonces la cadena pertenece al lenguaje reconocido por el automata en caso contrario la cadena no pertenece a dicho lenguaje Note que el estado inicial q 0 displaystyle q 0 de un automata finito siempre es unico en tanto que los estados finales pueden ser mas de uno es decir el conjunto F displaystyle F puede contener mas de un elemento Tambien puede darse el caso de que un estado final corresponda al mismo estado inicial Generalizacion de la funcion de transicion Editar Si S es un alfabeto entonces se denota S al conjunto de todas las cadenas de caracteres o palabras que se pueden conformar con dicho alfabeto Una funcion de transicion d se puede generalizar a una funcion d que opera sobre estados y secuencias de simbolos en lugar de simbolos individuales del alfabeto Asi esta nueva funcion de transicion se define d Q S Q displaystyle delta colon Q times Sigma to Q permitiendo caracterizar los automatas de manera mas abreviada y sin perder expresividad 6 La funcion d puede expresarse tambien de manera recursiva definiendo para toda cadena x S todo simbolo a S y un estado q Q 6 d q ϵ q displaystyle delta q epsilon q que es la base inductiva siendo e la cadena vacia y d q x a d d q x a displaystyle delta q xa delta delta q x a que es la induccion propiamente tal Se llama configuracion de un automata finito a un instante en el computo de la maquina es decir al estado actual en que se encuentra dicho computo junto con la palabra que ha sido procesada hasta ese momento Formalmente se define como un par ordenado q x Q S De este modo se puede definir ademas la configuracion inicial del automata como el par q0 x donde x es la entrada y la configuracion final como el par q e con q F De este modo el lenguaje regular aceptado por un automata finito A puede denotarse como L A w d q0 w F es decir como el conjunto de todas las configuraciones iniciales que conllevan a estados finales Automata finito determinista Editar AFD que reconoce el lenguaje regular conformado exclusivamente por las cadenas con un numero par de ceros y par de unos Articulo principal Automata finito determinista Un automata finito determinista abreviado AFD es un automata finito que ademas es un sistema determinista es decir para cada estado q Q en que se encuentre el automata y con cualquier simbolo a S del alfabeto leido existe siempre a lo mas una transicion posible d q a En un AFD no pueden darse ninguno de estos dos casos Que existan dos transiciones del tipo d q a q1 y d q a q2 siendo q1 q2 Que existan transiciones del tipo d q e salvo que q sea un estado final sin transiciones hacia otros estados Un tipo interesante de automatas finitos deterministas son los llamados aciclicos y un ejemplo de estos son los tries Automata finito no determinista Editar AFND con transiciones d q0 b q0 y d q0 b q1 que acepta el lenguaje regular sobre el alfabeto a b conformado por todas las palabras que terminan en b es decir que equivale a la expresion regular a b b AFND e a cuyo estado 2 se puede acceder pasando por el estado 3 sin procesar simbolos de entrada Articulo principal Automata finito no determinista Un automata finito no determinista abreviado AFND es aquel que a diferencia de los automatas finitos deterministas posee al menos un estado q Q tal que para un simbolo a S del alfabeto existe mas de una transicion d q a posible Haciendo la analogia con los AFDs en un AFND puede darse cualquiera de estos dos casos Que existan transiciones del tipo d q a q1 y d q a q2 siendo q1 q2 Que existan transiciones del tipo d q e siendo q un estado no final o bien un estado final pero con transiciones hacia otros estados Cuando se cumple el segundo caso se dice que el automata es un automata finito no determinista con transiciones vacias o transiciones e abreviado AFND e Estas transiciones permiten al automata cambiar de estado sin procesar ningun simbolo de entrada Formalmente se distingue de la 5 tupla que define a un automata finito determinista en su funcion de transicion Mientras en un AFD esta funcion se define de la siguiente manera d Q S Q displaystyle delta Q times Sigma to Q en un AFND se define como d Q S P Q displaystyle delta Q times Sigma to mathcal P Q Para el caso de los AFND e se suele expresar la funcion de transicion de la forma d Q S ϵ P Q displaystyle delta Q times Sigma cup epsilon to mathcal P Q donde P Q es el conjunto potencia de Q Esto significa que los automatas finitos deterministas son un caso particular de los no deterministas puesto que Q pertenece al conjunto P Q La interpretacion que se suele hacer en el computo de un AFND es que el automata puede estar en varios estados a la vez generandose una ramificacion de las configuraciones existentes en un momento dado Otra interpretacion puede ser imaginar que la maquina adivina a que estado debe ir eligiendo una transicion entre varias posibles Note finalmente que en un automata finito no determinista podemos aceptar la existencia de mas de un nodo inicial relajando aun mas la definicion original Equivalencias entre automatas finitos EditarSe dice que dos automatas finitos son equivalentes si ambos reconocen el mismo lenguaje regular Toda expresion regular que define a su vez un lenguaje regular puede ser expresada como un automata finito determinista 8 y viceversa 9 Dada una expresion regular es posible construir un AFND e que reconozca dicho lenguaje por ejemplo mediante el algoritmo de Thompson Luego todo AFND e puede transformarse en un AFND equivalente asi como todo AFND puede transformarse en un AFD equivalente mediante el metodo llamado construccion de conjunto potencia Asi por transitividad para cualquier automata finito no determinista siempre existe un automata finito determinista equivalente y viceversa 3 Normalmente en el diseno de automatas finitos lo primero que se hace es construir un AFND e que es el mas sencillo de construir por poseer menos restricciones en su funcion de transiciones Luego dicho automata se reduce a un AFND y finalmente a un AFD el cual por sus caracteristicas deterministas ya puede ser implementado sin problemas utilizando un lenguaje de programacion Conversion de un AFND e a un AFND Editar La conversion de un AFND e en un AFND se basa en el concepto de clausura e que corresponde a una clausura transitiva contextualizada en la teoria de automatas Dado un estado q se llama clausura e q al conjunto de todos los estados a los que se puede acceder a partir de q procesandose a lo mas un unico simbolo de la entrada Puede definirse recursivamente de la siguiente manera 10 Base inductiva Para todo estado q q clausura e q Induccion Dados dos estados p y r si p clausura e q y r d p e entonces r clausura e q El algoritmo para eliminar las transiciones vacias es el siguiente Se calcula la clausura e del estado inicial formandose un conjunto A que correspondera al estado inicial del nuevo automata Para cada simbolo del alfabeto se verifican los estados alcanzables a partir de algun estado contenido en A y se calcula la clausura e de dichos estados alcanzables Si dichas clausuras producen nuevos conjuntos distintos de A estos seran nuevos estados a los que se accedera a partir de A y del simbolo correspondiente Se repite lo anterior para cada nuevo conjunto hasta que no existan transiciones posibles para ningun simbolo del alfabeto EjemploEliminacion de las transiciones vacias de un AFND e AFND e inicial En este caso se obtiene un AFD que es un caso particular de AFND En el ejemplo de la figura se tendra inicialmente clausura e 1 1 2 3 4 6 APara A Para el simbolo a 4 va a 5 y clausura e 5 5 7 B Para el simbolo b no existen transiciones posibles dd Para B Para el simbolo a no existen transiciones posibles Para el simbolo b 5 va a 6 y clausura e 6 6 C dd Para C Para el simbolo a no existen transiciones posibles Para el simbolo b no existen transiciones posibles dd dd Con esto concluye el algoritmo y se obtiene el automata de la figura En algunos casos puede ocurrir que al quitar las transiciones epsilon obtengamos directamente un AFD pues la unica razon de no determinismo era justamente la presencia de dichas transiciones Conversion de un AFND a un AFD Editar Articulo principal Construccion de subconjuntos Conversion de un AFND a un AFD AFND inicial Proceso de conversion AFD final Todo AFND QN S q0 dN FN puede convertirse en un AFD QD S q0 dD FD equivalente que mantiene el alfabeto S y el estado inicial q0 originales La conversion implica pasar por un AFD intermedio con estados y transiciones redundantes que al no ser accesibles a partir del estado inicial son eliminados para obtener el AFD definitivo Para definir el AFD intermedio se deben seguir los siguientes pasos Primero se redefine el conjunto de estados QN q0 q1 qm original como uno conformado por todos los subconjuntos de QN Los nuevos estados finales seran todos aquellos estados que contengan a alguno de los estados finales originales Posteriormente se redefine el conjunto de transiciones original por transiciones del tipo dD S a donde a S y S es la union de todos los estados q de QN para los cuales existia la transicion dN q a Por ultimo se eliminan los estados inaccesibles o inalcanzables junto con sus transiciones de salida es decir aquellos a los que no se puede acceder a partir del estado inicial Luego de esta depuracion se obtiene el AFD final EjemploEn las figuras de ejemplo como el AFND inicial posee tres estados q0 q1 q2 entonces el AFD intermedio poseera siete q0 q1 q2 q0 q1 q0 q2 q1 q2 q0 q1 q2 y como el estado final original era q2 entonces los estados finales del AFD intermedio son q2 q0 q2 q1 q2 y q0 q1 q2 Con respecto a las nuevas transiciones note por ejemplo que se mantuvo la transicion dN q0 1 q0 siendo ahora llamada dD q0 1 q0 sin embargo dado que originalmente se daba que dN q0 0 q0 y dN q0 0 q1 ahora estas dos transiciones fueron reemplazadas por dD q0 0 q0 q1 Para terminar note que los estados q1 q2 y q1 q2 no estan conectados con el resto del automata que posee el estado inicial por tanto son eliminados Asimismo es eliminado tambien q0 q1 q2 pues a pesar de estar conectado con el resto del automata no es accesible a partir de q0 Asi finalmente eliminando estos cuatro estados asi como sus respectivas transiciones se obtiene el AFD buscado Minimizacion de un AFD Editar Dos estados de un automata finito determinista son estados equivalentes si al unirse en un solo estado pueden reconocer el mismo lenguaje regular que si estuviesen separados Esta union de estados implica la union tanto de sus transiciones de entrada como de salida Si dos estados no son equivalentes se dice que son estados distinguibles Un estado final con un estado no final nunca seran equivalentes Un AFD esta minimizado si todos sus estados son distinguibles y alcanzables Un algoritmo de minimizacion de AFD es el siguiente Eliminar los estados inaccesibles del automata Construir una tabla con todos los pares p q de estados restantes Marcar en la tabla aquellas entradas donde un estado es final y el otro es no final es decir aquellos pares de estados que son claramente distinguibles Para cada par p q y cada simbolo a del alfabeto tal que r d p a y s d q a Si r s ya ha sido marcado entonces p y q tambien son distinguibles por lo tanto marcar la entrada p q De lo contrario colocar p q en una lista asociada a la entrada r s Agrupar los pares de estados no marcados Luego del tercer paso si la tabla creada queda completamente marcada entonces el AFD inicial ya era minimo La complejidad computacional del problema de minimizar un AFD es polinomial De hecho existen algoritmos mas eficientes aun que el mostrado en este articulo aunque menos intuitivos 11 Sin embargo el problema de minimizar un automata finito no determinista es NP completo y PSPACE completo 12 13 EjemploMinimizacion de un AFD AFD con estados redundantes AFD minimizado En la primera figura del ejemplo se muestra un automata con el estado inaccesible d el cual puede eliminarse inmediatamente Luego se construye la tabla de pares de estados y a continuacion se marcan de acuerdo a la tercera linea del algoritmo las filas y columnas correspondientes a los estados finales c y g salvo la celda que representa el par c g puesto que al ser ambos estados finales pueden ser estados equivalentes Posteriormente se marcan las celdas restantes de acuerdo a la cuarta linea del algoritmo notando que el par b f queda asociado con el par c g y asi finalmente se obtiene el automata final agrupando los estados b y f asi como c y g tal y como se muestra en la segunda figura del ejemplo Tablas para la busqueda de estados equivalentes bcefga b c e f bcefga b c e f bcefga b c e fGeneralizaciones de automatas finitos Editar Ejemplo de Maquina de Mealy un tipo de transductor de estados finitos que generaliza los automatas finitos Existen diversas generalizaciones posibles de hacer sobre los automatas finitos para aumentar su uso y expresividad Asi por ejemplo se definen los transductores de estados finitos como automatas finitos que estan dotados ademas de un alfabeto de salida distinto al de entrada y que pueden poseer mas de un estado inicial 14 Las maquinas de Moore y maquinas de Mealy son conocidos ejemplos de transductores que se utilizan sobre todo para modelar sistemas secuenciales 15 16 Es incluso posible aumentar el poder de computo de un automata finito permitiendo un alfabeto adicional sobre este que actue sobre una memoria de tipo pila para ser considerada en cada transicion Esta es la idea utilizada por los llamados automatas con pila los cuales son capaces de reconocer lenguajes libres de contexto que estan un nivel por sobre los lenguajes regulares en la Jerarquia de Chomsky 17 Vease tambien EditarLenguaje regular Teoria de automatas Sistema combinacional Automata con pila Maquina de Turing Maquina abstractaReferencias Editar a b c Wolfram Stephen 2002 Starting From Randomness A New Kind of Science en ingles Wolfram Media p 958 Consultado el 31 de marzo de 2010 Basharin Gely P Langville Amy N Naumov Valeriy A 2004 The Life and Work of A A Markov Linear Algebra and its Applications en ingles 386 3 26 Consultado el 31 de marzo de 2010 a b Rabin Michael O Scott Dana 1959 Finite automata and their decision problems IBM Journal of Research and Development en ingles IBM Corp Riverton NJ USA 3 2 114 125 ISSN 0018 8646 Consultado el 5 de abril de 2010 La referencia utiliza el parametro obsoleto coautores ayuda Wolfram Stephen 2002 A New Kind of Science en ingles Wolfram Media p 893 Consultado el 31 de marzo de 2010 Thompson Ken 1968 Programming Techniques Regular expression search algorithm Communications of the ACM en ingles 11 6 419 422 Consultado el 1 de abril de 2010 a b c Chakraborty Samarjit 17 de marzo de 2003 Formal Languages and Automata Theory Regular Expressions and Finite Automata Computer Engineering and Networks Laboratory Swiss Federal Institute of Technology ETH Zurich en ingles 17 Consultado el 30 de marzo de 2010 Brena Ramon 2003 Automatas y Lenguajes Un enfoque de diseno Tecnologico de Monterrey Mexico 205 Consultado el 31 de marzo de 2010 Berry G Sethi R 1987 From regular expressions to deterministic automata TCS Theoretical Computer Science en ingles 48 117 126 Consultado el 1 de abril de 2010 La referencia utiliza el parametro obsoleto coautores ayuda Neumann Christoph 2005 Converting Deterministic Finite Automata to Regular Expressions en ingles Consultado el 1 de abril de 2010 van Noord Gertjan 2000 Treatment of epsilon moves in subset construction Computational Linguistics en ingles MIT Press Cambridge MA USA 26 1 61 76 ISSN 0891 2017 Consultado el 5 de abril de 2010 Hopcroft John E 1971 An n log n algorithm for minimizing states in a finite automaton Theory of Machines and Computations en ingles Academic Press Nueva York 189 196 Consultado el 9 de abril de 2010 Jiang Tai Ravikumar B 1993 Minimal NFA problems are hard SIAM Journal on Computing en ingles Society for Industrial and Applied Mathematics Philadelphia PA Estados Unidos 22 6 1117 1141 ISSN 0097 5397 Consultado el 9 de abril de 2010 Malcher Andreas 2004 Minimizing finite automata is computationally hard Theoretical Computer Science en ingles Elsevier Science Publishers Ltda Essex Reino Unido 327 3 375 390 ISSN 0304 3975 Consultado el 5 de abril de 2010 Koskenniemi Kimmo 1984 A general computational model for word form recognition and production Morristown NJ Estados Unidos Association for Computational Linguistics pp 178 181 archivado desde el original el 14 de junio de 2006 consultado el 10 de abril de 2010 Moore Edward F 1956 Gedanken experiments on Sequential Machines Automata Studies Annals of Mathematical Studies en ingles Princeton N J Princeton University Press 34 129 153 Consultado el 10 de abril de 2010 Mealy George H 1955 A Method for Synthesizing Sequential Circuits Bell Systems Technical Journal en ingles 34 1045 1079 fechaacceso requiere url ayuda Hopcroft John E Ullman Jeffrey D 1969 Formal languages and their relation to automata Boston MA Estados Unidos Addison Wesley Longman Publishing Co Inc p 262 consultado el 10 de abril de 2010 Bibliografia EditarHopcroft John Motwani Rajeev Ullman Jeffrey D 2001 Introduction to Automata Theory Languages and Computation en ingles Massachusetts Estados Unidos Addison Wesley Consultado el 30 de marzo de 2010 Datos Q176452 Multimedia Finite state machine Obtenido de https es wikipedia org w index php title Automata finito amp oldid 138100346, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos