Sie sind auf Seite 1von 15

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro.

AUTMATAS FINITOS

Autmatas Finitos 1 Autmatas Finitos (AF)


Por qu estudiar autmatas finitos Hay varias razones por las que el estudio de los autmatas y de la complejidad es una parte importante del ncleo de las ciencias de la computacin. Los AF constituyen un modelo til para muchos tipos importantes de hardware y software, como: a) Software para el diseo y la verificacin del comportamiento de circuitos digitales. b) El analizador lxico de un compilador tpico, esto es, la componente del compilador que descompone el texto original en unidades lgicas tales como identificadores, palabras reservadas y signos de puntuacin. c) Software para explorar grandes corpus de texto, como conjuntos de pginas web, o para descubrir las apariciones de ciertas palabras, frases u otros patrones. d) Software para comprobar la correccin de cualquier tipo de sistemas que tengan un nmero finito de estados diferentes, como los protocolos de comunicacin o los protocolos de intercambio seguro de informacin. Hay muchos sistemas o componentes, como los enumerados anteriormente, de los que se puede decir en todo momento que estn en cierto estado, entre un nmero finito de ellos. El objetivo de un estado es recordar la parte significativa de la historia del sistema. Dado que solo disponemos de un nmero finito de estados, normalmente no es posible recordar la historia completa, por lo que el sistema ha de ser diseado cuidadosamente para que sea posible recordar los aspectos importantes y olvidar los que no lo sean. Definicin informal Un AF es una mquina reconocedora, ya que a partir de una cadena de entrada, solo dice si o no. Lo cual indica si esa cadena pertenece o no al lenguaje reconocido o aceptado por la mquina. A partir de una gramtica se puede construir una mquina reconocedora o aceptadora del lenguaje generado por esa gramtica, de tal forma que cuando reciba a su entrada una determinada cadena de smbolos, el autmata indicar si dicha cadena pertenece o no al lenguaje. Una mquina reconoce un lenguaje L si es capaz de reconocer todas las sentencias pertenecientes a L y de no reconocer ninguna sentencia que no pertenezca a L. Los lenguajes regulares pueden describirse por medio de un AF. Un AF tiene un conjunto de estados y su control se mueve de estado en estado, en respuesta a entradas externas. Estas entradas forman las cadenas a ser analizadas. Los estados de un AF, son de tres tipos: estado inicial, que permite empezar la ejecucin del autmata; estados finales o estados de aceptacin que permiten realizar la salida de aceptacin de la cadena de entrada en el caso de que no haya ms smbolos en la entrada, y estados intermedios, que son los que permiten pasar del estado inicial a algn estado final. Los AF se dividen en diversas clases, dependiendo de si su control es determinista (lo que significa que el autmata no puede estar en ms de un estado simultneamente) o no determinista (lo que significa que el autmata puede estar en varios estados al mismo tiempo).

Ao: 2009

pg. 1

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro. 2

AUTMATAS FINITOS

Autmatas Finitos Deterministas


Definicin formal

El autmata finito determinista (AFD) siempre est en un solo estado despus de leer cualquier secuencia de entrada. El trmino determinista hace referencia al hecho de que, para cada entrada, existe un nico estado al que el autmata pueda llegar partiendo del estado actual. Un AFD se denota con la quntupla: A = (, Q, f, q0, F) donde:

es el alfabeto (conjunto finito) de smbolos de entrada. Q es el conjunto finito de estados. q0 Q es el estado inicial. f, es la funcin de transicin, es una funcin que toma como argumentos un estado de Q y un smbolo de entrada de y devuelve un estado. F Q, es el conjunto de estados finales (o de aceptacin).

Como ya se ha comentado, un AFD genera un solo tipo de salida: acepta o no una secuencia de smbolos de entrada. Esa aceptacin est representada si el autmata se encuentra en algn estado del conjunto F. El comportamiento de un AFD, comienza en el estado inicial (q0), y segn se van recibiendo los smbolos de la entrada transita entre los estados (del conjunto Q), de acuerdo a la funcin de transicin f. Si en un determinado momento se encuentra en un estado de aceptacin (del conjunto F), reconoce como vlida la cadena formada por los smbolos de entrada ledos hasta el momento. Si no, no es aceptada. Ejemplos Ejemplo 1: El autmata que acepta, cadenas de 0 y 1 con un nmero par de unos (y no acepta cadenas con un nmero impar de unos), es el siguiente: A1 = ({0,1}, {q0, q1}, f, q0 , {q0}) Donde f, se define como: f(q0,0) = q0 f(q0,1) = q1 f(q1,0) = q1 f(q1,1) = q0 Si la cadena de entrada es 0110, el autmata ir transitando entre los estados:
0 1 1 0

q0

q0

q1

q0

q0

Ejemplo 2: En este ejemplo, partiremos de un Lenguaje L y encontraremos el AFD, que reconoce este lenguaje.
Ao: 2009 pg. 2

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro. 2

AUTMATAS FINITOS
Informalmente L acepta nicamente todas las cadenas de ceros y unos que contienen la secuencia 01 en algn lugar de la cadena. Podemos describir L as: L = { w | w tiene la forma x01y, donde x e y son cadenas que solo constan de los smbolos 0 y 1} Algunos ejemplos de cadenas del lenguaje son 01, 11010 y 100011. Algunos ejemplos de cadenas que no pertenecen al lenguaje son , 0, 111000, 000. Qu sabemos sobre el autmata que acepta este lenguaje L? Primero, que su alfabeto es = {0, 1}. Tiene un conjunto de estados Q, de los que uno, digamos q0, es el estado inicial. Este autmata para decidir si 01 es una subcadena de la entrada, tiene que recordar lo siguiente: 1. Ha ledo ya la secuencia 01? Si es as, acepta cualquier secuencia futura de entradas; es decir, de ahora en adelante solo estar en estados de aceptacin (del conjunto F). 2. Todava no ha ledo la secuencia 01, pero su entrada ms reciente fue 0, de forma que, si ahora lee un uno, habr ledo 01 y puede aceptar todo lo que lea de ah en adelante? 3. Todava no ha ledo la secuencia 01, pero su entrada ms reciente ha sido 1 o no existi (acaba de comenzar)? En este caso, el autmata no puede aceptar hasta que lea un cero, e inmediatamente despus un uno. Estas tres condiciones pueden representarse cada una mediante un estado. La condicin (3) se representa con el estado inicial q0. Al comenzar, es seguro que necesitamos leer un 0 y despus un 1. Pero si estando en el estado q0 leemos un 1, entonces no estamos ms cerca de leer 01 que antes, por lo que debemos permanecer en el estado q0. Es decir, f(q0,1) = q0 Sin embargo, si estando en el estado q0 leemos un 0, pasamos a la condicin (2). Es decir, todava no hemos ledo la secuencia 01, pero ya tenemos un 0. Por lo tanto, usamos q2 para representar la condicin (2). La transicin desde q0 con la entrada 0 es f(q0,0) = q2. Consideremos ahora las transiciones desde el estado q2. Si leemos un 0, no estamos mejor que lo que estbamos, pero tampoco estamos peor. Todava no hemos ledo una secuencia 01, pero 0 ha sido el ltimo smbolo, por lo que todava seguimos esperando un 1. El estado q2 describe esta situacin perfectamente. En consecuencia, queremos que f(q2,0) = q2. Pero si estamos en el estado q2 y leemos la entrada 1, sabemos que ha llegado un 0 seguido por un 1. Entonces ahora podemos pasar a un estado de aceptacin (perteneciente a F) que llamamos q1, y que corresponde a la condicin (1). Es decir, f(q2,1) = q1. Finalmente, debemos disear las transiciones para el estado q1. En este estado ya hemos ledo una secuencia 01, por lo que, independientemente de lo que ocurra, debemos permanecer en esta situacin. Es decir f(q1,0) = q1 y f(q1,1) = q1. Por lo tanto, Q ={ q0, q1, q2}. Adems q0 es el estado inicial, y el nico estado de aceptacin o final es q1; es decir F ={ q1}. La especificacin completa del autmata A que acepta L (lenguaje de cadenas 0 y 1 que contienen la subcadena 01) es A = ({0, 1}, {q0, q1, q2}, f, q0, { q1}) Donde f(q0,1) = q0 f(q0,0) = q2 f(q1,0) = q1 f(q1,1) = q1 f(q2,0) = q2 f(q2,1) = q1

Ao: 2009

pg. 3

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro. 2

AUTMATAS FINITOS

Representaciones de un AFD La especificacin de un AFD como una quntupla, con una descripcin detallada de la funcin de transicin f, es tediosa y difcil de leer. Existen dos notaciones preferibles para describir los autmatas: 1. Un diagrama de transiciones, que es un grafo. 2. Una tabla de transiciones, que es una enumeracin tabular (tabla) de la funcin f, que a la vez describe el conjunto de estados, y el alfabeto de entrada. Diagramas de transiciones Un diagrama de transiciones para un AFD A = (, Q, q0, f, F), es un grafo definido de la siguiente forma: a) Hay un nodo para cada estado de Q. b) El nodo correspondiente al estado inicial q0, tendr una flecha sin origen (o arco entrante) no etiquetado. c) Los nodos correspondientes a los estados de aceptacin (los que pertenecen a F) estn marcados con un doble crculo. Los que no pertenecen a F tienen un crculo simple. d) Habr un arco etiquetado con a entre el nodo p y el nodo q, si f(p,a) = q. Si existen varios smbolos de entrada que provocan una transicin del estado p a q, entonces el arco entre p y q puede estar etiquetado con la lista de esos smbolos. Ejemplo 1: Autmata para aceptar el lenguaje de cadenas de 0 y 1, con cantidades de 1 pares 0 q0 1 q1

1 Ejemplo 2: Autmata para aceptar el lenguaje de cadenas de 0 y 1, que contienen la subcadena 01. 1 0 q0 q2 0 1 0,1 q1

Tabla de transiciones Una tabla de transiciones es una representacin tabular convencional de una funcin como f, que recibe dos argumentos y devuelve un valor. Esta tabla tendr la siguientes caractersticas:
Ao: 2009 pg. 4

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro. 2

AUTMATAS FINITOS
a) En las filas estarn los estados q Q b) El estado inicial se preceder del smbolo -> c) Cada estado final se preceder del smbolo * d) En las columnas estarn los smbolos de entrada a e) El valor correspondiente a la fila del estado q y a la entrada a es el estado que determine f(q,a) Ejemplo 1: f -> * q0 q1 0 q0 q1 1 q1 q0

Ejemplo 2:

f -> q0 * q1 q2

0 q2 q1 q2

1 q0 q1 q1

Extensin a cadenas de la funcin de transicin Hemos explicado informalmente que un AFD define un lenguaje: el conjunto de todas las cadenas que producen una secuencia de transiciones desde el estado inicial a un estado de aceptacin. Considerando el diagrama de transiciones, el lenguaje de AFD es el conjunto de etiquetas (de los arcos) que pasan por todos los caminos que conducen desde el estado inicial a un estado de aceptacin. Falta precisar el concepto de lenguaje de un AFD. Para ello, definimos una funcin de transicin extendida, que define lo que ocurre cuando se parte de cualquier estado y se sigue una secuencia de entradas, la llamaremos f. Dado que la f slo transita cuando recibe un smbolo de entrada, se puede generalizar para cuando recibe una cadena formada por ms de un smbolo o por la cadena vaca. Para ello definimos f como la funcin que recibe un estado q y una cadena w y devuelve un estado p. As tenemos que f: Q x * -> Q Suponemos que w es una cadena formada por xa; es decir, a es el ltimo smbolo de w y x es la cadena que contiene todos los smbolos de w excepto el ltimo. Por ejemplo , w =1101 se descompone en x = 110 y a = 1. Entonces f(q, w) = f (q, xa) = f (f(q,x),a ) y f(q, ) = q

Ao: 2009

pg. 5

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro. 2

AUTMATAS FINITOS
La ecuacin puede parecer muy complicada, pero la idea es simple. Para calcular f(q,w), primero se calcula f(q,x), que es el estado en el que est el autmata despus de procesar todos los smbolos de w excepto el ltimo. Ejemplo 1: suponemos el AFD de nuestro ejemplo 1, que acepta cadenas de 0 y 1 con cantidades pares de 1. Suponemos que la entrada es 110101. Como esta cadena contiene cantidades pares de 1, esperamos que pertenezca al lenguaje aceptado por el AFD que definimos. Por lo tanto esperamos que f (q0, 110101) = q0, ya que q0 es el nico estado de aceptacin. La comprobacin supone calcular f(q0,w), comenzando por y aumentando progresivamente de tamao para todos los prefijos de 110101. f(q0, ) = q0 f(q0,1) = f(f(q0, ),1) = f(q0,1) = q1 f(q0,11) = f(f(q0, 1),1) = f(q1,1) = q0 f(q0,110) = f(f(q0, 11),0) = f(q0,0) = q0 f(q0,1101) = f(f(q0, 110),1) = f(q0,1) = q1 f(q0,11010) = f(f(q0, 1101),0) = f(q1,0) = q1 f(q0,110101) = f(f(q0, 11010),1) = f(q1,1) = q0

Lo cual nos demuestra que 110101 es una cadena que pertenece al lenguaje generado por el AFD. Hay otros autores que definen a f(q, ax) = f (f(q,a),x) La comprobacin es al revs dado que a es el primer smbolo de la cadena y x es la cadena restante. As para el ejemplo anterior tenemos f(q0,110101) = f(f(q0,1), 10101) = f(q1,10101) = f(f(q1,1), 0101) = f(q0,0101) = f(f(q0,0), 101) = f(q0, 101) = f(f(q0,1), 01) = f(q1, 01) = f(f(q1, 0), 1) = f(q1, 1) = f(f(q1, 1), ) = f(q0, ) = q0 Lenguaje reconocido por un AFD Ahora podemos definir el lenguaje de un AFD A = (, Q, q0, f, F), como el conjunto de cadenas aceptadas por AFD. Llamaremos a este lenguaje LAFD, y lo definimos as LAFD = { w | w * y f(q0,w) F } Si L es un LAFD decimos que L es un lenguaje regular. En el ejemplo 1 de la seccin 2.4 LAFD es el conjunto de todas las cadenas de ceros y unos con cantidad para de unos.

Autmatas Finitos no Deterministas (AFN)

Un autmata finito no determinista AFN tiene la capacidad de estar en varios estados simultneamente. La diferencia entre AFD y un AFN est en la funcin de transicin. Para el AFN, f es una funcin que toma como argumentos un estado y un smbolo de entrada, pero devuelve un conjunto de cero, uno o ms estados (en vez de devolver un estado, como en el caso del AFD).

Ao: 2009

pg. 6

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro. 2

AUTMATAS FINITOS
Definicin formal Un AFN se representa, esencialmente, como un AFD: A = (, Q, q0, f, F) donde:

es el alfabeto (conjunto finito) de smbolos de entrada. Q es el conjunto finito de estados. q0 Q es el estado inicial. f, es la funcin de transicin, es una funcin que toma como argumentos un estado de Q y un smbolo de entrada de y devuelve un subconjunto de Q. f : Q x -> P(Q) conjunto de estados F Q, es el conjunto de estados finales (o de aceptacin).

Ejemplos Ejemplo 1: El siguiente autmata es un AFN que acepta todas las cadenas de 0 y 1 que terminan en 01. 0,1 0 q0 q1 1 q2

Puede especificarse formalmente as AFN = ({0,1}, {q0,q1,q2}, q0, f, {q2}) Donde la funcin de transicin f, est dada por la siguiente tabla de transiciones f -> q0 q1 * q2 0 { q0, q1} 1 { q0} {q2}

Ntese que las tablas de transiciones sirven para especificar tanto la funcin de transicin de un AFN como la de un AFD. La nica diferencia es que cada anotacin en la tabla de un AFN es una conjunto, aunque dicho conjunto tenga un solo elemento. Tambin debe sealarse que, si no existe ninguna transicin a partir de un estado para un smbolo determinado, el valor correcto que hay que colocar en la tabla es , el conjunto vaco. La funcin de transicin extendida Al igual que para los AFD, tenemos que extender la funcin de transicin f de un AFN a una funcin f que tome como argumentos en estado q y una cadena de smbolos de entrada w, y devuelva el conjunto de estados en los que estar el AFN si comienza en el estado q y procesa la cadena w.
Ao: 2009 pg. 7

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro. 2

AUTMATAS FINITOS
Para poder entender esta funcin primero, veremos como funciona un AFN para el reconocimiento de una cadena. Mientras que en un AFD de cada estado sale exactamente un arco para cada smbolo de entrada, un AFN no tiene esta restriccin: vemos en el ejemplo anterior casos en que el nmero de arcos es cero, uno o dos para cada smbolo de entrada. La siguiente figura sugiere cmo un AFN procesa las entradas, basado en el autmata del ejemplo para cuando ingresa una cadena 00101. q0 q0 q1 (muere) q2 (muere) 0 0 1 0 1 Comienza siempre en su estado inicial q0. Cuando se lee el primer 0, el AFN puede ir al estado q0 o al estado q1; por lo tanto, va hacia ambos. Estos dos hilos los sugiere la segunda columna de la figura anterior. A continuacin se lee el segundo 0. El estado q0 puede ir otra vez,, tanto a q0 como a q1. Sin embargo, el estado q1 no tiene transiciones con el smbolo 0; por lo tanto, el autmata se detiene. Cuando llega la tercera entrada, un 1, hay que considerar las transiciones desde los estados q0 y q1. Vemos que q0 solo pasa a q0 con un 1, mientras que q1 solo pasa a q2. Por lo tanto, despus de leer 001, el AFN est en los estados q0 y q2. Como q2 es un estado de aceptacin, el AFN acepta 001. Sin embargo, la entrada an no ha finalizado. La cuarta entrada, un 0, provoca que el hilo de ejecucin de q2 muera, mientras que q0 pasa tanto a q0 como a q1. La ltima entrada, un 1, enva q0 a q0, y q1 a q2. Como estamos otra vez en un estado de aceptacin, 00101 es aceptada. Entonces en base a este ejemplo vemos que f(q,w), es la columna de estados en los que se encuentra el autmata despus de leer w, cuando q es el nico estado de la primera columna. Por ejemplo en la figura vemos que f(q0,001) = {q0, q2}. Formalmente, definimos as la funcin f correspondiente a la funcin de transicin f de un AFN: f (q, ) = {q}. Es decir, si no leemos ningn smbolo, estamos nicamente en el estado en el que hemos comenzado. Supongamos que w es de la forma w = xa, donde a es el smbolo final de w y x es el resto de w. Supongamos tambin que f(q,x) = {p1, p2, ....pk} y tomando la unin de las f para los k estados p, o sea U i=1 hasta k f(pi,a) = {r1, r2, ...., rm} Entonces, f(q, w) = {r1, r2,....rm}. Ms informalmente, para calcular f(q,w) obtenemos primero f(q,x) (un conjunto de estados), y despus seguimos todas las transiciones con la etiqueta a desde cada uno de esos estados. Ejemplo: Usemos f para describir el proceso de la entrada 00101 para el AFN del ejemplo anterior. Un resmen de estos pasos es: 1. f (q0, ) = {q0} 2. f (q0,0) = f(q0,0) = {q0,q1} 3. f (q0,00) = f(q0,0) f(q1,0) = {q0,q1} = {q0,q1} q2 q0 q1 q0 q0 q1 q0

Ao: 2009

pg. 8

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro. 2

AUTMATAS FINITOS
4. f (q0,001) = f(q0,1) f(q1,1) = {q0} {q2} = {q0, q2} 5. f (q0,0010) = f(q0,0) f(q2,0) = {q0,q1} = {q0,q1} 6. f (q0,00101) = f(q0,1) f(q1,1) = {q0} {q2} = {q0, q2} La lnea (1) es la regla bsica. Obtenemos la lnea (2) aplicando f al nico estado que estaba en el conjunto anterior, q0, cuyo resultado es {q0,q1}. La lnea (3) se obtiene haciendo la unin de los resultados de aplicar f a los dos estados del conjunto anterior, con el smbolo de entrada 0. Es decir, f(q0,0) = {q0,q1}, mientras que f(q1,0) = . Para la lnea (4), hacemos la unin de f(q0,1)={q0} y de f(q1,1) = {q2}. Las lneas (5) y (6) son similares a las lneas (3) y (4). Lenguaje de un AFN Como se ha sugerido, un AFN acepta una cadena w si, a medida que se leen los caracteres de w, es posible elegir en cada paso el estado siguiente, de tal forma que se pase desde el estado inicial a un estado de aceptacin. El hecho de que existan otras elecciones posibles que, siguiendo los smbolos de w, lleven a un estado que no es de aceptacin o no lleven a ningn estado (es decir, el hecho de que la secuencia de estados muera), no evita que w sea aceptada por el AFN en su conjunto. Formalmente, si A = (, Q, f, q0, F) es un AFN, , entonces L(A) = {w / f (q0,w) F Es decir, L(A) es el conjunto de cadenas w pertenecientes a * tales que f (q0,w) contiene al menos un estado de aceptacin. Equivalencia entre autmatas Finitos Deterministas y No deterministas Es un hecho sorprendente que todo lenguaje que puede describirse mediante un AFN tambin puede describirse con un AFD. Ms an, en la prctica, el AFD tiene casi el mismo nmero de estados que un AFN, aunque a menudo tiene ms transiciones. La demostracin de que un AFD puede hacer lo mismo que un AFN implica una construccin importante, llamada construccin de subconjuntos, porque supone construir todos los subconjuntos del conjunto de estados del AFN. En general, muchas demostraciones sobre autmatas obligan a construir un autmata a partir de otro. Es importante fijarse en las construccin de subconjuntos como ejemplo de cmo se puede describir formalmente un autmata en funcin de los estados y transiciones de otro sin conocer los detalles especficos del segundo. La construccin de subconjuntos parte de un AFN N =(, QN, fN, q0, FN). Su objetivo es la descripcin de un AFD D =(, QD, fD, {q0}, FD) tal que L(D) = L(N). Ntese que los alfabetos de entrada de ambos autmatas son idnticos, y el estado inicial de D es el conjunto que contiene solo el estado inicial de N. Las otras componentes de D se construyen de la siguiente forma: QD es el conjunto de subconjuntos de QN; es decir, QD es el conjunto potencia de QN. En la prctica vemos que pueden existir estados inaccesibles desde el estado inicial y por lo tanto son eliminados. FD es el conjunto de subconjuntos S de QN tales que S FN . Es decir, FD contiene

todos los conjuntos de estados de N que incluyen al menos un estado de aceptacin de N.


Para cada subconjunto S QN y para cada smbolo de entrada a en ,

Ao: 2009

pg. 9

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro. 2

AUTMATAS FINITOS
fD (S,a) = fN (p,a)
p en S

Es decir, para calcular fD (S,a) miramos todos los estados p de S, vemos qu estados N pasan a p con entrada a, y tomamos la unin de todos estos estados. Ejemplo: Sea N el autmata del Ejemplo 1, que acepta todas las cadenas que terminan en 01. Como el conjunto de estados de N es {q0, q1, q2}, la construccin de subconjuntos produce un AFD con 23 = 8 estados, correspondientes a todos los subconjuntos de estos tres estados. La siguiente tabla muestra las transiciones para estos ocho estados: 0 {q0, q1} {q0, q1} {q0, q1} {q0, q1} 1 {q0} {q2} {q0, q2} {q0} {q2} {q0, q2}

-> {q0} {q1} * {q2} {q0, q1} * {q0, q2} * {q1, q2} * {q0, q1, q2}

Ntese que esta tabla de transiciones pertenece a un autmata finito determinista. Aunque los valores que aparecen en la tabla son conjuntos, los estados del AFD construido son tambin conjuntos. Para dejarlo ms claro, podemos inventar nombres nuevos para estos estados: por ejemplo, A para , B para {q0}, y as sucesivamente. La tabla de transiciones del AFD, que est a continuacin es exactamente la misma que la anterior, pero deja ms claro que las anotaciones de la tabla, son estados individuales del AFD. 0 A E A A E E A E 1 A B D A F B D F

A -> B C * D E * F * G * H

De los ocho estados, si comenzamos por el estado inicial B, solo podemos alcanzar los estados B, E y F. Los otros cinco estados son inaccesibles desde el estado inicial, y podemos eliminarlos. A menudo se puede evitar la etapa de construir la tabla de transiciones para todos los subconjuntos de estados realizando una evolucin perezosa de los subconjuntos, como se muestra a continuacin. Si tomamos el mismo ejemplo, partimos de la tabla de transiciones del AFN N. f -> q0 q1 * q2
Ao: 2009

0 { q0, q1}

1 { q0} {q2}

pg. 10

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro. 2

AUTMATAS FINITOS

Sabemos que {q0} es un estado del AFD D. Vemos que fD ({q0},0) = { q0, q1} y que fD ({q0},1) = { q0} Esto se puede observar claramente en la tabla de transiciones anteriores, slo que ahora tomamos a cada estado como un conjunto. As obtenemos la primer fila de la tabla de transiciones del AFD ( que es la segunda de la tabla que tenamos con los 8 estados). Uno de los subconjuntos que calculamos es viejo: { q0} ya ha sido tratado. Sin embargo, el otro, { q0, q1}, es nuevo, y hay que calcular sus transiciones. Vemos que fD ({q0, q1},0) = { q0, q1} ya que fD ({q0, q1},0) = fN (q0, 0) U fN (q1, 0) = { q0, q1} U = { q0, q1} fD ({q0,q1}, 1) = { q0, q2} ya que fD ({q0, q1},1) = fN (q0, 1) U fN (q1, 1) = { q0} U { q2} = { q0, q2} que se corresponde con la 5ta. fila de la tabla donde tenamos los 8 estados. Ahora hemos descubierto un nuevo estado { q0, q2}. Un clculo similar nos dice que y fD ({q0, q2},0) = { q0, q1} ya que fD ({q0, q2},0) = fN (q0, 0) U fN (q2, 0) = { q0, q1} U = { q0, q1} y fD ({q0,q2}, 1) = { q0} ya que fD ({q0, q2},1) = fN (q0, 1) U fN (q2, 1) = { q0} U = { q0}

ste clculo se corresponde con la 6ta. fila de la tabla donde tenamos los 8 estados, y vemos adems que no surgen nuevos estados, con lo cual concluimos con nuestro AFD construido a partir del AFN f -> { q0} { q0, q1} * {q0, q2} 0 { q0, q1} { q0, q1} {q0, q1} 1 {q0} {q0, q2} {q0}

0 0 {q0} {q0,q1} 0 1 1 {q0,q2}

Como los estados de aceptacin del AFD son aquellos que incluyen al menos un estado de aceptacin del AFN y el AFN acepta si llega al menos a uno de sus estados de aceptacin, entonces el AFD y el AFN aceptan exactamente las mismas cadenas y por lo tanto, el mismo lenguaje. Entonces si D = (, QD, fD, {q0}, FD) es el AFD construido a partir del AFN N = (, QN, fN, q0, FN) mediante la construccin de subconjuntos, entonces L(D) = L(N).

Ao: 2009

pg. 11

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro. 2

AUTMATAS FINITOS
Autmatas Finitos con transiciones Vamos a presentar otra extensin de los autmatas finitos. Como nueva caracterstica, permitiremos transiciones para ( ), la cadena vaca. Con ellas, un AFN puede hacer transiciones espontneamente sin recibir ningn smbolo de entrada. Igual que como sucedi cuando aadimos el no determinismo a los autmatas, esta nueva capacidad de los autmatas tampoco expande la clase de lenguajes que aceptan los autmatas finitos, pero proporcionan algunas facilidades de programacin. Se puede representar a un AFN- exactamente igual que un AFN, con una sola excepcin: la funcin de transicin debe incluir informacin sobre las transiciones . Formalmente, representaremos a un AFN- A mediante A = (, QN, f, q0, F), donde todas las componentes tienen la misma interpretacin que en un AFN, excepto que f es ahora una funcin, cuyos argumentos son: 1. Un estado perteneciente a Q. 2. Un miembro de { }, es decir, un smbolo de entrada o el smbolo . Se exige que , el smbolo que representa la cadena vaca, no forme parte del alfabeto , para que no se produzcan confusiones. Ejemplo: El siguiente autmata AFN- acepta nmeros decimales que contienen: 1. 2. 3. 4. un signo + o - opcional una cadena de dgitos un punto decimal otra cadena de dgitos 0, 1,...,9 0, 1,...,9

q0

, +, -

q1

. q2 0, 1,...,9 . q4 q3

q5

0, 1,...,9

Representado formalmente al AFN- como E = ({q0, q1..., q5}, {., +, -, 0, 1,..., 9}, f, q0, {q5}) Donde f viene definido por la siguiente tabla de transiciones f -> q0 q1 q2 q3 q4 * q5 {q1} {q5} +, {q1} . {q2} {q3} 0,1,..,9 {q1, q4 } {q3} {q3}

Ao: 2009

pg. 12

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro. 2

AUTMATAS FINITOS
Ahora f es una funcin con dos argumentos: 1- un estado perteneciente a Q 2- un smbolo de entrada perteneciente a o el smbolo donde no forma parte del alfabeto de entrada

Autmata Finito asociado a una G3

La teora de lenguajes y gramticas formales tienen una relacin directa con la teora de mquinas abstractas (autmatas), siendo posible establecer entre ambas un isomorfismo. Dado que las gramticas proporcionan las reglas utilizadas en la generacin de las cadenas de un lenguaje, se puede establecer una conexin entre las clases de lenguajes generados por ciertos tipos de gramticas y la clase de lenguajes reconocibles por ciertas mquinas. Una de las aplicaciones de los Autmatas Finitos consiste en la aceptacin de lenguajes generados por gramticas del tipo 3 o regulares. De AFD/AFND a G3 Si el autmata es un AFND, primero se pasa a AFD. Una vez se tenga un AFD como A = (, Q, f, q0, F), se construye la gramtica equivalente lineal por la derecha G3 = (T, N, S, P). Recordemos que T es con conjunto de los terminales, N es el conjunto de los no Terminales, S es el smbolo de comienzo (S N) y P es el conjunto de las reglas de produccin. La forma de encontrar estos cuatro elementos es la siguiente, la G3 = (, Q, q0, P), por lo tanto vemos que T = , el conjunto de los Terminales coincide con el alfabeto de entrada del autmata N = Q, el conjunto de los No Terminales coincide con el conjunto de los estados del autmata S = q0, el smbolo de comienzo es el estado inicial del autmata. P que es el conjunto de las reglas de Produccin, se encuentra de la siguiente manera o o o Ejemplo: A partir del autmata A = ({0,1}, { c0, c1, c2, c3, c4}, f, c0, { c2, c4}) el cual est representado por la siguiente tabla f -> c0 c1 * c2 c3 * c4 0 c1 c1 c0 c3 c0 1 c2 c3 c4 c3 c4 Si f(q,a) = p entonces existe una regla q ::= a p, (a y p,q Q) Si f(q,a) = p y p F, entonces existe una regla q::= a, (a y p,q Q) Si q0 F, entonces existe una regla q::=

Ao: 2009

pg. 13

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro. 2

AUTMATAS FINITOS

Se genera la siguiente gramtica G = ({0,1}, { c0, c1, c2, c3, c4}, c0, P) donde P es : c0 ::= 0 c1 c0 ::= 1 c2 c0 ::= 1 c1 ::= 0 c1 c1 ::= 1 c3 c2 ::= 0 c0 c2 ::= 1 c4 c2 ::= 1 c3 ::= 0 c3 c3 ::= 1 c3 c4 ::= 0 c0 c4 ::= 1 c4 c4 ::= 1 o escrito de otra manera: c0 ::= 0 c1 | 1 c2 | 1 c1 ::= 0 c1 | 1 c3 c2 ::= 0 c0 | 1 c4 | 1 c3 ::= 0 c3 | 1 c3 c4 ::= 0 c0 | 1 c4 | 1

De G3 a AFD/AFND Dada la gramtica lineal por derecha G = (T, N, S, P), se construye el autmata equivalente A = (, Q, f, q0, F), de la siguiente manera: A = (T, N U {F}, f, S, {F}), teniendo en cuenta las siguientes relaciones El conjunto T que son los terminales de G se convierte en que es el alfabeto de entrada del autmata El conjunto N de los No terminales de G ms un smbolo nuevo llamado F, se convierte en Q que es el conjunto de estados del autmata. S que es el smbolo de comienzo de G, se convierte en el estado inicial del autmata. F que es el smbolo nuevo, se convierte en el estado Final del autmata. La funcin f, se construye de la siguiente manera
pg. 14

Ao: 2009

Sintaxis y Semntica del Lenguaje UTN FRSF Apunte Nro. 2

AUTMATAS FINITOS
o o o Ejemplo: Dada la gramtica G = ({0,1}, {A, B, C}, A, P) con P A ::= 0B A ::= B ::= 1C B ::= 1 C ::= 0B el autmata que reconoce el lenguaje generado por dicha gramtica ser: AG = ({0, 1}, {A, B, C, F}, f, A, {F}) Si A = aB entonces f(A,a) = B Si A = a entonces F(A,a) = F Si S = entonces f(S, ) = F

siendo f f(A,0) = B f(A,) = F f(C,0) = B f(B,1) = C f(B,1) = F

f -> A B C *F

0 B

{C,F} B

BIBLIOGRAFA DEL APUNTE NRO. 2


1. John Hopcroft, Rajeev Motwani, Jeffrey Ullman. Introduccin a la teora de autmatas, lenguajes y computacin, 3 ed., Pearson, 2007. 2. Pedro Isasi Viuela, Paloma Martnez Fernndez, Daniel Borrajo Milln. Lenguajes, gramticas y autmatas. Un Enfoque Prctico, Addison-Wesley 1997.

Ao: 2009

pg. 15

Das könnte Ihnen auch gefallen