autómata finito determinista

Anuncio
Autómatas Finitos
Un autómata finito o máquina de estado finito es un modelo matemático de un sistema que recibe una
cadena constituida por símbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que el
autómata reconoce.
Formalmente, un autómata finito (AF) puede ser descrito como una 5-tupla (S, Σ, T, s,
A) donde:





Σ es un alfabeto;
S un conjunto de estados;
T es la función de transición: T: S x (Σ u {}) -> P(S) ;
s  S es el estado inicial;
S es un conjunto de estados de aceptación o finales.
Además de notar un AF a través de su definición formal es posible representarlo a través de otras
notaciones que resultan más cómodas. Entre estas notaciones, las más usuales son:
Las Tablas de Transiciones: la tabla de transición para el AF del ejemplo 1 es
01
S1 S2 S1
S2 S1 S2

Los Diagramas de Transiciones: el diagrama de transición para el AF del ejemplo 1 es



Las Expresiones regulares. Se demuestra que dado un autómata de estados finitos, existe una
expresión regular que lo representa.
Ø υ 1* υ (1* ο 0 ο 1* ο 0)*
Función de transición para cadenas
Se define además una función *: E x A* E, tal que * (ei, x) es el estado en que estará
el autómata después de leer la cadena x comenzando en el estado ei.
1.
2.
* (ei, ) = ei
* (ei, xa) = (* (ei,x), a) siendo x una cadena y a un símbolo del alfabeto A.
La diferencia entre y * es que se define desde un estado y un símbolo del alfabeto, y * se define
desde un estado y una cadena de símbolos.
El lenguaje aceptado por un autómata finito M = <E, A, , e0, F> es:
L(M) = { x A* / * (e0, x) F }
1
Los lenguajes aceptados por autómatas finitos se denominan lenguajes regulares.
AUTÓMATA FINITO DETERMINISTA
Un AFD o autómata finito determinista es aquel autómata finito cuyo estado de llegada está
unívocamente determinado por el estado inicial y el carácter leído por el autómata.
Formalmente, un autómata finito determinista (AFD) es similar a un Autómata de estados finitos,
representado con una 5-tupla (S,Σ,T,s,A) donde:





Σ es un alfabeto;
S un conjunto de estados;
T es la función de transición: T : S x Σ -> S;
s  S es el estado inicial;
A Ses un conjunto de estados de aceptación o finales.
Es claro que, al contrario de la definición de Autómata finito, este es un caso particular donde no se
permiten transiciones lambda (vacías), el dominio de la función T es S (con lo cual no se permiten
transiciones desde un estado de un mismo símbolo a varios estados).
A partir de este autómata finito es posible hallar la expresión regular resolviendo un sistema de
ecuaciones.
S1 = 1 S1 + 0 S2 + ε
S2 = 1 S2 + 0 S1
Siendo ε la palabra nula. Resolviendo el sistema y haciendo uso de las reducciones apropiadas se
obtiene la siguiente expresión regular: 1*(01*01*)*.
Inversamente, dada la expresión regular es posible generar un autómata que reconozca el lenguaje en
cuestión utilizando el algoritmo de Thompson.
AUTÓMATA FINITO NO DETERMINISTA
Un AFND o autómata finito no determinista es aquel que presenta cero, una o más transiciones por el
mismo carácter del alfabeto.
Un autómata finito no determinista también puede o no tener más de un nodo inicial.
Los AFND también se representan formalmente como tuplas de 5 elementos (S,Σ,T,s,A).
La única diferencia respecto al AFD es T.
AFD: T : S x Σ -> S
AFND: T : S x Σ -> P(S) (partes de S)
Debido a que la función de transición lleva a un conjunto de estados, el autómata puede estar en varios
estados a la vez (o en ninguno si se trata del conjunto vacío de estados).
AUTÓMATA FINITO NO DETERMINISTA CON TRANSICIONES Λ
2
Un AFND-λ o autómata finito no determinista con transiciones λ permite cambiar de estado sin
procesar ningún símbolo de entrada. Cuando el autómata llega a un estado, se encuentra en ese estado
y en los estados a los que apunte este mediante una transición λ.
Se representan formalmente con una tupla de 5 elementos, y se diferencian en los
AFND en la función de transferencia:
AFND: T : S x Σ -> P(S) (partes de S)
AFND-λ: T : S x Σ -> P(S) (partes de S)
Cuando el símbolo de entrada es la palabra vacía (λ), existe una transición λ entre los estados.
AUTÓMATA DE PILA
Los autómatas de pila, en forma similar a como se usan los autómatas finitos, también se pueden utilizar
para aceptar cadenas de un lenguaje definido sobre un alfabeto A.
Un autómata de pila o autómata a pila es un modelo matemático de un sistema que recibe una cadena
constituida por símbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que el
autómata reconoce. El lenguaje que reconoce un autómata a pila pertenece al grupo de los lenguajes de
contexto libre en la clasificación de la Jerarquía de Chomsky.
Formalmente, un autómata de pila puede ser descrito como una séptupla M = (S,Σ,Γ,δ,s,Z,F) donde:






Σ y Γ son alfabetos, de entrada y de pila respectivamente;
S un conjunto de estados;
Δ: S x (Σ u {}) u Γ -> P ( S x Γ*);
s  S es el estado inicial;
Z  Γ es el símbolo inicial de la pila;
F S es un conjunto de estados de aceptación o finales.
La interpretación de δ(s, a , Z) = {(s1, γ1),(s2, γ2),…,(sn, γn)} con s, pi  Q, a Σ u {,γi Γ es la
siguiente:
Los autómatas de pila pueden aceptar lenguajes que no pueden aceptar los autómatas finitos. Un
autómata de pila cuenta con una cinta de entrada y un mecanismo de control que puede encontrarse en
uno de entre un número finito de estados. Uno de estos estados se designa como estado inicial, y
además algunos estados se llaman de aceptación o finales. A diferencia de los autómatas finitos, los
autómatas de pila cuentan con una memoria auxiliar llamada pila. Los símbolos (llamados símbolos de
pila) pueden ser insertados o extraídos de la pila, de acuerdo con el manejo last-in-first-out (LIFO). Las
transiciones entre los estados que ejecutan los autómatas de pila dependen de los símbolos de entrada
y de los símbolos de la pila. El autómata acepta una cadena x si la secuencia de transiciones,
comenzando en estado inicial y con pila vacía, conduce a un estado final, después de leer toda la cadena
x.
Cuando el estado del autómata es s, el símbolo que la cabeza lectora está inspeccionando en ese
momento es a, y en la cima de la pila nos encontramos el símbolo Z, se realizan las siguientes acciones:



Si a  Σ, es decir no es la palabra vacía, se avanza una posición la cabeza lectora para
inspeccionar el siguiente símbolo.
Se elimina el símbolo Z de la pila del autómata.
Se selecciona un par (pi,γi) de entre los existentes en la definición de δ(s,A,Z), la función de
transición del autómata.
3


Se apila la cadena γi=A1,A2….,Ak en la pila del autómata, quedando el símbolo A1 en la cima de
la pila.
Se cambia el control del autómata al estado pi.
Equivalencia entre AFD y AFND
Para cada AFND, existe un AFD que acepta el mismo lenguaje.
Dado el autómata finito no determinista MND = <END, A, ND, e0ND, FND>, se define el autómata finito
determinista correspondiente MD= <ED, A, D, e0D, FD> como sigue:
 ED = P(END) (conjunto potencia de END). Cada elemento de ED se representa como [e1, e2, ...,
ei] donde e1, e2, ..., ei están en END. Se debe notar que [e1, e2, ..., ei] es un único estado de
MD que corresponde a un conjunto de estados de MND.
 A: alfabeto
 D: ED x A ED, se define como D([e1, e2, ..., ei], a) = [el, em, ..., ek] si ND({e1, e2, ..., ei}, a) =
G ({e1, e2, ..., ei}, a) = {el, em, ..., ek}, donde G se define como G (C, a) =


(p, a) y G (,
a) = (C: conj. De estados), p C. Es decir, que D aplicada a un elemento [e1, e2, ..., ei] de
ED se calcula aplicando ND a cada estado de END representado por [e1, e2, ..., ei].
e0D = [e0ND]
FD: conjunto de todos los estados de ED que contienen al menos un estado final de MND.
Minimización de AFD
Para cada AFD existe un AFD con cantidad mínima de estados que acepta el mismo lenguaje.
El algoritmo de minimización divide el conjunto de estados del AFD en clases de equivalencia. Los pasos
a seguir son los siguientes:
1) Eliminar los estados no alcanzables desde el estado inicial.
2) Eliminar los estados desde los cuales no es posible alcanzar un estado final.
3) Construir una partición 0 del conjunto de estados, que consiste en dos grupos: estados finales y
estados no finales.
4) Sea K = 0.
5) Definir K+1 de la siguiente manera: para cada grupo G de una partición K, dividir a G en subgrupos
tales que dos estados s y t están en el mismo grupo sí y sólo sí para todo símbolo “a” del alfabeto de
entrada, los estados “s” y “t” van al mismo grupo de K.
6) K = K + 1.
7) Si K K-1 volver al paso 5. En caso contrario, terminar.
4
Descargar