1 Curso Básico de Computación 2.1 Autómatas finitos y expresiones regulares 2.5 Expresiones Regulares Los lenguajes aceptados por un AF son facilmente descritos por una simple expresión llamada expresión regular. Sea Σ un conjunto finito de sı́mbolos y sean L, L1 y L2 conjuntos de cadenas de Σ∗ . La concatenación de L1 y L2 , denotada por L1 L2 , es el conjunto {xy | x esta en L1 e y esta en L2 }. Definimos L0 = {} y Li = LLi−1 para toda i ≥ 1. La cerradura de Kleene de L, denotada por L∗ , es el conjunto ∗ L = ∞ [ Li i=0 y la cerradura positiva de L, denotada por L+ es el conjunto + L = ∞ [ Li i=1 + Note que L contiene a si y sólo si L la contiene. Ejemplo: Sea L1 = {10, 1} y L2 = {011, 11}. Entonces L1 L2 = {10011, 1011, 111}. Tambien {10, 11}∗ = {, 10, 11, 1010, 1011, 1110, 1111, . . . } Sea Σ un alfabeto. Las expresiones regulares sobre Σ y los conjuntos que ellas denotan son definidas recursivamente como: 1) φ es una expresión regular y denota al conjunto vacı́o. 2) es una expresión regular y denota al conjunto {}. 3) Para cada a en Σ, a es una expresión regular y denota al conjunto {a}. 4) Si r y s son expresiones regulares que denotan los lenguajes R y S, respectivamente, entonces (r+s), (rs) y (r ∗ ) son expresiones regulares que denotan los conjuntos R ∪ S, RS y R∗ , respectivamente. Ejemplo: 00 es una expresión regular que representa a {00}. La expresión (0 + 1)∗ denota todas las cadenas de 00 s y 10 s. Ası́ (0 + 1)∗ 00(0 + 1)∗ denota todas las cadenas de 0’s y 1’s con al menos dos ceros consecutivos. Feliú Sagols Troncoso Matemáticas-Cinvestav 2 Equivalencia entre autómatas finitos y expresiones regulares Demostraremos que los lenguajes que aceptan los autómatas finitos son precisamente los lenguajes denotados por las expresiones regulares. Teorema 2.3: Sea r una expresión regular. Entonces existe un AFND con transiciones- que acepta L(r). (L(r) es el lenguaje denotado por r). Demostración: a) r = b) r = ∅ c) r = a d) r = r1 + r2 e) r = r1 r2 f) r = r1∗ Start (a) r = q 0 Start q 0 ε (b) r = φ Start qf (c) r = a M1 1 a q 0 (b) q ε Start qf f ε 1 f q 0 0 ε ε q 2 M2 f 2 (d) q Start 1 M1 ε f1 q 2 M2 f 2 (e) ε q Start 0 ε q M1 1 ε f f 0 1 ε (f) Ejemplo: Construyamos un AFND para la expresión regular 01∗ +1. La expresión 01∗ +1 es realmente (0(1∗ ))+1, asi que es de la forma r1 + r2 , donde r1 =01∗ y r2 =1. El autómata para r2 es: Inicio q1 1 q2 Se puede expresar r1 como r3 r4 , donde r3 =0 y r4 =1∗ . 3 Curso Básico de Computación El autómata para r3 es: q3 Inicio q4 0 r4 es r5∗ , donde r5 es 1, y el AFND para r5 es: q5 Inicio q6 1 Finalmente se tienen los siguientes AFND: a) Para r4 =1∗ q7 Inicio q5 1 q6 q5 1 q8 Inicio b) Para r1 =01∗ q3 0 q4 q7 q1 Inicio q2 q10 q3 0 q4 q7 q5 1 q8 q9 c) Para r=01∗ +1 1 q6 Teorema 2.4: Si L es aceptado por un AFD, entonces L es denotado por una expresión regular. Demostración: Sea L el conjunto aceptado por el AFD M = ({q1 , · · · qn }, Σ, δ, q1 , F ) k Sea Rij el conjunto de todas las cadenas que toma el autómata finito para ir del estado qi al estado qj sin pasar por algún estado numerado mayor que k. k Definimos a Rij como k Rij = {x ∈ Σ∗ | δ(qj , x) = qj y ∀ prefijo y de x δ(qi , y) = ql donde l ≤ k} k Recursivamente Rij se define como: k−1 k−1 ∗ k−1 k k−1 ) Rkj ∪ Rij (Rkk Rij = Rik q6 q8 Feliú Sagols Troncoso 0 Rij Matemáticas-Cinvestav = 4 {a | δ(qi , a) = qj } si i 6= j {a | δ(qi , a) = qj } ∪ {} si i = j k Ahora hay que demostrar que para cada i, j, k existe una expresión regular r ij k que denota el lenguaje Rij , y procedemos por inducción sobre k. 0 Base: (k = 0). Rij es un conjunto de cadenas que pueden ser o un solo 0 sı́mbolo. Ası́ rij se puede escribir como a1 + a2 + · · ·+ ap (o a1 + a2 + · · ·+ ap + si i = j), donde {a1 , a2 , · · · , ap } es el conjunto de todos los sı́mbolos a tales que δ(qi , a) = qj . Si no existen tales a’s, entonces ∅ (o en el caso de i = j) 0 sirven como rij . k Inducción: La fórmula recursiva de Rij involucra sólo las siguientes operaciones de expresiones regulares: unión, concatenación y cerradura. Por la hipótesis de k−1 k−1 inducción, para cada l y m existe una expresión regular rlm tal que L(rlm )= k−1 k Rlm . Ası́ para rij se selecciona la expresión regular k−1 k−1 ∗ k−1 k−1 rik (rkk ) rkj + rij Para terminar la demostración solo hay que observar que [ n L(M ) = R1j qj ∈F Ejemplo: k Sea M el AF de la figura 2.5, los valores de rij para toda i, j y para toda k=0, 1, 2 son: k r11 k r12 k r13 k r21 k r22 k r23 k r31 k r32 k r33 k=0 k=1 k=2 (00)∗ 0 0 0(00)∗ 1 1 0∗ 1 0 0 0(00)∗ + 00 (00)∗ 1 1 + 01 0∗ 1 ∅ ∅ (0 + 1)(00)∗ 0 0+1 0+1 (0 + 1)(00)∗ + (0 + 1)0∗ 1 1 Inicio q1 0 q2 0 1 q3 0,1 Figura 2.5 Usaremos las siguientes expresiones 5 Curso Básico de Computación (r + s)t = rt + st ( + r)∗ = r ∗ 1 La expresión r22 esta dada por 1 0 0 ∗ 0 0 r22 = (r21 )(r11 ) r12 + r22 =0()∗ 0+ Similarmente 2 1 1 ∗ 1 1 r13 = r12 (r22 ) r23 + r13 = 0( + 00)∗ (1 + 01) + 1 Dado que ( + 00)∗ es equivalente a (00)∗ y 1+ 01 es equivalente a (+ 0)1, se tiene 2 r13 = 0(00)∗ ( + 0)1+1 Como (00)∗ (+ 0) es equivalente a 0∗ . Ası́ 0(00)∗ (+0)1+1 es equivalente a 00∗ 1+1 y por lo tanto a 0∗ 1. Para completar la construcción de la expresión regular para M , la cual es 3 3 r12 + r13 , escribimos 3 2 2 ∗ 2 2 r12 = r13 (r33 ) r32 + r12 = 0∗ 1( + (0 + 1)0∗ 1)∗ (0 + 1)(00)∗ + 0(00)∗ = 0∗ 1((0 + 1)0∗ 1)∗ (0 + 1)(00)∗ + 0(00)∗ y 3 2 2 ∗ 2 2 r13 = r13 (r33 ) r33 + r13 = 0∗ 1( + (0 + 1)0∗ 1)∗ ( + (0 + 1)0∗ 1) + 0∗ 1 = 0∗ 1((0 + 1)0∗ 1)∗ Por lo tanto 3 3 r12 + r13 = = 0∗ 1((0 + 1)0∗ 1)∗ ( + (0 + 1)(00)∗ ) + 0(00)∗ 2.6 Autómata Finito Bidireccional Un autómata finito determinı́stico de doble vı́a (AFD2) es una 5-tupla M = (Q, Σ, δ, q0 , F ), donde δ transforma Q × Σ a Q × {L, R}. Si δ(q, a) = (p, L), entonces en el estado q, con entrada a, el AFD2 entra al estado p y mueve su cabeza a la izquierda un cuadro de la cinta. Si δ(q, a) = (p, R), el AFD2 entra al estado p y mueve su cabeza hacia la derecha un cuadro. Introducimos el concepto de descripción instantánea (DI) para un AFD2, que describe la cadena de entrada, el estado actual y la posición actual de la cabeza. También introducimos la relación en DI tal que I1 I2 si y sólo si M puede ir de I1 a I2 en un movimiento. M M Feliú Sagols Troncoso Matemáticas-Cinvestav 6 Una DI de M es una cadena en Σ∗ QΣ∗ . Para la DI wqx, donde w, x ∈ Σ∗ y q ∈ Q, se pretende que represente los siguientes hechos: 1) wx es una cadena de entrada, 2) q es el estado actual, 3) la cabeza de entrada esta analizando el primer sı́mbolo de x. Si x = , entonces la cabeza de entrada se ha movido más allá del extremo derecho de la entrada. Definimos la relación M o ` por: 1)a1 a2 · · · ai−1 qai · · · an ` a1 a2 · · · ai−1 ai p ai+1 · · · an siempre que δ(q, ai ) = (p, R), 2)a1 a2 · · · ai−2 ai−1 qai · · · an ` a1 a2 · · · ai−2 p ai−1 ai · · · an siempre que δ(q, ai ) = (p, L) y i > 1. * la cerradura transitiva y reflexiva de `. Es decir, I Sea * DI I, y I1 Ik siempre que I1 ` I2 ` · · · ` Ik . Definimos: * L(M ) = {w | q0 w wp para algún p ∈ F } * I para toda Ejemplo: Considere el siguiente AFD2 M : comienza en el estado q0 , M repite un ciclo de movimientos donde la cabeza se mueve hacia la derecha hasta que encuentre dos 1’s, entonces se mueve a la izquierda hasta encontrar un 0, luego el punto q0 es el inicio y el ciclo de repite. M tiene 3 estados, todos son estados finales y δ esta dada por: 0 1 q0 (q0 , R) (q1 , R) q1 (q1 , R) (q2 , L) q2 (q0 , R) (q2 , L) Considere la entrada 101001. Como q0 es el estado inicial, la primera DI es q0 101001. Para obtener la seguna DI, note que el sı́mbolo que se encuentra a la derecha de q0 en la primera DI es 1 y δ(q0 , 1) = (q1 , R). Entonces la segunda DI es 1q1 01001. El resultado se muestra en la siguiente tabla: q0 101001 ` ` ` ` ` ` ` ` ` ` 1q1 01001 10q1 1001 1q2 01001 10q0 1001 101q1 001 1010q1 01 10100q1 1 1010q2 01 10100q0 1 101001q1 7 Curso Básico de Computación Ası́ 101001 ∈ L(M ). Secuencia de cruces La lista de estados debajo de cada frontera entre cuadros se llama secuencia de cruces. La secuencia de cruces del ejemplo anterior es: 1 q0 0 q1 1 0 0 1 q1 q 2 q0 q1 q1 q1 q2 q 0 q 1 Note que un AFD2 no pueden tener secuencia de cruces que repita estados con la cabeza moviendose a la misma dirección, en este caso, entrarı́a en un ciclo y nunca terminarı́a. Otras observaciones acerca de la secuencias de cruces es si la primera frontera es cruzada, la cabeza se debe mover a la derecha. Subsecuencias de cruces deben alternar direcciones. Ası́ elementos impares de la secuencia de cruces representan movimientos hacia la derecha y elementos pares representan movimientos hacia la izquierda. Si una entrada es aceptada, todas las secuencias de cruces tienen longitud impar. Una secuencia de cruces q1 , q2 , ..., qk es válida si su longitud es impar y no hay dos elementos pares o dos elementos impares iguales. Un ADF2 con s estados pueden tener secuencias válidas de longitud a lo más 2s, ası́ el número de secuencias válidas es finito. Definimos caza por la derecha y caza por la izquierda de las secuencias de cruces recursivamente por i a v. i) La secuencia nula tiene secuencia nulas que cazan por la derecha e izquierda. ii) Si q3 , ..., qk caza por la derecha a p1 , ..., pl y δ(q1 , a) = (q2 , L), entonces q1 , ..., qk caza por la derecha a p1 , ..., pl . iii) Si q2 , ..., qk caza por la izquierda a p2 , ..., pl y δ(q1 , a) = (p1 , R), entonces q1 , ..., qk caza por la derecha a p1 , ..., pl . iv) Si q1 , ..., qk caza por la izquierda a p3 , ..., pl y δ(p1 , a) = (p2 , R), entonces q1 , ..., qk caza por la izquierda a p1 , ..., pl . v) Si q2 , ..., qk caza por la derecha a p2 , ..., pl y δ(p1 , a) = (q1 , L), entonces q1 , ..., qk caza por la izquierda a p1 , ..., pl . Feliú Sagols Troncoso Matemáticas-Cinvestav 8 Equivalencia entre Autómatas Finitos de Una y Doble Vı́a Teorema 2.5: Si L es aceptado por un AFD2, entonces L es un conjunto regular. Demostración: Sea M = (Q, Σ, δ, q0 , F ) un AFD2. La demostración consiste en construir un AFND M 0 que acepte L(M ). Definimos M 0 = (Q0 , Σ, δ 0 , q00 , F 0 ), donde 1. Q0 consiste de todas las secuencias válidas para M . 2. q00 es la secuencia de cruce que consiste solo de q0 . 3. F 0 es el conjunto de todas las secuencias de cruce de longitud 1 que consiste de un estados de F . 4. δ 0 (c, a) = {d | d es una secuencia válida que es cazada por la derecha con c y con entrada a} Para terminar se tiene que demostrar que L(M 0 ) = L(M ). Ejemplo: Consideremos la construcción de un AFND M 0 equivalente a un AFD2 M del ejemplo anterior. Como q2 entra solo cuando se mueve hacia la izquierda, y q1 , q3 entran solo cuando se mueven a la derecha, todas los componentes pares de las secuencias válidas deben ser q2 . Existen solo 4 secuencias de cruces de interés: Secuencia Caza por la Caza por la Válida derecha en 0 derecha en 1 [q0 ] [q0 ] [q1 ] [q1 ] [q1 ], [q1 , q2 , q0 ] − [q0 , q2 , q1 ] − − [q1 , q2 , q0 ] − [q1 ] Note que los estados [q0 , q2 , q1 ] se pueden quitar y el AFND M 0 que se obtiene es el siguiente: 0 Start [ q0] 0 1 [ q1] 1 0 [q , q , q ] 1 2 0 9 Curso Básico de Computación Note que L(M ) = ( + 1)(0 + 01)∗ . Considere la entrada 1001, la cual es aceptada por M 0 usando la secuencia de estados [q0 ], [q1 ], [q1 ], [q1 , q2 , q0 ], [q1 ]. Y en la siguiente figura se visualiza la secuencia de cruces. 1 q 0 0 q 1 0 q 1 1 q 1 q 2 q0 q1 2.7 Autómatas Finitos con Salida Una limitación de los autómatas finitos es su salida, ésta se limita a una señal binaria: “aceptado/no aceptado”. Ahora consideremos modelos cuyas salidas pertenecen a un alfabeto arbitrario. Primero consideremos autómatas donde las salidas se asocian a los estados (Máquinas de Moore) y luego consideremos autómatas cuyas salidas se asocian con las transiciones (Máquinas de Mealy). Máquina de Moore Una Máquina de Moore es una 6-tupla (Q, Σ, ∆, δ, λ, q0 ), donde Q, Σ, δ y q0 son iguales que en un AFD. ∆ es el alfabeto salida y λ es una transformación de Q a ∆, que da la salida asociada con cada estado. La salida de M en respuesta a la entrada a1 a2 · · · an , n ≥ 0, es λ(q0 )λ(q1 ) · · · λ(qn ), donde q0 , q1 , · · · , qn es la secuencia de estados tal que δ(qi−1 , ai ) = qi , para 1 ≤ i ≤ n. Note que cualquier máquina de Moore da la salida λ(q0 ) en respuesta a la entrada . Un AFD puede verse como un caso especial de una Máquina de Moore donde el alfabeto salida es {0,1} y el estado q es de aceptación si y sólo si λ(q) = 1. Ejemplo: Suponga que deseamos determinar el residuo módulo 3 para cada cadena binaria tratada como un entero binario. Observe que si i es binario seguido por un 0, la cadena resultante tiene valor 2i, y si i es binario seguido por un 1, la cadena resultante tiene valor 2i + 1. Si el residuo de i/3 es p, entonces el residuo de 2i/3 es 2p módulo 3. Si p = 0, 1 o 2, entonces 2p módulo 3 es 0, 2 o 1, respectivamente. Similarmente, el residuo de (2i + 1)/3 es 1, 0, o 2, respectivamente. Por lo tanto, se diseña una máquina de Moore con 3 estados q0 , q1 y q2 , donde qj es entero si y sólo si la entrada hasta este punto tiene residuo j. Se define λ(qj ) = j para j = 0, 1 y 2. En la figura 2.6 se muestra el diagrama de transición. Feliú Sagols Troncoso 0 Inicio 1 q0 0 Matemáticas-Cinvestav 10 1 0 q1 0 1 2 q2 1 Figura 2.6 Máquina de Mealy Una Máquina de Mealy es una 6-tupla M = (Q, Σ, ∆, δ, λ, q0 ), cuyos elementos son como en la máquina de Moore, excepto que λ transforma Q × Σ en ∆. Es decir, λ(q, a) da la salida asociada con la transición del estado q con entrada a. La salida de M en respuesta a la entrada a1 a2 · · · an es λ(q0 , a1 )λ(q1 , a2 ) · · · λ(qn−1 , an ) donde q0 , q1 , · · · , qn es la secuencia de estados tales que δ(qi−1 , ai ) = qi para 1 ≤ i ≤ n. Note que la entrada en una máquina de Mealy da la salida . Equivalencia entre las máquinas de Moore y de Mealy Sea M una Máquina de Moore o de Mealy. Definimos TM (w) como la salida producida por M con entrada w. Note que si M es una máquina de Mealy y M 0 es una máquina de Moore entonces |TM (w)| es uno menos que |TM 0 (w)| para cada w. Si M es una máquina de Mealy y M 0 es una máquina de Moore se dice que son equivalentes si para toda entrada w, bTM (w) = TM 0 (w), donde b es la salida de M 0 para su estado inicial. Teorema 2.6 Si M1 = (Q, Σ, ∆, δ, λ, q0 ) es una máquina de Moore, entonces existe una máquina de Mealy M2 equivalente a M1 . Demostración: Sea M2 = (Q, Σ, ∆, δ, λ0 , q0 ) y definimos a λ0 (q, a) = λ(δ(q, a)) para todo estado q y entrada a. Entonces para M1 y M2 entra la misma secuencia de estados con la misma entrada, y con cada transición M2 emite la salida que M1 asocia con el estado de entrada. Teorema 2.7 Si M1 = (Q, Σ, ∆, δ, λ, q0 ) es una máquina de Mealy, entonces existe una máquina de Moore M2 equivalente a M1 . Demostración: Sea M2 = (Q × ∆, Σ, ∆, δ 0 , λ0 , [q0 , b0 ]), donde b0 es un miembro de ∆ seleccionado arbitrariamente. Es decir, los estados de M2 son pares [q, b]. Definimos λ0 ([q, b], a) = [δ(q, a), λ(q, a)] y λ0 ([q, b]) = b. La segunda componente de un estado [q, b] de M2 es la salida realizada por M1 en alguna transición en el estado q. Solo el primer componente de los estados de M2 determinan los movimientos realizados por M2 . Es muy fácil demostrar por inducción sobre n que si a M1 entran a los estados q0 , q1 , ..., qn las entradas 11 Curso Básico de Computación a1 a2 · · · an y emite las salidas b1 , b2 , ..., bn , entonces para M2 entran los estados [q0 , b0 ], [q1 , b1 ], ..., [qn , bn ] y emite las salidas b0 , b1 , ..., bn . Ejemplo: Sea M1 = ({q0 , p0 , p1 }, {0, 1}, {y, n}, δ, λ, q0) la máquina de Mealy de la figura 2.7. La etiqueta a/b en el arco que va del estado p al estado q indica que δ(p, a) = q y λ(p, a) = b. Los estados de M2 son [q0 , y], [q0 , n], [p0 , y], [p0 , n], [p1 , y] y [p1 , n]. Escoja b0 = n y [q0 , n] el estado inicial de M2 . La transición y salidas de M2 se demuestran en la figura 2.8. 0/n q0 Inicio 0/y p0 1/n 0/n 1/n p1 1/y Figura 2.7 Inicio 1 n n [q 0 , n] 0 n [p 0 , n] [p 1 , n] 1 0 0 1 0 [q 0 , y] y 1 0 0 [p 0 , y] [p 1 , y] y y 1 Figura 2.8 1
© Copyright 2024