Tema 4: Aplicación de los autómatas: Lenguajes formales 1 Tema 4: Aplicación de los autómatas: Lenguajes formales 1. Lenguajes formales. Como se ha indicado en la introducción del tema, el concepto de autómata surgió cuando se modelizó matemáticamente el sistema nueronal humano. Sin embargo, se pueden encontrar conexiones con otras ramas, como por ejemplo los lenguajes formales. Definición. letras. Un alfabeto A es un conjunto finito cuyos elementos se denominan Definición. Un lenguaje L sobre el alfabeto A es un subconjunto de Ω A. A los elementos de L se les denominan palabras. Definición. Un lenguaje L sobre el alfabeto A se dice que es finito si L es finito. Definición. Llamaremos lenguaje vacío sobre el alfabeto A a L =. Debemos distinguir entre L y L Λ = {Λ}, esto es el lenguaje que contiene sólo la palabra vacía. Como ya sabemos en Ω A tenemos definida la operación concatenación. Por ello, cuando nos den una palabra x Ω A, podemos verla como la concatenación de varias palabras, alguna de ellas posiblemente vacías. Así, diremos que y 2 es una subpalabra de x si x = y 1 y 2 y 3, donde y i Ω A. Observamos que y 1 ó y 3 pueden ser la palabra vacía. Si y 1 = Λ, diremos que y 2 es una subpalabra inicial y si y 3 = Λ, diremos que y 2 es una subpalabra final. Ejemplos. L 1 = {Λ, a 1 a 2, a 1, a 2 a 1 } es un lenguaje sobre el alfabeto {a 1, a 2 }. L 2 = {a i 1 i N} es un lenguaje sobre el alfabeto {a 1 }. L 1 es un lenguaje finito y L 2 no. En el conjunto L = { L L es lenguaje sobre el alfabeto A}, podemos definir las siguientes operaciones: 1. Suma de dos lenguajes: Dados L 1, L 2 L, L 1 + L 2 = {x Ω A x L 1 x L 2 }.
2 2. Lenguajes regulares 2. Intersección de dos lenguajes: Dados L 1, L 2 L, L 1 L 2 = {x Ω A x L 1 x L 2 }. 3. Complementario de un lenguaje: Dado L 1 L, L c 1 = {x Ω A x L 1 }. 4. Diferencia de dos lenguajes: Dados L 1, L 2 L, Es claro que L 1 L 2 = L 1 L c 2. L 1 L 2 = {x Ω A x L 1 x L 2 }. 5. Concatenación ó producto de dos lenguajes Dados L 1, L 2 L, L 1 L 2 = {x Ω A x = y 1 y 2, y i L i, i = 1, 2}. Es evidente que la concatenación de lenguajes es asociativo por serlo la concatenación de palabras. Además, L y L Λ son elementos cero e identidad para la concatenación de lenguajes sobre el mismo alfabeto. 6. Clausura de un lenguaje: Dado L 1 L, L 1 = L i 1, i=0 donde L i 1 representa el producto de L 1 i veces y L 0 1 = {Λ}. Esto es, la clausura del lenguaje L 1 contiene todas las palabras de Ω A que se pueden obtener como concatenación de palabras de L 1 más la palabra vacía. 2. Lenguajes regulares. Introducimos ahora el concepto de expresión regular. Definición. Una expresión regular sobre el alfabeto A es una palabra de Ω A I, donde I = {+,,, (, )}, satisfaciendo las siguientes condiciones: 1. Cada letra de A y son expresiones regualares. 2. Si α y β son expresiones regulares sobre A, también lo son (α + β), (αβ) y α.
Tema 4: Aplicación de los autómatas: Lenguajes formales 3 3. Nada es expresión regular sobre A, salvo que se obtenga tras la aplicación de un número finito de veces de 1. y 2. Ejemplo., ((a 1 + a 2 )(a 1 + a 2 )) y (a 1 + a 2)a 3 son expresiones regulares sobre el alfabeto A, cuando a 1, a 2, a 3 A. Definición. Sea α una expresión regular sobre el alfabeto A. se llama lenguaje asociado a α, y se denota por α, al lenguaje de Ω A que se obtiene de acuerdo a las siguientes condiciones: 1. = L. 2. a A, a = {a}. 3. α, β expresiones regulares sobre A, (α + β) = α + β, (αβ) = α β, α = α. Ejemplo. = {Λ} = L Λ es el lenguaje asociado a la expresión regular. Por otro lado, el lenguaje asociado a la expresión regular a, donde a A, viene dado por a = a = {a i i N}, entendiendo que a 0 = Λ. Definición. Un lenguaje L sobre el alfabeto A se dice que es regular si existe una expresión regular α tal que L = α. Es fácil comprobar que todo lenguaje finito es regular. Puede suceder también que dos expresiones regulares distintas tengan asociado el mismo lenguaje regular. Por ejemplo, las expresiones regulares (a 1 + a 2 ) y (a 1a 2) tienen por lenguaje asociado a Ω A, donde A = {a 1, a 2 }. 3. Relacin entre los lenguajes regulares y los autmatas. Definición. Sea S = (S, E, δ) un semiautómata con estado inicial e 1 y E 1 E. Se llama lenguaje representado por S respecto de E 1 al conjunto L(S, E 1 ) = {x Ω S ˆδ(e 1, x) E 1 }. Es obvio que si E 1 = {e i1,..., e ir }, entonces r L(S, E 1 ) = L(S, e ). j=1
4 3. Relacin entre los lenguajes regulares y los autmatas Ejemplo. Consideramos el semiautómata S = (S, E, δ), donde S = a 1, a 2, E = {e 1, e 2, e 3 } y δ : E S E (e 1, a 1 ) e 2 (e 1, a 2 ) e 3 (e 2, a 1 ) e 2 (e 2, a 3 ) e 2 (e 3, a 1 ) e 1 (e 3, a 2 ) e 2 Entonces, L(S, {e 1 }) = {(a 2 a 1 ) i i N {0}}. Observamos que el lenguaje del ejemplo anterior es un lenguaje regular, ya que es el lenguaje asociado a la expresión regular (a 2 a 1 ). En lo que sigue vamos a estudiar la relación existente entre los lenguajes regulares y los lenguajes asociados a semiautómatas. Definición. Sea S = (S, E, δ) un semiautómata y e i, e j E. Diremos que de e i se pasa a e j si existe x Ω S tal que ˆδ(e i, x) = e j. Si x = s 1... s r, entonces a δ(e i, s 1 ), ˆδ(e i, s 1 s 2 ),..., ˆδ(ei, s 1 s 2 s r 1 ) se les llama estados intermedios del paso de e i a e j mediante x. Definición. Sea S = (S, E, δ) un semiautómata tal que E = {e 1,..., e n }, y sean i, j {1,..., n} y k {0, 1,..., n}. Se llama L k = {x Ω S x = s i1... s ir, ˆδ(e i, x) = e j y ˆδ(e i, s i1 s it ) E {e 1,..., e k }, t {1,..., r 1}} entendiendo que si k = 0 la última condición significa que no hay estados intermedios en el paso de e i a e j. Esto es, L 0 = {x Ω S δ(e i, x) = e j y no hay estados intermedios} y L n = {x Ω S δ(e i, x) = e j }. Un caso especial es cuando consideramos L n 1j que coincide con L(S, e j). En lo que sigue vamos a probar que L k es un lenguaje regular. En primer lugar relacionamos L k con L k 1 rs para determinados índices r y s. Lema 3.1. Sea S = (S, E, δ) un semiautómata tal que E = {e 1,..., e n }, y sean i, j, k {1,..., n}. Entonces, L k = L k 1 + L k 1 ( Lk 1 k 1.
Tema 4: Aplicación de los autómatas: Lenguajes formales 5 Demostración. L k Lk 1 + L k 1 ( Lk 1 k 1. Sea x L k. Entonces, ˆδ(e i, x) = e j y los estados intermedios que aparecen son pertenecen al conjunto {e 1,..., e k }. Si e k no es estado intermedio, entonces x L k 1. Si e k es un estado intermedio, entonces podemos escribir x = y 1 y 2 y 3, donde y i Ω S y tales que ˆδ(e i, y 1 ) = e k y e k no es estado intermedio ˆδ(e k, y 2 ) = e k y los estados intermedios pertenecen a {e 1,... e k } ˆδ(e k, y 3 ) = e j y e k no es estado intermedio. Por tanto, y 1 L k 1 y y 3 L k 1. A su vez, descomponemos y 2 = z 1... z t de forma que Entonces, y 2 ( L k 1 ). ˆδ(e k, z r ) = e k y e k no es estado intermedio para r = 1,..., t. L k 1 + L k 1 ( Lk 1 k 1 entonces x L k ya que L k 1 ( Lk 1 k 1. Si x L k 1,, entonces podemos descomponer x = y 1 y 2 y 3, donde y 1 L k 1 L k. Sea x L k 1 L k. Si x L k 1, y 2 ( L k 1 ( Lk 1 + L k 1 k 1 ) y y 3 L k. Pero entonces, ˆδ(e i, x) = ˆδ(ˆδ(ˆδ(e i, y 1 ), y 2 ), y 3 ) = ˆδ(ˆδ(e k, y 2 ), y 3 ) = ˆδ(e k, y 3 ) = e j y los estados intermedios que aparecen cuando calculamos ˆδ(e i, y 1 ) pertenecen al conjunto {e 1,..., e k 1 }, ˆδ(e k, y 2 ) pertenecen al conjunto {e 1,..., e k } y ˆδ(e k, y 3 ) pertenecen al conjunto {e 1,..., e k 1 }. Por tanto, x L k. Proposición 3.2. Sea S = (S, E, δ) un semiautómata tal que E = {e 1,..., e n }, y sean i, j {1,..., n} y k {0,..., n}. Entonces, L k es un lenguaje regular. Demostración. (Por inducción sobre k) Si k = 0, entonces L 0 S {Λ} ó L 0 = y en cualquier caso es un lenguaje regular. Supongamos que el resultado es cierto para k < t y veamoslo para k = t. Entonces, por el lema anterior sabemos que L t = L t 1 y empleando inducción, tenemos que L t 1 + L t 1 it ( L t 1 t 1 tt ) L tj, L t 1 it, L tt t 1 y L t 1 tj son lenguajes regulares. Como la suma, concatenación y clausura de lenguajes regulares es regular, se sigue que L t es regular. Como Corolario de esta proposición, tenemos
6 3. Relacin entre los lenguajes regulares y los autmatas Corolario 3.3. Sea S = (S, E, δ) un semiautómata tal que E = {e 1,..., e n }. Entonces, L(S, e j es un lenguaje regular para todo j {1,..., n}. Corolario 3.4. Sea S = (S, E, δ) un semiautómata tal que E = {e 1,..., e n } y E 1 E. Entonces, L(S, E 1 ) es un lenguaje regular. Ahora nos falta ver que a partir de un lenguaje regular se puede construir un semiautómata y un subconjunto E 1 de forma que el lenguaje asociado al semiautómata respecto de E 1. En primer lugar, vamos a dar un ejemplo del que extraeremos la estrategia para probar el caso general. Ejemplo. Sea L el lenguaje regular cuya expresión regular viene dada por a(a + b) + abb ab, esto es, L = a(a + b) + abb ab. Paso 1. Transformamos la expresión regular que define L en otra en la que las letras que lo forman aparezcan subindicadas por la posición que ocupan a(a + b) + abb ab a 1 (a 2 + b 3 ) + a 4 b 5 b 6a 7 b 8 A c i le llamaremos descendiente de c, siendo c una de las letras que parece en la expresión regular. Al lenguaje que tiene por expresión regular a la nueva lo denotamos por L 1, esto es, L 1 = a 1 (a 2 + b 3 ) + a 4 b 5 b 6a 7 b 8 Paso 2. Localizamos (i) Pares de letras que aparezcan consecutivas en palabras de L 1. En nuestro caso, P ={(a 1, a 2 ), (a 1, b 3 ), (a 2, a 2 ), (a 2, b 3 ), (b 3, a 2 ), (b 3, b 3 ), (b 4, a 5 ), (a 5, b 6 ), (b 6, b 6 ), (a 5, a 7 ), (b 6, a 7 ), (a 7, b 8 ), (b 8, b 8 )}. (ii) Letras de inicio de palabra. En nuestro caso, I = {a 1, b 4 }. (iii) Letras de final de palabra. En nuestro caso, F = {a 1, a 2, b 3, a 7, b 8 }.
Tema 4: Aplicación de los autómatas: Lenguajes formales 7 Paso 3. Se define el semiautómata S = (S, E, δ), donde S es el albabeto del lenguaje L y la función δ y E se definen como sigue: Dado c S, δ(e 1, c) = {descendientes de c que satisfacen 2(ii) } c S δ(e i, c) = {descendientes de c que siguen a alguna letra que aparece en e i } i > 1. En nuestro caso, S = {a, b}, δ(e 1, a) = {a 1 } = e 2 δ(e 1, b) = {b 4 } = e 3 δ(e 2, a) = {a 2 } = e 4 δ(e 2, b) = {b 3 } = e 5 δ(e 3, a) = {a 5 } = e 6 δ(e 3, b) = = e 7 δ(e 4, a) = {a 2 } = e 4 δ(e 4, b) = {b 3 } = e 5 δ(e 5, a) = {a 2 } = e 4 δ(e 5, b) = {b 3 } = e 5 δ(e 6, a) = {a 7 } = e 8 δ(e 6, b) = {b 6 } = e 9 δ(e 7, a) = = e 7 δ(e 7, b) = = e 7 δ(e 8, a) = = e 7 δ(e 7, b) = {b 8 } = e 10 δ(e 9, a) = {a 7 } = e 8 δ(e 9, b) = {b 6 } = e 9 δ(e 10, a) = = e 7 δ(e 10, b) = {b 8 } = e 10 y E = {e 1,..., e 10 }. Paso 4. Se toma como E 1 al subconjunto de estados de E tales que en su definición contienen al menos una letra final de palabra de L 1. En nuestro caso, E 1 = {e 2, e 4, e 5, e 8, e 10 }. Siguiendo estos mismos pasos, se prueba Proposición 3.5. Sea L un lenguaje regular. Entonces, existe S = (S, E, δ) y E 1 E tal que L = L(S, E 1 ).