LENGUAJES FORMALES Y AUTÓMATAS Departamento de Lenguajes y Sistemas Informáticos Escuela Técnica Superior de Ingenierı́a Informática Universidad de Sevilla Vı́ctor J. Dı́az Madrigal José Miguel Cañete Valdeón Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Temario Lección 1 Cadenas Lección 2 Lenguajes Lección 3 Expresiones Regulares Lección 4 Gramáticas Incontextuales Lección 5 Autómatas Finitos Lección 6 Autómatas de Pila Lección 7 La Jerarquı́a de Chomsky Lección 8 Máquinas de Turing LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Cadenas 1. Alfabetos, sı́mbolos y cadenas 2. Operaciones sobre cadenas LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Alfabetos, sı́mbolos y cadenas Alfabeto: Conjunto no vacı́o y finito de elementos denominados sı́mbolos Cadena: Secuencia finita de sı́mbolos procedentes de un alfabeto. Cadena nula (vacı́a): Aquella cadena que no contiene ningún sı́mbolo. Se denota mediante λ (o ²) Ejemplos: Alfabeto Cadenas {a, b, c} λ, a, abc, ccccc, . . . {0, 1} λ, 0, 010101, 10111111100001111, . . . ASCII λ, sin(-1238E42+y), perro, program-nada-begin-end;, . . . Notación: Alfabetos: Σ, Σ1 Sı́mbolos: a, b, c, . . . Cadenas: . . ., u, v, w, x, y, z LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Operaciones sobre cadenas La longitud o tamaño |x| de una cadena x = a1 . . . an , se define como |x| = n. La concatenación x · y (o xy) de dos cadenas x = a1 . . . an e y = b1 . . . bm se define como xy = a1 . . . an b1 . . . bm La potencia xi con i ≥ 0 de una cadena x se define mediante xi = xx ..i .. x Ejemplos: Considerando las cadenas x = 101 e y = 11 definidas sobre {0, 1} Longitud |0| = 1, |λ| = 0, |x| = 3 Concatenación xy = 10111, yx = 11101 Potencia 02 = 00, (10)3 = 101010, x2 = 101101 Propiedades xλ = λx = x (Elemento neutro) x0 = λ x(yz) = (xy)z (Asociatividad) x1 = x |xy| = |x| + |y| xi xj = xi+j con i, j ≥ 0 |xi | = i|x| con i ≥ 0 LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Lenguajes 1. Definición de lenguaje 2. Operaciones sobre lenguajes 3. Problemas fundamentales LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Definición de lenguaje Universo Σ∗ de un alfabeto Σ: Conjunto de todas las cadenas que se pueden formar con los sı́mbolos de Σ Lenguaje L(Σ) respecto de un alfabeto Σ (o simplemente L en el caso de que Σ se sobreentienda): Cualquier subconjunto del universo, es decir, L ⊆ Σ∗ Ejemplos de lenguajes sobre Σ = {0, 1} Lenguaje universal Σ∗ {λ, 0, 1, 00, 01, 10, 11, 000, 001, . . .} Lenguaje vacı́o ∅={} Lenguaje de la cadena vacı́a {λ} Cadenas que empiezan por 0 {0, 00, 01, 000, 001, 010, 011, . . .} Cadenas de longitud uno {0, 1} Cadenas con un número par de 1s {λ, 11, 011, 101, 110, 0011, . . .} Cadenas palindrómicas {λ, 11, 00, 010, 000, 101, 111, 0000, 1001, . . .} LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Operaciones sobre lenguajes: Operaciones básicas Unión: L1 ∪ L2 = {x | x ∈ L1 o x ∈ L2 } Intersección: L1 ∩ L2 = {x | x ∈ L1 y x ∈ L2 } Diferencia: L1 − L2 = {x | x ∈ L1 y x ∈ / L2 } Complementario: L = ¬L = Σ∗ − L Ejemplo: Sean L1 = {0, 1, 00} y L2 = {00, 01, 10} definidos sobre Σ = {0, 1} L1 ∪ L2 = {0, 1, 00, 01, 10} L1 ∩ L2 = {00} L1 − L2 = {0, 1} ¬L1 = {λ, 01, 10, 11, 000, 001, 010, 011, . . .} LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Operaciones sobre lenguajes: Basadas en la concatenación Concatenación: L1 · L2 = L1 L2 = {xy | x ∈ L1 e y ∈ L2 } Potencia: Li = L · L ..i .. · L (con i ≥ 0) S∞ Clausura o Cierre de Kleene: L∗ = L0 ∪ L1 ∪ L2 ∪ . . . = i=0 Li S∞ Clausura o Cierre positivo: L+ = L1 ∪ L2 ∪ L3 ∪ . . . = i=1 Li Ejemplo: Sean L1 = {0, 1, 00} y L2 = {00, 01, 10} definidos sobre Σ = {0, 1} L1 L2 = {000, 001, 010, 100, 101, 110, 0000, 0001, 0010} L21 = L1 L1 = {00, 01, 000, 10, 11, 100, 001, 0000} L∗1 = {λ, 0, 1, 00, 01, 000, 10, 11, 100, ...} L+ 1 = {0, 1, 00, 01, 000, 10, 11, 100, ...} Propiedades L{λ} = {λ}L = L (Elemento neutro) L0 = {λ} L∅ = ∅L = ∅ (Elemento nulo) L1 = L L1 (L2 L3 ) = (L1 L2 )L3 (Asociatividad) L+ = LL∗ = L∗ L Li Lj = Li+j con i, j ≥ 0 LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Problemas fundamentales Representación de lenguajes: ¿Qué notaciones son útiles para describir lenguajes (infinitos)? Notación Ejemplo Lenguaje Conjuntos {an bn cn | n ≥ 0} {λ, abc, aabbcc, aaabbbccc, . . .} Patrones 0+(10)* {0, 10, 1010, 101010, . . .} Autómatas Gramáticas {1, 001, 010, 111, 100101, . . .} S → aSb | λ {λ, ab, aabb, aaabbb, . . .} Estudio de la pertenencia: ¿Está incluida una cadena en el lenguaje descrito por una cierta notación? Clasificación de lenguajes: ¿Pueden ser representados todos los lenguajes con una misma notación? LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Expresiones regulares 1. Definición de Expresión Regular (ExpReg) 2. Lenguaje de una expresión regular 3. Propiedades algebraicas LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Definición de Expresión Regular (ExpReg) Dado un alfabeto Σ, las expresiones regulares (expreg) se definen: 1. a ∈ Σ es una expresión regular 2. ∅ es una una expresión regular 3. λ es una una expresión regular 4. Si α y β son expresiones regulares, entonces a) α + β es una expresión regular b) α · β (o αβ) es una expresión regular. c) α∗ es una expresión regular d ) (α) es una expresión regular 5. Ninguna otra expresión salvo las anteriores es una expresión regular Ejemplos: Para Σ = {0, 1} tenemos las siguientes ExpRegs 0 1λ (0 + λ)11∗ 0 01 (∅ + 1)(1 + 0)∗ 0 Nota: La precedencia de los operadores es (de más a menos): ∗, ·, + LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Lenguaje de una expresión regular Lenguaje Una expresión regular E representa un lenguaje L(E). Los lenguajes representados por las expresiones regulares se denominan lenguajes regulares. Denotamos la clase de los lenguajes regulares mediante LREG. Relación entre una ExpReg E y su lenguaje L(E) L(a) = {a} L(α + β) = L(α) ∪ L(β) L(∅) = ∅ L(αβ) = L(α)L(β) L(λ) = {λ} L(α∗ ) = L(α)∗ L((α)) = L(α) Ejemplos: L(0 + λ) = L(0) ∪ L(λ) = {0, λ} L(a(b + c)) = L(a)(L(b) ∪ L(c)) = {ab, ac} L(a∗ ) = L(a)∗ = {a}∗ = {λ, a, aa, aaa, . . .} = {an | n ≥ 0} L(aa∗ ) = L(a)L(a)∗ = {a}{λ, a, aa, aaa, . . .} = {a, aa, aaa, . . .} = {an | n ≥ 1} L((0 + 1)∗ ) = (L(0) ∪ L(1))∗ = {0, 1}∗ = {λ, 0, 1, 00, 01, 10, 11, 000, 0001, . . .} LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Propiedades algebraicas Equivalencia Dos expresiones regulares E1 y E2 son equivalentes, E1 = E2 , cuando L(E1 ) = L(E2 ). Propiedades de la unión, concatenación y cierre de Kleene α+β =β+α αλ = λα = α ∅∗ = λ∗ = λ α + (β + γ) = (α + β) + γ α(βγ) = (αβ)γ αα∗ = α∗ α α+∅=∅+α=α α∅ = ∅α = ∅ α∗ α∗ = (α∗ )∗ = α∗ α∗ = λ + αα∗ α+α=α Propiedades distributivas Ejemplo: α(β + γ) = αβ + αγ λ∗ a + b∗∗ ba + b∗ a = λa + b∗∗ ba + b∗ a (α + β)γ = αγ + βγ = a + b∗∗ ba + b∗ a (αβ)∗ α = α(βα)∗ = a + b∗ ba + b∗ a (α∗ β)∗ = (α + β)∗ β + λ ∗ ∗ ∗ (α + β ) (α + β)∗ = (α∗ β ∗ )∗ (α∗ β)∗ α∗ = a + bb∗ a + b∗ a = (λ + bb∗ )a + b∗ a = b∗ a + b∗ a = b∗ a LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Gramáticas independientes del contexto (GIC) 1. Definición de GIC 2. Derivación 3. Lenguaje de una GIC 4. Árbol sintáctico 5. Ambigüedad LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Definición de GIC: Definición Una gramática independiente del contexto (o incontextual) GIC se define con una tupla: G = (VT , VN , S, P ) VT es el alfabeto de los sı́mbolos terminales (token, lexema) VN es el alfabeto de los sı́mbolos no terminales (variable, categorı́a) Los alfabetos VT y VN son disjuntos. Denotamos V = VT ∪ VN S ∈ VN es un no terminal distinguido denominado axioma (sı́mbolo inicial o raı́z) P ⊆ VN × V ∗ es un conjunto finito de pares (A, α) denominados reglas o producciones denotados A → α. Ejemplos: G0 = ({a, b}, {S, A, B}, S, {S → AB, A → aA, A → a, B → Bb, B → λ}) G1 = ({a, b}, {S}, S, {S → aSb, S → λ}) LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Definición de GIC: Notación Salvo que se indique lo contrario usaremos el siguiente convenio en la notación: Un sı́mbolo en VT a, b, c, . . . Un sı́mbolo en VN A, B, C, . . . Un sı́mbolo en V . . . , X, Y, Z Una secuencia en VT∗ . . . , x, y, z Una secuencia en V ∗ α, β, γ, . . . La cadena vacı́a λ Combinación de A-reglas A → α1 | . . . | αk Con estos convenios, la gramática G1 = ({a, b}, {S}, S, {S → aSb, S → λ}) puede ser descrita de forma sucinta enumerando sus producciones: G1 = {S → aSb | λ} LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Derivación Dada una GIC G = (VT , VN , S, P ) definimos: Derivación directa α ⇒G β cuando α = µAν, β = µγν y A → γ ∈ P Derivación (en al menos un paso) α ⇒+ G β cuando existen α1 , α2 , . . . , αk con k > 1 tales que: α = α1 ⇒G α2 . . . ⇒G αk = β Derivación (en cero o más pasos) α ⇒∗G β cuando α = β o α ⇒+ G β Forma sentencial a todo α ∈ V ∗ que verifica S ⇒∗G α Sentencia a todo w ∈ VT∗ que verifica S ⇒∗G w Nota: Cuando se sobreentiende la gramática G se usa la notación ⇒, ⇒+ y ⇒∗ . Ejemplo: Dado G1 = {S → aSb | λ} tenemos que S ⇒ aSb ⇒ aaSbb ⇒ aaaSbbb ⇒ aaabbb S ⇒+ aSb aSb ⇒+ aaaSbbb aSb ⇒∗ aSb aSb ⇒∗ aaaSbbb Formas sentenciales: S, aaSbb, aaabbb Sentencia: aaabbbb LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Lenguaje de una GIC Lenguaje El lenguaje generado por una GIC G = (VT , VN , S, P ) se define mediante: L(G) = {w ∈ VT∗ | S ⇒∗G w} Ejemplos G0 = {S → AB, A → aA | a, B → Bb | λ} L(G0 ) = {an bm | n ≥ 1, m ≥ 0} G1 = {S → aSb, S → λ} L(G1 ) = {an bn | n ≥ 0} Los lenguajes generados por las gramáticas GIC se denomina lenguajes incontextuales o independientes del contexto. Denotaremos la clase de los lenguajes independientes del contexto con LIC. Teorema [LREG ⊂ LIC] La clase de los lenguajes regulares está estrictamente contenida en la clase de los lenguajes independientes del contexto. Equivalencia Dos gramáticas GIC G1 y G2 son equivalentes cuando L(G1 ) = L(G2 ) Ejemplo: Las gramáticas G1 , G0 y G00 son equivalentes. S → A | λ S → aA | λ n o 0 00 G1 = S → aSb | λ G = G = A → aBb A → Sb B → A|λ LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Árbol sintáctico El conjunto de los árboles sintácticos (de derivación, o de análisis) de una GIC G = (VT , VN , S, P ) incluye aquellos árboles que cumplen que: Sus nodos interiores están etiquetados con sı́mbolos no terminales Sus nodos hojas están etiquetados con sı́mbolos en V o con λ. Si un nodo interior está etiquetado con A y sus k ≥ 0 hijos (ordenados de izquierda a derecha) están etiquetados con X1 , X2 , . . . , Xk ∈ V entonces A → X1 X2 . . . Xk ∈ P . S → AcB | c G= A → aA | λ B → bS | b Toda derivación X ⇒∗G w tiene asociado un único árbol sintáctico (pero no al contrario). Derivación por la izquierda S ⇒ AcB ⇒ aAcB ⇒ acB ⇒ acbS ⇒ acbc Derivación por la derecha S ⇒ AcB ⇒ AcbS ⇒ Acbc ⇒ aAcbc ⇒ acbc LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Ambigüedad: Definición Decimos que una GIC G = (VT , VN , S, P ) es ambigua si existe al menos una cadena w ∈ L(G) que tiene dos o más árboles sintácticos distintos. Ejemplo: Sea la gramática G = ({+, ∗, num}, {E}, E, {E → E + E | E ∗ E | num}). La cadena num + num + num muestra que G es ambigua puesto que: Denominamos lenguaje ambiguo a aquel que puede ser generado por una gramática ambigua. Decimos que un lenguaje es inherentemente ambiguo si toda gramática que genera dicho lenguaje es ambigua. LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Ambigüedad: Gramática de la calculadora Existen heurı́sticas que permiten, en determinados casos, transformar una gramática ambigua en otra equivalente que no lo es. Ambigua (Precedencia y Asociatividad) Versión no ambigua G = ({num, +, ∗, (, )}, {E}, E, P ) G0 = ({num, +, −, (, )}, {E, T, F }, E, P 0 ) E → E + T |T P0 = T → T ∗ F |F F → (E) | num P = {E → E + E | E ∗ E | (E) | num} LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Autómatas Finitos (AF) 1. Autómatas finitos deterministas (AFD) 2. Autómatas finitos no deterministas (AFND) 3. Autómatas finitos no deterministas con λ-transiciones (λ-AFND) 4. La clase de los lenguajes aceptados por los autómatas finitos LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Autómatas Finitos Deterministas (AFD): Definición Un autómata finito determinista AFD es una tupla M = (Σ, Q, q0 , F, δ) donde Σ es el alfabeto de la entrada Q es un conjunto finito de elementos denominados estados q0 ∈ Q es el estado inicial F ⊆ Q es el conjunto de estados finales o de aceptación δ : Q × Σ → Q es la función de transición Ejemplo: M0 = ({0, 1}, {q0 , q1 }, q0 , {q0 }, δ) donde δ(q , 0) = q δ(q , 1) = q 0 0 0 1 δ(q1 , 0) = q1 δ(q1 , 1) = q0 Tabla de transición M0 0 1 → ∗q0 q0 q1 q1 q1 q0 Diagrama (Grafo) de transición LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete AFD: Lenguaje Lenguaje L(M ) aceptado por un AFD: Dado un AFD M = (Σ, Q, q0 , F, δ) L(M ) = {w ∈ Σ∗ | δ ∗ (q0 , w) ∈ F } donde δ ∗ : Q × Σ∗ → Q es la extensión de δ a cadenas definida mediante: δ ∗ (q, λ) = q para todo q ∈ Q y a ∈ Σ δ ∗ (q, aw) = δ ∗ (δ(q, a), w) Ejemplo: L(M0 ) lo forman las cadenas de 0s y 1s que contienen un número par de 1s 0 1 0 1 0 0 1 0101 ∈ L(M0 ) δ ∗ (q0 , 0101) = q0 ∈ F q0 → q0 → q1 → q1 → q0 100 ∈ / L(M0 ) δ ∗ (q0 , 100) = q1 ∈ /F q0 → q1 → q1 → q1 Equivalencia: Dos AFDs M 0 y M 00 son equivalentes si y sólo si L(M 0 ) = L(M 00 ) LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Autómatas Finitos No Deterministas (AFND): Definición Un autómata finito no determinista AFND es una tupla M = (Σ, Q, q0 , F, δ) similar a un AFD salvo que δ : Q × Σ → ℘(Q) Ejemplo: M1 = ({0, 1}, {q0 , q1 , q2 }, q0 , {q2 }, δ) δ(q0 , 0) = {q0 , q1 } δ(q1 , 0) = ∅ δ(q2 , 0) = ∅ donde δ(q0 , 1) = {q0 } δ(q1 , 1) = {q2 } δ(q2 , 1) = ∅ Nota: La ejecución del autómata se detiene ante transiciones que conducen a ∅. Tabla de transición M1 → q0 q1 0 1 q0 , q1 q0 Diagrama (Grafo) de transición q2 ∗q2 LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete AFND: Lenguaje Lenguaje L(M ) aceptado por un AFND: Dado un AFND M = (Σ, Q, q0 , F, δ) L(M ) = {w ∈ Σ∗ | δ ∗ (q0 , w) ∩ F 6= ∅} donde δ ∗ : Q × Σ∗ → ℘(Q) es la extensión de δ a cadenas definida δ ∗ (q, λ) = {q} para todo q ∈ Q y a ∈ Σ δ ∗ (q, wa) = S ∗ p∈δ (q,w) δ(p, a) Ejemplo: L(M1 ) lo forman las cadenas de 0s y 1s que acaban en 01 10101 ∈ L(M1 ) δ ∗ (q0 , 10101) = {q0 , q2 } 10 ∈ / L(M1 ) δ ∗ (q0 , 10) = {q0 , q1 } Equivalencia: Dos AFNDs M 0 y M 00 son equivalentes si y sólo si L(M 0 ) = L(M 00 ) LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete AFND con λ-transiciones (λ-AFND): Definición Un autómata finito no determinista con transiciones nulas λ-AFND es una tupla M = (Σ, Q, q0 , F, δ) similar a un AFND salvo que δ : Q × (Σ ∪ {λ}) → ℘(Q) Ejemplo: M2 = ({0, 1}, {q0 , q1 , q2 }, q0 , {q2 }, δ) donde δ(q0 , 0) = {q1 } δ(q1 , 0) = ∅ δ(q2 , 0) = ∅ δ(q0 , 1) = ∅ δ(q0 , λ) = {q1 } δ(q1 , 1) = {q1 , q2 } δ(q1 , λ) = ∅ δ(q2 , 1) = ∅ δ(q2 , λ) = {q0 } Nota: La ejecución del autómata se detiene ante transiciones que conducen a ∅. Tabla de transición M2 0 → q0 q1 q1 ∗q2 1 λ Diagrama (Grafo) de transición q1 q1 , q2 q0 LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete λ-AFND: Cierre λ∗ Dado un λ-AFND M = (Σ, Q, q0 , F, δ) se define λ∗ (S) con S ⊆ Q como el menor conjunto que verifica: 1. si q ∈ S entonces q ∈ λ∗ (S) 2. si q ∈ λ∗ (S) entonces δ(q, λ) ⊆ λ∗ (S) Ejemplo: Dado el λ-AFND M2 λ∗ ({q0 }) = {q0 , q1 } λ∗ ({q1 }) = {q1 } λ∗ ({q2 }) = {q0 , q1 , q2 } λ∗ ({q1 , q2 }) = λ∗ ({q1 }) ∪ λ∗ ({q2 }) = {q0 , q1 , q2 } LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete λ-AFND: Lenguaje Lenguaje L(M ) aceptado por un λ-AFND: Dado un λ-AFND M = (Σ, Q, q0 , F, δ) L(M ) = {w ∈ Σ∗ | δ ∗ (q0 , w) ∩ F 6= ∅} donde δ ∗ : Q × Σ∗ → ℘(Q) es la extensión de δ a cadenas definida δ ∗ (q, λ) = λ∗ ({q}) para todo q ∈ Q y a ∈ Σ δ ∗ (q, wa) = λ∗ (S ∗ δ(p, a)) p∈δ (q,w) Ejemplo: L(M2 ) lo forman cadenas constituidas por secuencias no vacı́as de 1s precedidos opcionalmente por un 0. 0101 ∈ L(M1 ) δ ∗ (q0 , 0101) = {q0 , q1 , q2 } 010 ∈ / L(M1 ) δ ∗ (q0 , 010) = {q1 } Equivalencia: Dos λ-AFNDs M 0 y M 00 son equivalentes si y sólo si L(M 0 ) = L(M 00 ) LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete La clase de los lenguajes aceptados por los AFs Teorema Dado L ⊆ Σ∗ , las siguientes tres afirmaciones son equivalentes: L es aceptado por un AFD L es aceptado por un AFND L es aceptado por un λ-AFND Teorema: La clase LAF de lenguajes aceptados por los AFs es idéntica a la clase LREG de los lenguajes descritos mediante expresiones regulares. Ejemplo: Para el lenguaje {a, ab} tenemos: a + ab LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Autómatas de Pila (AP) 1. Autómata de Pila (AP) 2. Autómata de Pila Determinista (APD) LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Autómata de Pila (AP): Definición Un autómata de pila AP es una tupla M = (Σ, Γ, Z0 , Q, q0 , F, δ) donde Σ es el alfabeto de la entrada Γ es el alfabeto de los sı́mbolos de la pila Z0 ∈ Γ − Σ es la marca de la pila (se usa para determinar su fondo) Q conjunto finito de estados (q0 ∈ Q es el inicial y F ⊆ Q los finales) δ : Q × (Σ ∪ {λ}) × Γ → ℘f in (Q × Γ∗ ) es la función parcial de transición Ejemplo: M1 = ({a, b}, {a, b, Z0 }, Z0 , {p, q, f }, p, {f }, δ) donde δ(p, a, Z ) = {(p, aZ )} δ(p, a, a) = {(p, aa)} δ(p, b, a) = {(q, λ)} 0 0 δ(q, b, a) = {(q, λ)} δ(q, λ, Z0 ) = {(f, λ)} Nota: Las transiciones no definidas indican que el autómata se detiene. LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete AP: Configuración, movimiento y computación Dado un AP M = (Σ, Γ, Z0 , Q, q0 , F, δ) definimos: Configuración: Tupla de la forma (q, x, α) con q ∈ Q, x ∈ Σ∗ y α ∈ Γ∗ Movimiento `M : Cambio de configuración en el autómata (q, aw, Aγ) `M (p, w, βγ) si (p, β) ∈ δ(q, a, A) con a ∈ Σ ∪ {λ} Computación `∗M : Secuencia de cero o más movimientos. Dadas dos configuraciones C y D, se cumple C `∗M D cuando C = D o existen c1 , c2 , . . . , ck con k > 1 tales que: C = c1 `M c2 . . . `M ck = D Nota: Cuando el AP M se sobreentiende se usa la notación ` y `∗ (p, aabb, Z0 ) `M1 (p, abb, aZ0 ) `M1 (p, bb, aaZ0 ) `M1 (q, b, aZ0 ) `M1 (q, λ, Z0 ) `M1 (q, λ, λ) (p, abb, aZ0 ) `∗M1 (p, abb, aZ0 ) (p, abb, aZ0 ) `∗M1 (q, b, aZ0 ) LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete AP: Lenguajes aceptados Dado un AP M = (Σ, Γ, Z0 , Q, q0 , F, δ) definimos: Por pila vacı́a: LV (M ) = {w ∈ Σ∗ | (q0 , w, Z0 ) `∗M (q, λ, λ) con q ∈ Q} Por estado final: LF (M ) = {w ∈ Σ∗ | (q0 , w, Z0 ) `∗M (qf , λ, α) con α ∈ Γ∗ , qf ∈ F } Ejemplos: LV = LF = {an bn | n > 0} LV = ∅ y LF = a∗ LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete AP: Indeterminismo El AP de la figura es no determinista y reconoce el lenguaje wwR con w ∈ (0 + 1)∗ . El indeterminismo se debe a que el AP ignora cuando comienza el sufijo wR . De forma que o bien sigue en el estado p indicando que no se ha leido el primer sı́mbolo de wR o bien cambia al estado q indicando que ha leido el primer sı́mbolo de wR . LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete AP: La clase LAP Teorema: La clase de lenguajes aceptados por los AP con aceptación por estado final es la misma que la clase de los lenguajes aceptados por los AP con aceptación por pila vacı́a. Denotaremos a dicha clase mediante LAP. Teorema: La clase LAP es idéntica a la clase LIC de los lenguajes generados por las gramáticas independientes del contexto. Ejemplo: Para el lenguaje am+n bn con n, m > 0 tenemos: S→ G= LFA, Curso 2006/2007 AI A→ aA | a I→ aIb | ab Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Autómata de Pila Determinista (APD): Definición Un autómata de pila determinista APD es una AP M = (Σ, Γ, Z0 , Q, q0 , F, δ) tal que para cada q ∈ Q, a ∈ Σ y X ∈ Γ se cumple |δ(q, a, X)| + |δ(q, λ, X)| ≤ 1 Ejemplo: El siguiente APD reconoce el lenguaje wcwR donde w ∈ {0, 1}∗ . Estado Entrada Pila p 01c10 Z0 p 1c10 0Z0 p c10 10Z0 q 10 10Z0 q 0 0Z0 q λ Z0 f λ λ Se denominan lenguajes independientes del contexto deterministas a aquellos lenguajes independientes del contexto que son aceptados por algún APD. Denotamos mediante LICD la clase de los lenguajes independientes del contexto deterministas. LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete APD: La clase LAPD(F) Denotamos mediante LAPD(F) la clase de los lenguajes aceptados por los APD con aceptación por estado final. Teorema: [LAF ⊂ LAPD(F)] Si un lenguaje es aceptado por un AF entonces dicho lenguaje es aceptado por un APD con aceptación por estado final. (Basta con añadir Z0 /Z0 a cada una de las transiciones del AFD) Teorema: [LAPD(F) ⊂ LAP] Si un lenguaje es aceptado por un APD con aceptación por estado final entonces dicho lenguaje es aceptado por un AP. (Lo contrario no es cierto, puesto que el lenguaje wwR , con w ∈ {0, 1}∗ , no puede ser aceptado mediante un APD debido a la imposibilidad de saber a priori en qué momento debe empezar el reconocimiento del sufijo wR ) Nota: A pesar de que el autómata es no determinista, podemos encontrar una gramática no ambigua para generar dicho lenguaje: G = ({0, 1}, {S}, S, {S → 1S1 | 0S0 | λ}) LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete APD: La clase LAPD(V) Denotamos mediante LAPD(V) la clase de los lenguajes aceptados por los APD con aceptación por pila vacı́a. Teorema Dado L ⊆ Σ∗ , las siguientes dos afirmaciones son equivalentes: 1. L es aceptado por un APD por pila vacı́a 2. L es aceptado por un APD por estado final y L cumple la propiedad del prefijo (Un lenguaje L cumple la propiedad del prefijo (PREF) si no existen dos cadenas distintas x, y ∈ L tales que x es un prefijo de y) LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Jerarquı́a de Chomsky 1. Clasificación de gramáticas 2. Clasificación de lenguajes 3. Gramáticas regulares 4. Gramáticas independientes del contexto 5. Gramáticas dependientes del contexto 6. Gramáticas sin restricciones LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Clasificación de gramáticas Chomsky generaliza el concepto de gramática G = (VT , VN , S, P ) y propone una clasificación (jerarquı́a) según la forma que deben tener sus producciones: Regulares (GREG) Por la izquierda: A → Ba A → a Por la derecha: A → aB A → a Independientes del contexto (GIC) A→v Dependientes del contexto (GDC) αAβ → v con |αAβ| ≤ |v| Con estructura de frase (GEF) αAβ → γ donde A, B ∈ VN , a ∈ VT , α, β, γ ∈ V ∗ y v ∈ V + Para cubrir el caso de la generación de λ en todos los tipos de gramáticas, se admite la inclusión de la regla S → λ en GREGs, GICs y GDCs. Se verifica: El conjunto de las gramáticas GRs está estrictamente contenido en el de las GICs. El conjunto de las gramáticas GICs está estrictamente contenido en el de las GDCs. El conjunto de las gramáticas GDCs está estrictamente contenido en el de las GEFs. LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Clasificación de lenguajes La jerarquı́a de Chomsky implica a su vez una jerarquı́a de lenguajes. Las gramáticas GREGs por la derecha o izquierda generan la misma clase de lenguajes LREG denominados regulares. Esta clase coincide con la de los lenguajes aceptados por los autómatas finitos y la de los lenguajes descritos mediante expresiones regulares. Las GICs generan la clase LIC de los lenguajes independientes del contexto. Esta clase coincide con la de los lenguajes aceptados por los autómatas de pila. Las GDCs generan la clase LDC de los lenguajes dependientes del contexto. Las GEFs generan la clase LEF de los lenguajes con estructura de frases. Esta clase de lenguajes coincide con la de los lenguajes aceptados por las máquinas de Turing. Se verifica LREG ⊂ LIC ⊂ LDC ⊂ LEF LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Gramáticas regulares Ejemplo: Las dos gramáticas Gr y Gl generan el lenguaje regular 11∗ 00∗ Regular por la derecha S → 1A Gr = A → 1A | 0B | 0 B → 0B | 0 Regular por la izquierda S → C0 Gl = C → C0 | D1 | 1 D → D1 | 1 LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Gramáticas independientes del contexto Ejemplo: Las dos gramáticas G1 y G2 generan el lenguaje independiente del contexto 0n 1n 2m con n, m ≥ 0. GIC en formato no estricto S → AB G1 = A → 0A1 | λ B → 2B | λ GIC en formato estricto S → AB | A | B | λ G2 = A → 0A1 | 01 B → 2B | 2 Podemos observar que la gramática G1 no es una GIC en sentido estricito ( incluye reglas nulas asociadas a sı́mbolos que no son el axioma). Admitiremos, sin embargo, que es una GIC debido al siguiente teorema. Teorema Si todas las reglas de una gramática G son de la forma A → γ con A ∈ VN y γ ∈ V ∗ , entonces podemos obtener otra gramática GIC equivalente a G. LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Gramáticas dependientes del contexto Ejemplo: Sea la GDC G = ({a, b, c}, {S, M }, S, P ) donde S → aM c | aSM c cM → M c P = aM → ab bM → bb La gramática G genera el lenguaje dependiente del contexto an bn cn con n > 0. Un ejemplo de derivación serı́a: S ⇒ aSM c ⇒ aaSM cM c ⇒ aaaM cM cM c ⇒ aaaM M ccM c ⇒ aaaM M cM cc ⇒ aaaM M M ccc ⇒ aaabM M ccc ⇒ aaabbM ccc ⇒ aaabbbccc Teorema Toda gramática GDC G pueden ser convertida en otra gramática equivalente G0 donde todas las reglas de G0 son la forma αAβ → αvβ o S → λ con A ∈ VN , v ∈ V + y α, β ∈ V ∗ . Es decir, reglas en donde A se sustituye por v en el contexto (α, β). LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Gramáticas con estructura de frases Las gramáticas GEFs se caracterizan frente al resto (dejando aparte el caso S → λ) en que admite reglas compresoras. Una regla compresora es aquella regla que cumple que el tamaño de su lado derecho es menor que el tamaño de su lado izquierdo. Ejemplo: Sea la GEF G = ({a, b, c}, {S, M }, S, P ) donde S → abM Sc | λ bM c → bc P = bM a → abM bM b → bbM La gramática G genera el lenguaje an bn cn con n ≥ 0. Un ejemplo de derivación serı́a: S ⇒ abM Sc ⇒ abM abM Scc ⇒ abM abM cc ⇒ abM abcc ⇒ aabM bcc ⇒ aabbM cc ⇒ aabbcc LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Máquinas de Turing 1. Modelo básico de una Máquina de Turing 2. Máquinas de Turing y computadoras 3. Lenguajes aceptados por una Máquina de Turing LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Modelo básico de una MT: Componentes Una máquina de Turing (MT) es una tupla M = (Γ, Σ, 4, Q, q0 , F, δ) donde Γ es el alfabeto de la cinta infinita por ambos lados. Σ ⊂ Γ es el alfabeto de la entrada 4 ∈ Γ (4 ∈ / Σ) es el sı́mbolo espacio en blanco. Q conjunto finito de estados (q0 ∈ Q es el inicial y F ⊆ Q los finales) δ : Q × Γ → Q × Γ × {I, D} es la función parcial de transición (I y D indican si tras la lectura el movimiento es a la izquierda o a la derecha) Ejemplo: M1 = ({a, b, 4}, {a, b}, 4, {q0 , q1 }, q0 , {q1 }, δ) donde δ(q0 , a) = (q0 , a, D) δ(q0 , b) = (q0 , a, D) δ(q0 , 4) = (q1 , 4, I) Diagrama (Grafo) de transición Tabla de transición M1 → q0 a b 4 q0 aD q0 aD q1 4I ∗q1 LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Modelo básico de una MT: Movimientos Dada una MT M = (Γ, Σ, 4, Q, q0 , F, δ) se define Configuración X1 . . . Xi−1 qXi . . . Xn con X1 , . . . Xn ∈ Γ y q ∈ Q, indica que M está en el estado q, que el puntero de lectura se encuentra situado sobre la casilla que contiene el sı́mbolo Xi , y que todas las casilla a la izquierda (derecha) del sı́mbolo X1 (Xn ) contienen 4. Movimiento `M : Cambio de configuración en el autómata. Hay dos alternativas dependiendo del sentido del movimiento indicado por las directivas I o D Izquierdo: X1 . . . Xi−1 qXi . . . Xn `M X1 . . . pXi−1 Y . . . Xn si δ(q, Xi ) = (p, Y, I) Derecho: X1 . . . Xi−1 qXi . . . Xn `M X1 . . . Xi−1 Y p . . . Xn si δ(q, Xi ) = (p, Y, D) Computación `∗M : Secuencia de cero o más movimientos. Nota: Cuando la MT M se sobreentiende se usa la notación ` y `∗ q0 aaba `M1 aq0 aba `M1 aaq0 ba `M1 aaaq0 a `M1 aaaaq0 4 `M1 aaaq1 a aq0 aba `∗M1 aq0 aba q0 aaba `∗M1 aaaq1 a LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Máquinas de Turing y computadoras Una función de cadena es Turing computable si existe una MT M = (Γ, Σ, 4, Q, q0 , F, δ) para la que q0 w `∗M qf u para algún qf ∈ F , cuando f (w) = u donde u, v ∈ Σ∗ . Ejemplo: Supongamos que representamos un entero positivo n mediante una cadena an . La siguiente M T calcula la función f (n, m) = n + m teniendo en cuenta que f será representada mediante la transformación de an bam en an+m b. M a b → q0 q0 aD q1 aD q1 q1 aD q2 q3 bI q3 q3 aI 4 q2 4I q4 4D ∗q4 q0 abaa ` aq0 baa ` aaq1 aa ` aaaq1 a ` aaaaq1 4 ` aaaq2 a ` aaq3 ab ` aq3 aab ` q3 aaab ` q3 4aaab ` q4 aaab LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Lenguajes aceptados por una MT: Definición Lenguaje L(M ) aceptado por una MT: Dado un MT M = (Γ, Σ, 4, Q, q0 , F, δ) L(M ) = {w ∈ Σ∗ | q0 w `∗M αqf β con α, β ∈ Γ∗ y qf ∈ F } Ejemplo: L(M ) acepta el lenguaje an con n ≥ 0. M → q0 a 4 q0 aD q1 4D ∗q1 q0 aa ` aq0 a ` aaq0 4 ` aa4q1 4 Nota: Asumimos que no existen transiciones desde ningún estado de aceptación. Los lenguajes aceptados por las MT se denominan lenguajes recursivamente enumerables. Denotamos mediante LR.E. a la clase de los lenguajes recursivamente enumerables. Equivalencia: Decimos que dos MT M1 y M2 son equivalentes cuando L(M1 ) = L(M2 ). LFA, Curso 2006/2007 Vı́ctor J. Dı́az Madrigal y José Miguel Cañete Lenguajes aceptados por una MT: La parada Parada Decimos que una MT M = (Γ, Σ, 4, Q, q0 , F, δ) para si alcanza un p ∈ Q y señala a un X ∈ Γ para el que no está definido δ(p, X). Una MT no tiene porqué pararse ante todas las cadenas de entrada. Por ejemplo, la MT M acepta el lenguaje {a, b} y sólo se para con las cadenas λ, a y b del lenguaje (a + b)∗ . M a b → q0 q1 aD q1 bD q1 q0 aI q0 bI 4 q0 a ` aq1 4 ` a4q2 4 q2 4D q0 ab ` aq1 b ` q0 ab ` aq1 b ` . . . ∗q2 Los lenguajes aceptados por una MT que paran ante cualquier cadena de entrada (pertenezca o no al lenguaje) se denominan lenguajes recursivos. Denotamos la clase de los lenguajes recursivos mediante LREC. Teorema [LDC ⊂ LREC]. La clase LDC de los lenguajes dependientes del contexto está contenida de forma estricta en la clase de los lenguajes recursivos. LFA, Curso 2006/2007