Autómatas y lenguajes PDF

Title Autómatas y lenguajes
Author Angel Perez
Pages 101
File Size 3 MB
File Type PDF
Total Downloads 468
Total Views 828

Summary

Autómatas y lenguajes Pedro Valero y Alberto Parramón Apuntes UAM Doble Grado Mat.Inf. UAM - 2014/2015 14 de junio de 2016 12:49 Código en Github Autómatas y lenguajes - 2014/2015 - UAM Pedro Valero y Alberto Parramón Índice general I Introducción 3 I.1 Lenguaje . . . . . . . . . . . . . . . . . . ....


Description

Autómatas y lenguajes

Pedro Valero y Alberto Parramón UAM - 2014/2015 14 de junio de 2016 12:49

Apuntes UAM Doble Grado Mat.Inf. Código en Github

Autómatas y lenguajes - 2014/2015 - UAM

Pedro Valero y Alberto Parramón

Índice general I

Introducción I.1 Lenguaje . . . . . . . . . . . I.1.1 Lenguajes particulares I.1.2 Operadores de utilidad I.2 Expresiones regulares . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

3 3 4 4 5

II Gramática 7 II.1 Gramáticas independientes del contexto . . . . . . . . . . . . . . . . . 10 III Autómatas finitos: deterministas y no deterministas 14 III.1 Equivalencia entre AF y ER . . . . . . . . . . . . . . . . . . . . . . . 18 IV Autómatas a pila

19

V Gramáticas de atributos 23 V.1 Análisis semántico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 VI Analizador morfológico

34

VIIAnalizador sintáctico VII.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . VII.2 Tablas de análisis ascendente . . . . . . . . . . . . . . VII.2.1 Tablas LR(0) . . . . . . . . . . . . . . . . . . . VII.2.2 Tablas SLR(1) . . . . . . . . . . . . . . . . . . VII.2.3 Tablas LR(1) . . . . . . . . . . . . . . . . . . . VII.2.4 Tablas LALR(1) . . . . . . . . . . . . . . . . . VII.3 Análisis descendente . . . . . . . . . . . . . . . . . . . VII.3.1 Forma normal de Greigbach . . . . . . . . . . . VII.3.2 ¿Cuándo nos interesa eliminar las transiciones λ? VII.3.3 Análisis LL(1) usando la tabla . . . . . . . . . . VII.3.4 Análisis LL(2) usando la tabla . . . . . . . . . . VII.3.5 Análisis LL(*) . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . .

36 36 38 39 44 47 51 51 53 56 56 59 60

VIIIÚltimos detalles: lemas, equivalencias y reducción de automátas... VIII.1Minimizar autómatas finitos . . . . . . . . . . . . . . . . . . . . . . . VIII.2Equivalencia AFN - AFD . . . . . . . . . . . . . . . . . . . . . . . . . VIII.3Propiedades del cierre (regulares) . . . . . . . . . . . . . . . . . . . . VIII.4Lemas del Bombeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . VIII.4.1 Lema del bombeo (Lenguajes regulares) . . . . . . . . . . . . .

61 61 64 65 66 66

0

Documento compilado el 14 de junio de 2016 a las 12:49

1 de 100

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

Autómatas y lenguajes - 2014/2015 - UAM

Pedro Valero y Alberto Parramón

VIII.4.2 Lema del bombeo (Lenguajes independientes del contexto) . . . 67 VIII.5Propiedades del cierre (independientes del contexto) . . . . . . . . . . 68 A Ejercicios 70 A.1 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 B Ejercicios 1a Hoja 73 B.1 Ejercicios sobre autómatas finitos y lenguajes regulares . . . . . . . . . 73 B.2 Ejercicios sobre autómatas a pila y gramáticas independientes del contexto 77 C Ejercicios 2a Hoja 79 C.1 Ejercicios sobre Gramáticas de Atributos . . . . . . . . . . . . . . . . 79 D Ejercicios 3a Hoja 86 D.1 Ejercicios de análisis . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

2 de 100

Autómatas y lenguajes - 2014/2015 - UAM

Pedro Valero y Alberto Parramón

Capítulo I Introducción Vamos a trabajar con tres elementos fundamentales: Máquinas/Autómata • Autómatas finitos ⇒ Expresiones regulares

• Autómatas de pila ⇒ Lenguajes independientes del contexto Problemas ¿Qué se puede computar?. Conjeturas que se creen ciertas pero cuya veracidad, por ahora, no se ha demostrado. Lenguajes/Gramática Nuestro objetivo es ver qué relación existe entre estos tres elementos. Para ello, primero debemos establecer algunas definiciones.

I.1.

Lenguaje

Símbolo

Definición I.1 Símbolo. “Letra", elemento de un conjunto

Alfabeto

Definición I.2 Alfabeto. Conjunto finito de símbolos no vacío.

Palabra (Cadena)

Definición I.3 Palabra (Cadena). Secuencia finita de símbolos tomados de un alfabeto. La palabra vacía tiene 0 símbolos y se representa por λ. Será conveniente acostumbrarnos a usar el término “cadena” en lugar del término “palabra” ya que representa mejor el concepto que queremos representar.

Longitud de cadena

Definición I.4 Longitud de cadena. Número de símbolos que contiene.

Lenguaje

Definición I.5 Lenguaje. Conjunto de palabras, cualquier subconjunto de Σ∗ . Hay algunos casos particulares de lenguajes: 3 de 100

14 de junio de 2016 12:49

Autómatas y lenguajes - 2014/2015 - UAM

I.1.1.

Pedro Valero y Alberto Parramón

Lenguajes particulares

Lenguaje universal P (sobre )

P P∗ Definición I.6 Lenguaje universal (sobre ). Denotado por representa el conjunto de todas las palabras que se pueden formar con los símbolos de Σ, incluido λ.

Lenguaje de un autómata

Definición I.7 Lenguaje de un autómata. Conjunto de palabras que acaban en un estado final del autómata y, por tanto, son aceptadas por el mismo.

Lenguaje vacío Lenguaje {λ}

Lenguaje Σ+

Definición I.8 Lenguaje vacío. Lenguaje que no contiene ningún elemento: φ. Definición I.9 Lenguaje {λ}. Lenguaje que sólo contiene λ. El lenguaje {λ} es distinto del lenguaje vacío aunque λ sea la palabra vacía. En particular |{λ}| = 1 y |φ| = 0. Definición I.10 Lenguaje Σ+ . Σ+ = Σ \ {λ}

Lenguajes Regulares

Definición I.11 Lenguajes Regulares. Son lenguajes que pueden ser admitidos por autómatas finitos.

I.1.2.

Operadores de utilidad

Tenemos dos operadores importantes:

Cierre estrella (starclosure)

1.

Cierre positivo (positiveclosure)

2.

Definición I.12 Cierre estrella (star-closure). El operador estrella se corresponde con la suma infinita: a∗ = λ + a + a2 + a3 + ...

Definición I.13 Cierre positivo (positive-closure). Este operador se corresponde con la suma infinita: a+ = a + a2 + a3 + ...

En otras palabras, estos conceptos nos sirven para entender por qué Σ∗ representa todas las palabras posibles. Para poder entender esto debemos entender la multiplicación 4 de 100

14 de junio de 2016 12:49

Autómatas y lenguajes - 2014/2015 - UAM

Pedro Valero y Alberto Parramón

como una concatenación y la suma como un OR. Así el “elemento neutro del producto” sería la cadena vacía. Tomemos ahora el alfabeto binario Σ = {0, 1} Entonces: Σ∗ = (0 + 1)∗ = λ + (0 + 1) + (0 + 1)2 + (0 + 1)3 + ... = = λ + 0 + 1 + 00 + 01 + 10 + 11 + 000 + 001 + 010 + 011 + 100 + 101 + 110 + 111 + ... Y con esto vemos cómo se forman todas las posibles combinaciones de bits de diferente longitud. Si en lugar de este alfabeto hubiésemos tomado nuestro alfabeto castellano, habríamos obtenido todas las posibles combinaciones de letras. Si cada conjunto de símbolos representa una cadena, es lógico pensar que no tiene sentido la operación suma como la hemos conocido siempre. La forma de entenderlo es que si yo tengo la palabra abc y también tengo la palabra cda, en total tengo abc+cda, es decir, tengo ambas palabras (unión).

I.2. Expresión regular

Expresiones regulares

Definición I.14 Expresión regular. Forma alternativa de representar un lenguaje regular. Dado un alfabeto Σ existen tres tipos de expresiones regulares primitivas: 1. ∅

L(∅) = ∅

2. λ L(λ)={λ} 3. a ∈ Σ

L(a) = {a}

A partir de estas expresiones regulares primitivas podemos construir expresiones regulares compuestas aplicando la siguiente regla: Siendo α, β dos expresiones regulares primitivas o compuestas sobre Σ también lo son: 1. α + β (Unión de lenguajes) L(α + β) = L(α) ∪ L(β) 2. α.β (Concatenación de lenguajes) L(α.β) = L(α). L(β) 3. α∗ (Cierre) L(α∗ ) = L(α)∗ 5 de 100

14 de junio de 2016 12:49

Autómatas y lenguajes - 2014/2015 - UAM

Pedro Valero y Alberto Parramón

L(β ∗ ) = L(β)∗ El cierre es la repetición de cero o más veces de las expresiones regulares a las que aplica. Orden de precedencia de los operadores (de más a menos): 1. * 2. . 3. + Cuando la precedencia no esté clara o se quiera alterar, se pueden (y deben) usar paréntesis. Ejemplo:

Encontrar los lenguajes definidos por las siguientes expresiones regulares:

1. a.(b + a).b Cadenas de tres símbolos que empiezan por ’a’ y acaban por ’b’ y el símbolo central es una ’a’ o una ’b’: {abb,aab} 2. (a + b) Cadenas de un solo símbolo, que es o ’a’ o ’b’: {a,b} 3. (a + b)∗ Todas las cadenas posibles formadas por los símbolos a y b (incluso la cadena vacía) 4. (a + b).(a + b)∗ Todas las cadenas posibles formadas por los símbolos a y b. Pero no incluye la cadena vacía ya que por (a + b) necesariamente deben contener una ’a’ o una ’b’. 5. (aa + bb)∗ Todas las cadenas posibles formadas por ’a’ y ’b’ con la condición de que siempre aparezcan los símbolos consecutivos un número par de veces. Es decir, cadenas del tipo ’aaaabbaabbbbbb’, (no valdría ’aaabb’) (incluyendo la cadena vacía).

6 de 100

14 de junio de 2016 12:49

Autómatas y lenguajes - 2014/2015 - UAM

Pedro Valero y Alberto Parramón

Capítulo II Gramática

Gramática

Definición II.1 Gramática. Hay varias definiciones para este término. No son muy precisas pero nos dan una idea de su significado: a. Mecanismo para formalizar matemáticamente un lenguaje. b. Conjunto de reglas que determinan cómo formar las cadenas de un lenguaje.

Ejemplo:

Tomemos las reglas:

1. ORACIÓN → SUJETO PREDICADO 2. SUJETO → ARTÍCULO NOMBRE 3. PREDICADO → VERBO 4. ARTÍCULO → el | un 5. NOMBRE → coche | perro 6. VERBO → come | corre Estas reglas constituyen una gramática que nos permite generar un lenguaje. En este caso el lenguaje estaría por formado todas las cadenas que se pueden construir a partir de estas reglas. Empezando siempre por el axioma (en este caso: “ORACIÓN”). Una gramática está compuesta por una serie de elementos que definiremos a continuación. Símbolos terminales (T)

Definición II.2 Símbolos terminales (T). Conjunto de símbolos que pueden aparecer en la cadena final (o sentencia). En el ejemplo anterior serían elementos terminales aquellos escritos en minúscula. Para ellos no existe ninguna regla que indique cómo se derivan.

7 de 100

14 de junio de 2016 12:49

Autómatas y lenguajes - 2014/2015 - UAM

Símbolos no terminales (N)

Pedro Valero y Alberto Parramón

Definición II.3 Símbolos no terminales (N). Conjunto de símbolos que no pueden aparecer en la cadena final. Simplemente son usados para definir las reglas de derivación. Los conjuntos T y N deben ser disjuntos, es decir T ∩ N = ∅. Utilizaremos el símbolo Σ para referirnos a la unión de ambos, Σ = T ∪ N .

Reglas de producción (P)

Definición II.4 Reglas de producción (P). Explican cómo se transforma un símbolo no terminal en un conjunto de símbolos terminales y/o no terminales.

Símbolo inicial / Axioma (S)

Definición II.5 Símbolo inicial / Axioma (S). Indica dónde empieza a construirse la cadena. En el ejemplo anterior, el axioma sería el símbolo ORACIÓN. Una gramática sólo puede tener un único axioma.

Gramática (G)

Definición II.6 Gramática (G). Cuádrupla formada por T, N, P y S. G = (T, N, P, S)

Una gramática permite generar cadenas para un lenguaje. Por ejemplo, para la gramática anterior: ORACIÓN → (derivamos ORACIÓN:)

SUJETO PREDICADO → (derivamos SUJETO:)

ARTÍCULO NOMBRE PREDICADO → (derivamos ARTÍCULO:)

el NOMBRE PREDICADO → (derivamos NOMBRE;)

el coche PREDICADO → (derivamos PREDICADO:) el coche VERBO → (derivamos VERBO:)

el coche corre (acabamos, pues no hay más que derivar) Este proceso se llama derivación. Cada una de las cadenas en una derivación se denomina forma sentencial. La última de ellas es una cadena válida del lenguaje generado por la gramática, y se denomina sentencia. Está formada únicamente por símbolos terminales de la gramática. El lenguaje generado por una gramática, L(G), es el conjunto de todas las sentencias posibles, es decir, el conjunto de todas las cadenas de símbolos no terminales que pueden derivarse a partir del axioma. Vamos a ver algunos ejemplos de gramáticas y los lenguajes que generan: Ejemplo:

Tomemos la gramática generada por las reglas:

1. S → aSb 2. S → λ

8 de 100

14 de junio de 2016 12:49

Autómatas y lenguajes - 2014/2015 - UAM

Pedro Valero y Alberto Parramón

T = {a, b} N = {S} Y su axioma es S. El lenguaje generado por esta gramática serían todas las palabras de la forma: ai bi con i = 0, 1, ...∞ Ejemplo: Ahora vamos a tratar de construir la gramática que define un lenguaje dado: L={(ab)n a, n ≥ 0} La gramática que define este lenguaje es:

1. S → abS 2. S → a El autómata finito asociado a este lenguaje sería:

Gramáticas independientes del contexto

Definición II.7 Gramáticas independientes del contexto. Son aquellas cuyas reglas tienen un único símbolo no terminal en el lado izquierdo. Ejemplo: Gramática dependiente de contexto aSb → abb cSd → cdd S puede derivarse dependiendo de lo que la rodee, es decir, de su contexto. Ejemplo: Gramática independiente de contexto (regular) A → aA A→a A la derecha tenemos únicamente símbolos terminales o bien símbolos terminales acompañados de un único símbolo no terminal. Si el elemento no terminal está a la izquierda se denomina gramática lineal por la izquierda. En caso contrario, gramática lineal por la derecha. 9 de 100

14 de junio de 2016 12:49

Autómatas y lenguajes - 2014/2015 - UAM

Pedro Valero y Alberto Parramón

Nota a lo anterior: Una gramática es lineal por la derecha (right-linear) si todas sus reglas de producción son de una de las dos formas siguientes: B → aA B→a con A, B ∈ N y a ∈ T ∗ . Una gramática es lineal por la izquierda (left-linear) si todas sus reglas de producción son de una de las dos formas siguientes: B → Aa B→a con A, B ∈ N y a ∈ T ∗ . Una gramática es regular si es lineal por la izquierda o lineal por la derecha. Todas las gramáticas regulares son independientes del contexto. Equivalencia de gramáticas

Definición II.8 Equivalencia de gramáticas. Dos gramáticas son equivalentes si generan el mismo lenguaje

II.1.

Gramáticas independientes del contexto

Como ya vimos una gramática puede representarse como una cuádrupla G=(N,T,S,P), es decir, consta de símbolos no terminales, símbolos terminales, un axioma y unas reglas de producción. En el caso de una gramática independiente del contexto las reglas de P son de la forma: A→x

Con A ∈ N , x ∈ Σ∗ con Σ = T ∪ N

Ejemplo:

El lenguaje: L = {wwR : w ∈ (a + b)∗ }

es independiente del contexto puesto que puede representarse por medio de una gramática G independiente del contexto, que sería: S → aSa S → bSb S→λ

10 de 100

14 de junio de 2016 12:49

Autómatas y lenguajes - 2014/2015 - UAM

Pedro Valero y Alberto Parramón

Para demostrar que el lenguaje generado por la gramática, L(G), es el mismo que L, habría que hacer dos cosas: 1. Probar que cualquier palabra de L(G) está en L. 2. Probar que cualquier palabra de L está en L(G). El punto 1 es fácil de ver, pues está claro que cualquier cadena generada por G es simétrica (siempre que añadimos una a al principio añadimos otra al final, y lo mismo para b). Para demostrar el punto 2 vamos a probar que si w ∈ L entonces w ∈ L(G) usando inducción: Todas las cadenas de L tienen un número par de símbolos: |w| = 2n ∀w ∈ L, n = 0, 1, 2, ... Para n = 0 tenemos w = λ ∈ L y se cumple que w ∈ L(G). Tomamos este caso como base de la inducción. Supongamos que se cumple la hipótesis para n: si w ∈ L con |w| = 2n entonces w ∈ L(G). Demostremos que se cumple la hipótesis para n + 1: Sea w ∈ L con |w| = 2n + 2. Entonces w debe ser de la forma ava o bvb con v ∈ L y |v| = 2n. Por hipótesis tenemos que v ∈ L(G), es decir se puede generar a partir del axioma S. Finalmente si w = ava podemos generarla a partir del axioma con la regla S → aSa, y si w = bvb podemos generarla a partir del axioma con la regla S → bSb. Por tanto también w ∈ L(G). Derivación directa

Definición II.9 Derivación directa. Dada una gramática independiente del contexto G=(N,T,S,P) y sean v, w dos formas sentenciales, decimos que w es derivación directa de v: v → w ≡ v = xZy ∧ w = xαy ∧ ∃ regla en P  Z → α con Z ∈ N y α ∈ Σ∗ .

Derivación

Definición II.10 Derivación. Dada una gramática G=(N,T,S,P) y sean v, w dos formas sentenciales, decimos que w es derivación de v, y lo escribimos v →+ w, si existe una cadena de formas sentenciales a0 , a1 , a2 ,... an , tales que: v = a0 → a1 → a2 → ... → an = w

11 de 100

14 de junio de 2016 12:49

Autómatas y lenguajes - 2014/2015 - UAM

Lenguaje generado por G

Pedro Valero y Alberto Parramón

Definición II.11 Lenguaje generado por G. Dada una gramática G=(N,T,S,P) definimos el lenguaje generado por ella como: L(G) = {w ∈ T ∗ : S →+ w} Veamos algunos ejemplos: Ejemplo:

Dado el lenguaje: L = {an bn : n ≥ 0}

La gramática que genera este lenguaje es: S→λ S → aSb Ejemplo:

Dado el lenguaje: L = {w ∈ (a + b)∗  na (w) = nb (w)}

La gramática que genera este lenguaje es: S → aSb|bSa|λ S → SS Para construirla nos hemos fijado en que una palabra w puede ser de 4 formas:   aw0 b con w0 ∈ L         con w0 ∈ L  bw0 a w=   aw0 a ⇒ w = w1 w2 con w1 , w2 ∈ L         bw0 b ⇒ w = w1 w2 con w1 , w2 ∈ L Una sentencia puede ser derivada de diferentes formas a partir de una misma gramática. Para estos casos vamos a definir derivaciones “leftmost” y “rightmost”: Leftmost

Definición II.12 Leftmost. Consiste en derivar, en cada paso, el elemento no terminal colocado más a la izquierda. Se deja para el lector el arduo trabajo de deducir que significa una derivación “rightmost”. Esto nos lleva a definir un nuevo concepto:

12 de 100

14 de junio de 2016 12:49

Autómatas y lenguajes - 2014/2015 - UAM

Ambigüedad

Pedro Valero y Alberto Parramón

Definición II.13 Ambigüedad. Una gramática se define como ambigua si existen dos o más árboles de derivación distintos para la misma sentencia. Otra forma de definirlo sería considerar ambiguas aquellas gramáticas para las que existen dos derivaciones leftmost (o rightmost) distintas para la misma sentencia.

Ejemplo:

Consideremos la gramática dada por las reglas:

E → E + E|E × E|I I → a|b|c Se trata de una gramática ambigua ya que la sentencia a + b × c tiene dos derivaciones distintas leftmost. 1. E → E + E → I + E → a + E → a + E × E → a + I × E → a + b × E → a+b×I →a+b×c 2. E → E × E → E + E × E → I + E × E → a + E × E →...


Similar Free PDFs