Talf-2004 Dr. Eric Jeltsch F Ingeniería en Computación Universidad de La Serena (basado en libros (1), (2), (3) y (4)) TALF 2004 Ingeniería en Computación, ULS 1 Bibliografía (1) Dean, Kelley, "Teoria de Autó matas y Lenguajes Formales", Prentice Hall, 1995. (2) C. Papadimitriou, H. Lewis, "Elements of the Theory of Computation", Prentice Hall, 1980. (3) Hopcroft, Ullman, "Introduction to Automata Theory, Languages and Computation", Addison Wesley, 1981. (4) Cohen Daniel,"Introduction to Computer Theory", John Wiley & Sons, 1997. TALF 2004 Ingeniería en Computación, ULS 2 Lenguajes Formales de String TALF 2004 Ingeniería en Computación, ULS 3 Un lenguaje es un conjunto de strings String: Una sucesión de letras/simbolos Ejemplo: “perro”, “gato”, “casa”, … definidos sobre un Alfabeto Σ : Σ = {a, b, c,K, z} TALF 2004 Ingeniería en Computación, ULS 4 Alfabeto y Strings Si usamos como alfabeto: Strings TALF 2004 a ab abba baba aaabbbaabab Ingeniería en Computación, ULS Σ = {a, b} u = ab v = bbbaaa w = abba 5 Operaciones con String w = a1a2 L an abba bbbaaa v = b1b2 Lbm Concatenación wv = a1a2 L anb1b2 Lbm TALF 2004 Ingeniería en Computación, ULS abbabbbaaa 6 w = a1a2 L an ababaaabbb Reverso R w = an L a2 a1 TALF 2004 bbbaaababa Ingeniería en Computación, ULS 7 Largo de un String w = a1a2 L an Largo: Ejemplo: w =n abba = 4 aa = 2 a =1 TALF 2004 Ingeniería en Computación, ULS 8 Largo de la Concatenation Comportamiento logarítmico: uv = u + v Ejemplo: u = aab, u = 3 v = abaab, v = 5 uv = aababaab = 8 uv = u + v = 3 + 5 = 8 TALF 2004 Ingeniería en Computación, ULS 9 String Vacío Un string sin ninguna letra: Observaciones: λ λ =0 λw = wλ = w λabba = abbaλ = abba TALF 2004 Ingeniería en Computación, ULS 10 Substring Substring de un string: Una subsucesión de caracteres consecutivos. TALF 2004 String Substring abbab abbab abbab abbab ab abba b bbab Ingeniería en Computación, ULS 11 Prefijo y Sufijo abbab Prefijos λ a ab abb abba abbab TALF 2004 Sufijos abbab bbab bab ab b λ Ingeniería en Computación, ULS w = uv prefijo sufijo 12 Otras Operaciones n w =1 ww w L 42 4 3 n Ejemplo: Definición: (abba ) = abbaabba 2 0 w =λ (abba ) = λ 0 TALF 2004 Ingeniería en Computación, ULS 13 La Operación * Σ * : el conjunto de todos los posibles strings de un alfabeto Σ Σ = {a, b} Σ* = {λ , a, b, aa, ab, ba, bb, aaa, aab,K} Σ = {0,1} Σ* = {λ ,0,1,00,10,11,01, K} TALF 2004 Ingeniería en Computación, ULS 14 La Operación + + : el conjunto de todos los strings posibles Σ desde el alfabeto Σ excepto λ Σ = {a, b} Σ* = {λ , a, b, aa, ab, ba, bb, aaa, aab,K} + Σ = Σ * −λ + Σ = {a, b, aa, ab, ba, bb, aaa, aab,K} TALF 2004 Ingeniería en Computación, ULS 15 Lenguajes Un lenguaje es cualquier subconjunto de Σ* Ejemplo: Σ = {a, b} Σ* = {λ, a,b, aa, ab, ba,bb, aaa,K} Lenguajes: {λ} {a, aa, aab} {λ , abba, baba, aa, ab, aaaaaa} TALF 2004 Ingeniería en Computación, ULS 16 Observar: Conjunto ∅ = { } ≠ {λ} Tamaño del Conjunto {} = ∅ = 0 Largo String TALF 2004 {λ} = 1 λ =0 Ingeniería en Computación, ULS 17 Otros Ejemplos Un lenguaje infinito λ ab aabb aaaaabbbbb TALF 2004 n n L = {a b : n ≥ 0} ∈L Ingeniería en Computación, ULS abb ∉ L 18 Operaciones sobre Lenguajes Las operaciones usuales {a, ab, aaaa} U {bb, ab} = {a, ab, bb, aaaa} {a, ab, aaaa} I {bb, ab} = {ab} {a, ab, aaaa} − {bb, ab} = {a, aaaa} Complemento: L = Σ * −L {a, ba} = {λ , b, aa, ab, bb, aaa,K} TALF 2004 Ingeniería en Computación, ULS 19 Reverso Definición: Ejemplo: R R L = {w : w ∈ L} {ab, aab, baba} = {ba, baa, abab} R n n L = {a b : n ≥ 0} R n n L = {b a : n ≥ 0} TALF 2004 Ingeniería en Computación, ULS 20 Concatenación Definición: Ejemplo: L1L2 = {xy : x ∈ L1, y ∈ L2 } {a, ab, ba}{b, aa} = {ab, aaa, abb, abaa, bab, baaa} TALF 2004 Ingeniería en Computación, ULS 21 Otra Operación Definición: n L3 L =1 LL2 L n {a, b} = {a, b}{a, b}{a, b} = {aaa, aab, aba, abb, baa, bab, bba, bbb} 3 Caso especial: 0 L = {λ} 0 {a , bba , aaa } = {λ} TALF 2004 Ingeniería en Computación, ULS 22 Más Ejemplos n n L = {a b : n ≥ 0} 2 n n m m L = {a b a b : n, m ≥ 0} 2 aabbaaabbb ∈ L TALF 2004 Ingeniería en Computación, ULS 23 Clausura de Kleene(*) Definición: Ejemplo: 0 1 2 L* = L U L U L L λ , a, bb, {a, bb}* = aa abb bba bbbb , , , , aaa, aabb, abba, abbbb,K TALF 2004 Ingeniería en Computación, ULS 24 Clausura Positiva Definición: + 1 2 L = L U L UL = L * −{λ} a, bb, + {a, bb} = aa, abb, bba, bbbb, aaa, aabb, abba, abbbb,K TALF 2004 Ingeniería en Computación, ULS 25