Lenguajes (gramáticas y autómatas) Elvira Mayordomo Universidad de Zaragoza 19 de septiembre de 2013 Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 1 / 23 Definiciones básicas Alfabeto Cadena o palabra Lenguaje Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 2 / 23 Alfabeto Un alfabeto es un conjunto finito Un sı́mbolo o letra es un elemento del alfabeto Nuestros ejemplos suelen ser pequeños: Σ = {a, b} Σ = {0, 1} Pero pueden ser de otro tipo: Σ = {Rojo, Negro, Azul, Verde} Σ = {a, b, c, d, e, f , g , h, i, j, k, l, m, n, o, p, q, r , s, t, u, v , w , x, y , z} Σ = {el, la, los, las, un, una, unos, unas} Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 3 / 23 Cadena Una cadena es una secuencia finita de letras Por ejemplo, si el alfabeto es Σ = {a, b}, algunas palabras abbaaa bbbbbbbbbb La longitud de una cadena es el número de letras w = a1 . . . an , la longitud de w es |w | = n La cadena de longitud 0 o cadena vacı́a es ¡Cuidado!, también se usa |A| para denotar el número de elementos del conjunto A Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 4 / 23 Cadena: prefijo y sufijo Prefijo de una cadena: Caracteres consecutivos de la cadena empezando por el principio Sufijo de una cadena: Caracteres consecutivos de la cadena terminando al final Prefijos de abb: , a, ab, abb Sufijos de abb: , b, bb, abb Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 5 / 23 Lenguaje Un lenguaje es un conjunto de cadenas Por ejemplo, para Σ = {a, b}. L = {aa, bbbb, } A = {} B = {w | |w | = 3} C = {an b n | n ∈ N} Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 6 / 23 Operaciones con cadenas: concatenación v = a1 . . . an w = b1 . . . bm La concatenación es vw = a1 . . . an b1 . . . bm Si hace falta se pone un punto v · w aaab · bbb = aaabbbb baba · = baba La longitud de la concatenación es la suma de las longitudes |uv | = |u| + |v | Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 7 / 23 Operaciones con cadenas: Potencia wn = w . . w} | .{z n Por definición w 0 = Ejemplo: w = babb, w 0 = , w 2 = babbbabb Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 8 / 23 Operaciones con cadenas: Reverso w R = an . . . a1 (abbb)R = bbba Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 9 / 23 Operaciones con lenguajes: Reverso Dado un lenguaje L, LR = w R | w ∈ L . Ejemplos: L = {aa, ba, bba}, L = {w | w termina en b }. Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 10 / 23 Operaciones con lenguajes: Concatenación Dados dos lenguajes A, B, A · B = {uv | u ∈ A, v ∈ B } Ejemplos: A = {b, ba}, B = {a} A = {w | w empieza en a }. B = {w | w termina en b }. Propuesto: Demostrar quién es A · B. Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 11 / 23 Operaciones con lenguajes: Potencia An = |A .{z . . A} n De otra forma, An = {w1 . . . wn | wi ∈ A } Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 12 / 23 Operaciones con lenguajes: estrella de Kleene L∗ = S∞ n n=0 L = L0 ∪ L1 ∪ L2 . . . Σ∗ es el lenguaje formado por todas las cadenas Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 13 / 23 Operaciones con lenguajes: + L+ = S∞ n n=1 L = L1 ∪ L2 . . . Propuesto: Averiguar cuándo ∈ L+ . Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 14 / 23 Operaciones con lenguajes: unión, intersección, diferencia de conjuntos Veremos esto y un repaso de todo lo demás en la clase de problemas del viernes Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 15 / 23 ¿Por qué nos interesan los lenguajes? Principalmente buscaremos programas que nos digan si una cadena está en un lenguaje (es decir, que reconocen el lenguaje) Ejemplo. L = {an b n } Queremos saber cómo de difı́cil es un programa que reconoce un lenguaje ¿Para qué? Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 16 / 23 Los lenguajes humanos Inglés, Español, Cantonés, . . . ¿Qué frases de las siguientes son ciertas, con sentido, gramaticalmente correctas? vgrlum qp#dn aoiuiui brubrubrubru 3jc6r perro deberes comió mis. Mi El hierro es más denso que el glup. Two is less than three. El libro de este curso tiene 10 páginas. Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 17 / 23 Los lenguajes de programación C, Java, Python, Prolog, Pascal, . . . ¿Cuándo es un programa: sintácticamente correcto? compilable? sin errores de ejecución fatales? sin bloqueos o bucles infinitos? una implementación correcta de su espacificación? Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 18 / 23 Un lenguaje es un problema decisional Un problema decisional es el que tiene sólo 2 respuestas posibles: Dado un número natural n, ¿es n primo? ¿Este programa es compilable? ¿Esta frase f es correcta en este idioma I ? Cada problema decisional corresponde a reconocer un lenguaje Los problemas decisionales son los más simples de analizar, y su análisis nos ayuda a reconocer problemas generales Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 19 / 23 Lenguajes, gramáticas y autómatas Estudiaremos máquinas que reconozcan los distintos lenguajes (cómo de difı́cil es un programa que reconoce si una cadena está en un lenguaje) Autómatas finitos, autómatas de pila, máquinas de Turing, ordenadores Estudiaremos generadores de las cadenas de un lenguaje Expresiones regulares, gramáticas Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 20 / 23 Las dos preguntas importantes ¿Qué puede y no puede hacer un ordenador? ¿Cuál es el mecanismo más sencillo para resolver cada problema? La Teorı́a de la Computación busca la respuesta a esas dos preguntas. Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 21 / 23 Bibliografı́a Sipser (2a edición), páginas 13 y 14 (en sección 0.2) . Kelley, capı́tulo 1. Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 22 / 23 Continuará ... El próximo lunes cerraremos este tema También hablaremos de expresiones regulares Elvira Mayordomo (Universidad de Zaragoza) Lenguajes (gramáticas y autómatas) 19 de septiembre de 2013 23 / 23