algunas soluciones - Universidad Rey Juan Carlos
Transcripción
algunas soluciones - Universidad Rey Juan Carlos
Universidad Rey Juan Carlos Curso 2007–2008 Teorı́a de Autómatas y Lenguajes Formales Ingenierı́a Técnica en Informática de Sistemas Hoja de Problemas 1 Lenguajes Formales Nivel del ejercicio : (!) básico, (♣) medio, (♠) avanzado. 1. (!) Sea Σ = {0, 1, 2}, x = 00, y = 1, z = 210. Definir las siguientes palabras : xy, xz, yz, xyz, (xy)−1 , x3 , x2 y2 , (xy)2 , (zxx)3 . Indicar sus longitudes. ¿Contiene W(Σ) la palabra vacı́a λ?. Solución: xy = 001 xz = 00210 yz = 1210 xyz = 001210 (xy)−1 = 100 x3 = 000000 x2 y2 = 000011 (xy)2 = 001001 (zxx)3 = 210000021000002100000 |xy| = 3 |xz| = 5 |yz| = 4 |xyz| = 6 |(xy)−1 | = 3 |x3 | = 6 |x2 y2 | = 6 |(xy)2 | = 6 |(zxx)3 | = 21 2. (!) Describir las palabras pertenecientes a los siguientes lenguajes: L1 = {0n 1n | n ≥ 1} y L2 = {0i 1j | 0 ≤ i ≤ j} Solución: L1 es un lenguaje binario, palabras formadas por ceros y unos, donde todos los ceros preceden a los unos y existe el mismo número de ceros que de unos. Además, no se reconoce la palabra vacı́a (λ), ya que si nos fijamos, siempre nos exige que haya por lo menos un cero y un uno. L2 es un lenguaje binario, palabras formadas por ceros y unos, donde siempre hay un número mayor o igual de unos que de ceros y los ceros preceden siempre a los unos. Reconoce la cadena vacı́a (λ). 3. (!) Describir formalmente (en notación conjuntista) el lenguaje formado por 0’s y 1’s, en el que hay el doble de 0’s que de 1’s y todos los 0’s van delante de los 1’s. Página 1 de 5 Hoja de Problemas 1 (cont.) Solución: L = {02i 1i | i ≥ 1} 4. (!) Describir formalmente (en notación conjuntista) el lenguaje formado por palabras que comienzan y terminan en a teniendo entre medias 3 o más b’s. Solución: Σ = {a, b}, L = {abn a|n ≥ 3} 5. (!) Dados el alfabeto Σ = {1, 2, 3, a, b, c}, y los lenguajes L1 = {1, 2, 3} y L2 = {a, b, c}, definir los lenguajes L21 , L1 ∪ L2 , L1 L2 y (L1 L2 )2 . Solución: L21 = {11, 12, 13, 21, 22, 23, 31, 32, 33} L1 ∪ L2 = {1, 2, 3, a, b, c} L1 L2 = {1a, 1b, 1c, 2a, 2b, 2c, 3a, 3b, 3c} (L1 L2 )2 = {1a1a, 1a1b, 1a1c, 1a2a, . . . , 3c3c} 6. (!) Sea L = {ab, aa, baa}. Indicar cuáles de las siguientes palabras pertenecen a L+ : abaa, abab, abaabaaabaa, aaaabaaaa, baaaaabaaaab, baaaaabaa, λ. Solución: descomp. abaa ∈ L+ −→ abab ∈ L+ descomp. aaaabaaaa ∈ L+ descomp. abaabaaabaa ∈ L+ baaaaabaaaab ∈ / L+ + baaaaabaa ∈ L λ∈ / L+ ab !"#$ aa !"#$ ab !"#$ ab !"#$ −→ descomp. −→ −→ descomp. −→ descomp. ab !"#$ aa !"#$ baa !"#$ ab !"#$ aa !"#$ aa !"#$ aa !"#$ baa !"#$ aa !"#$ baa !"#$ aa !"#$ ab !"#$ aa !"#$ aab !"#$ aab∈L / −→ baa !"#$ aa !"#$ ab !"#$ aa !"#$ (Si λ ∈ / L, entonces λ ∈ / L+ ) 7. (♣) Sean L1 = {an bn+1 | n ≥ 1} y L2 = {w | num. a# s = num. b# s}. ¿Es L1 = L∗1 ?. ¿Y L2 = L∗2 ?. Página 2 de 5 Hoja de Problemas 1 (cont.) Solución: Para demostrar las igualdades entre conjuntos (A = B) debemos demostrar que existe doble inclusión (que A ⊆ B y B ⊆ A). Es decir, que todos los componentes de A están en B y viceversa, que todos los componentes de B están en A. L1 = L∗1 En ningún caso puede ser que L1 = L∗1 . La razón está en que L∗1 contiene la palabra vacı́a (λ) por definición, mientras que L1 no la contiene. Por lo tanto, no se cumple L∗1 ⊆ L1 . L2 = L∗2 % i Que L2 ⊆ L∗2 se deriva de la propia definición del cierre (L∗ = ∞ i=0 L ). Por lo que nos queda por demostrar que L∗2 ⊆ L2 . Como λ ∈ L∗2 , debemos demostrar que también λ ∈ L2 . Esto es cierto, ya que en la palabra vacı́a el número de a’s es igual al número de b’s (ambas cero). Por lo tanto, λ ∈ L2 . Por otro lado debemos ver si el resto de palabras incluı́das en L∗2 pertenecen a L2 . Eso también es cierto, ya que L∗2 se forma mediante la (múltiple) concatenación de palabras del lenguaje L2 . Si las palabras que estamos concatenando tienen igual número de a’s que de b’s, siempre estamos añadiendo el mismo número de cada una de las letras a la palabra resultante y, por lo tanto, la palabra resultado también se encuentra en L2 . Por lo tanto, podemos afirmar que L∗2 ⊆ L2 . Como L2 ⊆ L∗2 y L∗2 ⊆ L2 , entonces podemos decir que L2 = L∗2 . 8. (♣) ¿Existe algún lenguaje tal que (L∗ ) = (L)∗ ?. Solución: Para demostrarlo utilizaremos la definición del cierre que hemos visto anteriormente. Podemos decir que λ ∈ (L)∗ , pertenezca o no a L, gracias a la propia definición del cierre de un lenguaje. Por la misma razón, podemos afirmar que λ ∈ (L∗ ). Como λ ∈ (L∗ ), entonces λ ∈ / (L∗ ). Por lo tanto, hemos encontrado un elemento (la palabra vacı́a λ) que, perteneciendo a (L)∗ , no pertenece a (L∗ ). Por lo tanto la igualdad no se cumple. 9. (♣) Demostrar o refutar la igualdad siguiente : (L∗ )−1 = (L−1 )∗ , para todo lenguaje L. Página 3 de 5 Hoja de Problemas 1 (cont.) Solución: Dado un lenguaje L cualquiera, L = {x1 , x2 , x3 , ..., xn , ...} Sea X una palabra que pertenece al cierre de ese lenguaje: X = x1 x2 x3 x4 ...xn ∈ L∗ Debemos comprobar que X −1 ∈ (L−1 )∗ para demostrar que (L∗ )−1 ⊆ (L−1 )∗ . Usando las propiedades de la reflexión: −1 (xy)−1 = y −1 x−1 y (L1 L2 )−1 = L−1 2 L1 , podemos afirmar que: −1 −1 X −1 = x−1 n xn−1 ...x1 Dado que: −1 −1 −1 −1 −1 ∈ (L−1 )∗ , por lo tanto, X −1 ∈ (L−1 )∗ L−1 = (x−1 n , xn−1 , ...x1 ) y xn xn−1 ...x1 entonces podemos afirmar que: (L∗ )−1 ⊆ (L−1 )∗ Podemos razonar de forma análoga para demostrar que: (L−1 )∗ ⊆ (L∗ )−1 aunque es trivial. 10. (♣) Demostrar que para todo lenguaje L, se verifica L∗ L∗ = L∗ . Solución: Simplemente deberemos aplicar la definición de cierre, recordemos: ∗ L = ∞ & Li i=0 También tendremos en cuenta las propiedades de la potencia, en concreto: Li Lj = Li+j Página 4 de 5 Hoja de Problemas 1 (cont.) L1 (L2 ∪ L3 ) = L1 L2 ∪ L1 L3 Ahora, desarrollaremos el lado izquierdo de la igualdad: L∗ L∗ = (L0 ∪ L1 ∪ L2 ∪ . . .)(L0 ∪ L1 ∪ L2 ∪ . . .) = (L◦ L◦ ∪ L◦ L1 ∪ L◦ L2 ∪ . . . ∪ L1 L◦ ∪ L1 L1 ∪ L1 L2 ∪ . . .) Y simplemente, reagrupando los términos y aplicando la propiedad anterior, nos queda: L∗ L∗ = L0 L0 ∪ L0 L1 ∪ L1 L0 = ∪ λ L1 ∪ L0 L2 ∪ L1 L1 ∪ L2 L0 ∪ L2 ∪ L0 L3 ∪ L1 L2 ∪ L2 L1 ∪ L3 ∪... ∪... ∪... ∪ . . . = L∗ Que es lo que querı́amos demostrar. 11. (!) Describir el lenguaje generado por la gramática: G = ({S}, {a, b}, S, {S ::= SS | aSb | bSa | λ}) . Solución: El lenguaje que describe esta gramática es el siguiente:L = {w | na (w) = nb (w)}, siendo nx (w) el número de x que aparecen en w. Página 5 de 5