automatas dfa - nfa conversion

Upload: analiz90

Post on 15-Jul-2015

763 views

Category:

Documents


0 download

TRANSCRIPT

AUTMATAS FINITOS Y LENGUAJES FORMALES CLASE 2INTRODUCCIN A LOS AUTMATAS Autmata: Conjunto de estados + Control Cambio de estados en respuesta a una entrada Tipo de Control - Determinstico: Para cada entrada, hay slo un estado al que el autmata puede ir desde el estado en que se encuentre. - No determinstico: Un autmata finito es no-determinstico cuando se permite que el AF tenga 0 o ms estados siguientes para cada par estado-entrada - Si aadimos la propiedad de no-determinismo, no aadimos poder al autmata o No podemos definir ningn lenguaje que no se pueda definir con el autmata determinstico - Con la propiedad de no-determinismo se agrega eficiencia al describir una aplicacin o Permite programar soluciones en un lenguaje de ms alto nivel o Hay un algoritmo para compilar un N-DFA en un DFA y poder ser ejecutado en una computadora convencional - Extensin del N-DFA para hacer saltos de un estado a otro espontneamente o Con la cadena vaca como entrada o N-DFA o Estos autmatas tambin aceptan lenguajes regulares Ejemplo: Compra con dinero-electrnico. El cliente utiliza un archivo (envo por internet) para pagar al comerciante. El comerciante al recibir el archivo pide al banco que le transfieran el dinero.

Tarea: Leer la seccin 2.1.1 2.1.5 del libro de Hopcroft

DEFINICIN FORMAL DE UN AUTMATA FINITO DETERMINISTICO1. Un conjunto finito de estados, tpicamente Q. 2. Un alfabeto de smbolos de entrada, tpicamente . 3. Un estado es el estado inicial / de comienzo, tpicamente q0.

4. Cero o ms estados finales / de aceptacin; este conjunto es tpicamente

F. 5. Una funcin de transicin, tpicamente . Esta funcin: a. Toma un estado y un smbolo de entrada como argumentos. b. Regresa un estado. c. Una regla de se escribira como (q,a) = p, donde q y p son estados, y a es un smbolo de entrada. d. Intuitivamente: Si el AF est en un estado q, y se recibe una entrada a, entonces el AF va al estado p (nota: q = p OK). Un AF se representa como la 5-tupla: A = (Q, , , q0, F).

Ejemplo: Un Autmata A que acepta L = {x01y : x, y {0,1}*} - El DFA acepta cadenas que tienen 01 en alguna parte de la cadena - El lenguaje del DFA es el conjunto de cadenas que acepta - {w | w tiene la forma x01y para algunas cadenas x y y que consisten slo de 0s y 1s} El Autmata A = ({q0, q1, q2}, {0,1}, , q0, {q1}) Autmata representado con una tabla de transiciones: q0 q1 q2 0 q2 q1 q2 1 q0 q1 q1

Autmata representado con un diagrama de transiciones: 1 0 Start q0 0 q2 1 q1 0,1

Convenciones Se utilizan algunas convenciones para evitar mencionar el tipo de cada nombre, para esto utilizamos las siguientes reglas: Los smbolos de entrada son a, b, etc., o dgitos. Las cadenas de smbolos de entrada son u, v, ..., z. Los estados son q, p, etc.

Diagrama de Transiciones Un AF se puede representar por medio de un grafo; los nodos representan estados; un arco de p a q se etiqueta con el conjunto de smbolos de entrada a tal que (q,a) = p. No hay arco si a no existe. El estado de inicio se indica con la palabra start con una flecha. 1 Start q0 0 0 q2 1 q1 0,1

Los estados de aceptacin tienen doble crculo.

Extensin de a Rutas Intuitivamente, un FA acepta una cadena w = a1a2...an si hay una ruta en el diagrama de transiciones que: 1. Empieza en el estado de inicio, 2. Termina en un estado de aceptacin, y 3. Tiene una secuencia de etiquetas a1, a2, ..., an. Ejemplo: El AF 0,1 Start q0 0 q1 1 q2

acepta la cadena 01101 Formalmente, extendemos la funcin de transicin puede ser cualquier cadena de smbolos de entrada:

a (q,w), donde w

Base: (q, ) = q (i.e., cuando no hay salida, el AF no va a ningn lugar). Induccin: (q,w) = ( (q,x),a), donde x es una cadena, y a es un solo smbolo (i.e., ver a dnde va el AF con x, luego buscar la transicin para el ltimo smbolo a partir de ese estado). Hecho importante con una prueba inductiva directa: realmente representa rutas. Esto es, si w = a1a2 . . . an, y (pi,ai) = pi+1 para toda i = 0, 1, . . ., n-1, entonces (p0,w) = pn. Aceptacin de Cadenas Un AF A = (Q, , ,q0,F) acepta la cadena w si (p0,w) est en F. Lenguaje de un AF El AF A acepta el lenguaje L(A) = {w | (p0,w) F}.

Algunas confusiones frecuentes Una gran fuente de confusin cuando se trabaja con autmatas (o matemticas en general) son los errores de tipo. Ejemplo: No confundir A, con un FA, i.e., un programa, con L(A), el cual es del tipo conjunto de cadenas. Ejemplo: El estado de inicio q0 es del tipo estado pero los estados de aceptacin F son del tipo conjunto de estados. Ejemplo engaoso: Es a un smbolo o una cadena de longitud 1? o Respuesta: Depende del contexto, i.e., se usa en (q,a), donde es un smbolo, o en (q,a), donde es una cadena?1 Start q0 1 0 0 1 q2 1 q3 0 0 q1

Ejemplo: DFA que acepta todas y slo las cadenas que tienen un nmero par de 0s y tambin un nmero par de 1s

Representacin tabular del autmata anterior q0 q1 q2 q3 Ejemplo: Problema 2.2.4.a Autmata Finito No-Determinstico Un autmata finito es no-determinstico cuando se permite que el AF tenga 0 o ms estados siguientes para cada par estado-entrada:0,1 Start q0 0 q1

0 q2 q3 q0 q1

1 q1 q0 q3 q2

En el ejemplo anterior, se puede apreciar que de q0 se puede ir a q0 a q1 con la entrada 0, y esto hace al AF ser no-determinista. Un NFA puede estar en varios estados a la vez o se puede ver que adivina a qu estado ir. Por ejemplo, el siguiente autmata acepta todas las cadenas que terminan en 01:

Lo que pasa al procesar como entrada a 00101 es:

Una herramienta importante para disear procesadores de cadenas, e.g., grep, analizadores lxicos. Es fcil disear NFAs que encuentren secuencias de palabras en texto. NFA Formal Formalmente, un NFA es una quntupla A=(Q, , , q0,F), donde todo es un DFA, pero (q,a) es un conjunto de estados en lugar de un solo estado. De hecho puede ser vaco, tener un solo estado o tener ms estados.

Un NFA acepta, al igual que un DFA, lenguajes regulares Por ejemplo, para el NFA que acepta cadenas que acaban en 01 su funcin de transicin es:

Como puede observarse, todo se especifica en conjuntos. Extensin a Similarmente a un DFA, podemos definir la funcin de transicin extendida como sigue: Base: (q,) = {q}. Induccin: Sea: o (q,x) = {p1, p2, ..., pk}. o (pi,a) = Si para i = 1, 2, ..., k. Entonces (q,xa) = S1 S2 ... Sk. ( p, a ) (q,xa) = p ( q , x )

Por ejemplo, podemos calcular (q0,00101) para el autmata anterior: (q0 , = {q0 } ) (q0 ,0) = (q0 ,0) = {q0 , q1} (q0 ,00 ) = (q0 ,0) ( q1 ,0) = {q0 , q1} (q0 ,001 ) = (q0 ,1) ( q1 ,1) = {q0 , q2 } (q0 ,0010 ) = ( q0 ,0) (q2 ,0) = {q0 , q1} (q0 ,00101 ) = ( q0 ,1) (q1 ,1) = {q0 , q2 } Que tiene un estado final. Lenguajes de un NFA El lenguaje aceptado por un NFA, A, es: L(A)={w: (q0,w)F}

Equivalencia entre un DFA y un NFA Un NFA es normalmente ms fcil de definir, aunque al mismo tiempo, para cualquier NFA N existe un DFA D tal que L(D)=L(N) y viceversa. Para esto se usa la construccin de subconjunto que muestra un ejemplo de cmo un autmata se puede construir a partir de otro. Construccin de Subconjunto 1. Para cada NFA existe un DFA equivalente (acepta el mismo lenguaje).

2. Pero el DFA puede tener un nmero exponencial de estados.

Sea N = (QN, N, N, q0, FN) un NFA. El DFA equivalente construido a partir del subconjunto de construccin es D = (QD, , D, {q0}, FD}, donde: 1. |QD |= 2|QN|; i.e., QD es el conjunto de todos los subconjuntos de QN. 2. FD es el conjunto de conjuntos S en QD tal que S FN .3. Para cualquier S QN yp S

a

,

D ( S , a ) = N ( p, a )

O sea, la unin de todos los estados a partir de p con entrada a D({q1,q2,...,qk},a) = N(p1,a) N(p2,a) ... N(pk,a). La funcin de transicin D

del NFA anterior es:

Al existir 3 estados, tenemos 8 subconjuntos. Esto mismo lo podemos poner como:

Lo cual es un DFA (simplemente cambiando la notacin). Tambin es importante notar que no todos los estados pueden ser alcanzados. En

particular, slo los estados B, E y F son accesibles, por lo que los dems los podemos eliminar. Una forma de no construir todos los subconjuntos para despus encontrar que slo unos cuantos son accesibles, es construir la tabla slo para los estados accesibles (lazy evaluation). Para el ejemplo anterior: D({q0},0) = {q0,q1} D({q0},1) = {q1} D({q0,q1},0) = {q0,q1} D({q0,q1},1) = {q0,q2} = N(q0,1) N(q1,1) D({q0,q2},0) = {q0,q1} D({q0,q2},1) = {q0} Lo que nos queda:

Teorema clave (induccin de |w|, la prueba est en el libro): D({q0},w) = N(q0,w). Lo que queremos probar es que si D = (QD, , D, {q0}, FD) es construido a partir del NFA N = (QN, N, N, q0, FN) usando construccin de subconjuntos, entonces L(D) = L(N). Queremos probar por induccin en w que D ({q0 }, w) = N (q0 , w) . Las dos

funciones de transicin regresan conjuntos de estados de QN, pero la determinstica lo interpreta como uno solo de sus estados QD.

Base: w = en este caso D ({q0 }, ) = N (q0 , ) = {q0 } , Induccin: Tomamos w de longitud n+1 y asumimos que se cumple el enunciado para n, o sea que D ({ q0 }, x) = N (q0 , x) . Sean estos dos conjuntos de estados = { p1 , p2 , , pk } . Dividimos a w en xa.

La definicin de para el NFA nos dice que: N (q0 , w) = N ( pi , a)i =1

k

Por la construccin de subconjuntos: D ({ p1 , p2 , , pk }, a ) = N ( pi , a )i= 1

k

Usando esto, y que

D ({ q0 }, x) = { p1 , p2 , , pk }

tenemos que:k i =1

D ({q0 }, w) = D (D ({q0 }, x ), a ) = D ({ p1 , p2 , , pk }, a ) = N ( pi , a ) = N ( q0 , w)

Tanto D y N aceptan w cuando contiene un estado en FN.

Consecuencia: L(D) = L(N).

Ejemplo: Problema 2.3.1 Ejemplo En este ejemplo un tanto imaginario, se disear un NFA para aceptar cadenas sobre el alfabeto {1, 2, 3} de tal manera que el ltimo smbolo aparezca previamente, sin ninguna intervencin de un smbolo ms alto entre esa previa aparicin del smbolo, e.g., ...11, ...21112, ...312123. Truco: Utilizar el estado de inicio con el significado Creo que todava no se ha visto el smbolo que corresponde al smbolo final Otros tres estados representando una eleccin de que el smbolo con que acaba la cadena se ha visto y se recuerda de que smbolo se trata.

q 1 1,2,3 Start p 2 r 1 3 s 1,2 3 2 t 1

Ejemplo: Subconjunto de Construccin del NFA Previo Un truco prctico importante utilizado por analizadores lxicos y otros procesadores de texto es ignorar los (frecuentemente muchos) estados que no son accesibles desde el estado de inicio (i.e., no hay ruta que lleve a ellos). Para el ejemplo anterior de NFA, de los 32 subconjuntos posibles, solo 15 son accesibles. Calculando las transiciones por demanda obtenemos el siguiente D: --> p pq *pqt pr *prt ps *pst prs *prst pqs *pqst pqr *pqrt pqrs *pqrst 1 pq pqt pqt pqr pqr pqs pqs pqrs pqrs pqst pqst pqrt pqrt pqrst pqrst 2 pr pr pr prt prt prs prs prst prst prs prs prt prt prst prst 3 Ps Ps Ps Ps Ps Pst Pst Pst Pst Pst Pst Ps Ps Pst Pst

Tarea: Problemas 2.4.1.a,b

AUTMATAS FINITOS Y LENGUAJES FORMALES Autmata Finito Con Transiciones- Sea una etiqueta en arcos. No hay ningn cambio extra: la aceptacin de w todava se da como la existencia de la ruta desde un estado de inicio a un estado de aceptacin con etiqueta w. o Pero puede aparecer en los arcos, y significa que hay una cadena vaca (i.e., no tiene una contribucin visible para w). Ejemplo 0 Start q 1 0 1 r s

001 es aceptado siguiendo la ruta q, s, r, q, r, s, con la etiqueta 001 = 001. Podemos disear un autmata que acepte cadenas de nmeros que tengan un signo al inicio opcional, seguida posiblemente de una cadena de decimales, seguida de un punto decimal y posiblemente de otra cadena de decimales.

Ms formalmente: Un -NFA es una quntupla (Q, , , q0, F), donde es una funcin de Qx {} al conjunto potencia de Q.

La tabla de transicin del -NFA del ejemplo anterior es:

Eliminacin de las Transiciones- Las transiciones- son una conveniencia, pero no incrementan la potencia de los FAs. Para eliminar las transiciones-: 1. Calcular la cerradura transitiva slo para los arcos . a. Ejemplo: q r q --> {q}; r -->{r,s}; s-->{r,s}. 2. Si un estado p puede alcanzar al estado q por medio de arcos , y existe una transicin de q a r en la entrada a (no ), entonces adase una transicin de p a r con la entrada a. 3. Convertir el estado p en un estado de aceptacin siempre y cuando p pueda alcanzar algn estado de aceptacin q por medio de arcos . 4. Eliminar todas las transiciones-. s

0 Start q 1 r s

0,1 0,1 Ejemplo De la misma forma como lo hicimos anteriormente, podemos definir las transiciones extendidas para -NFA. Base: (q, ) = ECLOSE (q) L C S Induccin: (q, xa ) = p (( q ,E a )O E ( p ) x ), Por ejemplo, (q0 ,5.6) es: (q0 , ) = {q0 , q1} = ECLOSE (q0 ) (q0 ,5) (q1 ,5) = {q1 , q4 } ECLOSE ( q1 ) ECLOSE (q4 ) = {q1 , q4 } = (q0 ,5)

(q1 ,.) (q4 ,.) = {q2 , q3 } ECLOSE ( q2 ) ECLOSE (q3 ) = {q2 , q3 , q5 } = (q0 ,5.)

(q2 ,6) (q3 ,6) (q5 ,6) = {q3} ECLOSE ( q3 ) = {q3 , q5 } = (q0 ,5.6)

Como antes, el lenguaje aceptado por un -NFA, E, es: L(E)={w: (q0,w)F}, osea todas las cadenas w que van de un estado inicial q0 a al menos un estado final. Se puede demostrar que se puede construir un DFA a partir de un -NFA siguiendo un esquema parecido al de construccin de subconjuntos visto para NFA.QD = {S : S QE S = E C L O SE )} (S qD = E C L O S (E 0 ) q FD = {S : S QD S FE }

D ( S , a) = E C L O S (Ep) : p ( t , a ) , t S}

lo que se calcula para todos los a y conjuntos

S QD

Ejemplo: Problema 2.5.6 Por ejemplo, el DFA correspondiente al -NFA de nmeros decimales (omitiendo todas las transiciones a estados muertos) es:

Se puede demostrar que un lenguaje L es aceptado por algn -NFA E si y solo si L es aceptado por un DFA. Para esto, hacia un sentido es fcil (cambiando un DFA a un -NFA) y para el otro sentido se hace lo mismo que hemos hecho antes, probando con el caso base y el caso inductivo, donde partimos w=xa, asumimos que es verdad para x y probamos para w, solo queahora tomando la cerradura o ECLOSE para los estados.