TALF - Otoño 2010

132
1 TEORIA DE AUTOMATAS Y LENGUAJES FORMALES 1 Andrés Santoro del Campo [email protected] Características del Curso 2 Competencias Significativas Conocer, entender y asimilar un conjunto de conceptos relacionados con Teoría de Lenguajes. Aprender un conjunto de técnicas para el 3 Aprender un conjunto de técnicas para el reconocimiento de expresiones regulares. Capacidad de construir y programar Autómatas Finitos y Maquinas de Turing.

Transcript of TALF - Otoño 2010

Page 1: TALF - Otoño 2010

1

TEORIA DE AUTOMATAS Y LENGUAJES FORMALES

1

Andrés Santoro del Campo

[email protected]

Características del Curso

2

Competencias Significativas

Conocer, entender y asimilar un conjunto de conceptos relacionados con Teoría de Lenguajes.

Aprender un conjunto de técnicas para el

3

Aprender un conjunto de técnicas para el reconocimiento de expresiones regulares.

Capacidad de construir y programar Autómatas Finitos y Maquinas de Turing.

Page 2: TALF - Otoño 2010

2

Características del Curso

Profesores

Evaluaciones

Condiciones de Eximisión

4

Asistencia

Trabajos

Calendario

Bibliografía

Profesores

Profesor de Cátedra Sr. Andrés Santoro del Campo [email protected]

5

Profesor Ayudante

Evaluaciones

Certamen 1 (30%)

Certamen 2 (30%)

Trabajos (15%)

6

Quiz (25%)Por cada 4 Quiz se elimina el peor.

Si no se asiste se tiene nota 1.0

Page 3: TALF - Otoño 2010

3

Condiciones de Eximisión

Nota de Presentación : 5.0

Certámenes sobre 4.0 cada uno

Trabajo sobre 5.0

7

Quiz sobre 5.0

Asistencia

Obligatoria : 75 % para poder eximirse

8

Trabajos

Individual Lenguaje de Programación : Pascal, C++ Términos de la entrega

Aula Virtual

9

Se descuenta 1 punto por dìa o fracciòn de dìa de atraso

Page 4: TALF - Otoño 2010

4

Calendario

Certámenes :Certamen 1 : 30 Abril

Certamen 2 : 25 Junio

Q f f

10

Quiz : serán definidos por Profesor-Ayudante

Bibliografía

Teoría de Autómatas y Lenguajes FormalesDean Kelley

P ti H ll

11

Prentice Hall

Año 1995

ISBN : 0-13-518705-2

Bibliografía

Introduction to Automata Theory and Computation John Hopcroft y Jeffrey Ullman

Addi W l

12

Addison-Wesley

Año 1979

Page 5: TALF - Otoño 2010

5

JFLAP

13

Java Formal Languages and Automata Package

¿Qué es JFLAP?

Programa Java para Lenguajes y Autómatas Formales

Herramienta educativa para

14

Crear y simular autómatas

Parsing incluyendo LL, SLR y método de fuerza bruta

Estudiando pruebas convirtiendo de una forma a otra

Qué es JFLAP?

Tipos de autómata Autómata finito

Autómata de Pila

Má i d T i ( i t )

15

Máquinas de Turing (n-cintas)

Tipos de GramáticasRegulares

Libres del Contexto

Irrestricta

L-sistemas

Page 6: TALF - Otoño 2010

6

Historia

NPDA - 1990, C++ No determinismo

Dan Caugherty

C

16

FLAP - 1991, C++ 4 tipos de autómatas

Mark LoSacco, Greg Badros

JFLAP - 1996, Java version -Magda and Octavian Procopiuc

Historia

JFLAP - 1998, inclusión de pruebaConversión desde una representación a

otra

Eric Gramond

17

Eric Gramond

JFLAP – 1999Expresiones regulares

Ted Hung

JFLAP 4.0 - 2003 Thomas Finley, Ryan Cavalcante

Lenguajes Regulares

Crear Autómatas Finitos Deterministas (AFD)

Autómatas Finitos No-Deterministas (AFND)

Gramáticas Regulares

18

g

Expresiones Regulares

Ejecutar un Autómata sobre una Entrada Corre rápido

Trace

Múltiples pruebas de entrada

Page 7: TALF - Otoño 2010

7

Lenguajes Libres del Contexto

CrearAutómatas de Pila No Deterministas

Autómatas de Pila Deterministas

G áti Lib d l C t t

19

Gramáticas Libres del Contexto

Experimentar conTransformación desde uno a otro

Parsing LL y SLR

Parsing Fuerza Bruta

Lenguajes Recursivamente Enumerables

Puede ConstruirMáquinas de Turing - 1-cinta

Máquinas de Turing – n-cintasMá i d T i U i l

20

Máquina de Turing Universal

Tiempos de ejecución de 1-cinta vs multiples-cintas

Gramáticas irrestrictas - ver "parse tree"

Ejemplo : L-Systems en JFLAP

21

Page 8: TALF - Otoño 2010

8

Ejemplo : L-Systems in JFLAP

22

Use of JFLAP by instructor - Showing how to layout items

Pobre:

23

Use of JFLAP by instructor - Showing how to layout items

Mejor:

24

Page 9: TALF - Otoño 2010

9

Feedback from Students in CPS 140Duke University - Spring 2003

JFLAP usados en 6 de 9 tareasCuestionario - 33 respuestas

¿Fue JFLAP fácil de usar? ¿Con qué partes tuvo dificultades?

25

tuvo dificultades? Todos respondieron : SI

“JFLAP fue fácil de usar, después de mirar a la Profesora Rodger usarlo en clases varias veces. No tuve dificultades para correrlo”

“JFLAP fue fácil de usar y aprender como operarlo”.

JFLAP, JAWAA información de contacto

Susan H. Rodger Duke University

http://www cs duke edu/~rodger/tool

26

http://www.cs.duke.edu/~rodger/tools/tools.html

Temario

Introducción

Alfabetos y Lenguajes

Lenguajes Regulares

27

Lenguajes Independientes del Contexto

Maquinas de Turing

Page 10: TALF - Otoño 2010

10

Introducción

28

Introducción

Para el estudio de la teoría de la computación se necesitan tres herramientas matemáticas básicas.

La notación teórica establecida

29

La notación teórica establecida,

El dominio de los conceptos de funciones y relaciones,

Conocimientos de inducción matemática.

Introducción

La capacidad para usar notación la teórica establecida depende, fundamentalmente, :

del conocimiento de las definiciones

30

del conocimiento de las definiciones básicas de símbolos y sus significados.

Conocer las otras dos herramientas depende de la capacidad para entender razonamientos lógicos.

Page 11: TALF - Otoño 2010

11

Introducción

Los prerrequisito de este curso son el conocimiento de : Un lenguaje de programación de alto nivel :

PASCAL. fundamentos de :

31

fundamentos de : estructuras de datos y algoritmos, teoría de conjuntos, funciones, relaciones, lógica, y elementos de razonamiento matemático.

Introducción

El campo de las ciencias computacionalesincluye un amplio rango de temas especiales,desde el diseño de una máquina hasta laprogramación.El d l t ió l d

32

El uso de la computación en el mundoinvolucra una riqueza de detalles específicosque deben ser aprendidos para aplicacionesexitosas.

La construcción de modelos es unas de lasesencias de cualquier disciplina científica, yel uso de una disciplina depende de laexistencia de teorías y reglas.

Introducción

La Teoría de Lenguajes y Autómatas tiene diversas aplicaciones, como son : el diseño digital,

i i t d t

33

recocimiento de patrones,

lenguajes de programación, y

compiladores.

Page 12: TALF - Otoño 2010

12

Introducción

Para modelar el hardware de una computadora introducimos la noción de autómata, que posee las características indispensables de una computadora digital :

Acepta na entrada

34

Acepta una entrada, produce una salida, puede tener un almacenamiento temporal, y puede decidir en la transformación de la entrada

en la salida.

Alfabetos y Lenguajes

35

Alfabetos y Lenguajes

Alfabetos, palabras y lenguajes

Operaciones con cadenas

Operaciones con lenguajes

36

Page 13: TALF - Otoño 2010

13

Alfabetos y Lenguajes : Alfabetos, Palabras y Lenguajes

Conceptos básicos:Símbolo

Alfabeto

P l b C d

37

Palabra o Cadena

Lenguaje

Alfabetos y Lenguajes : Alfabetos, Palabras y Lenguajes

Conceptos básicos:Un símbolo es una entidad abstracta que

no se define formalmente. Se denota por la letra

38

Se denota por la letra Ejemplos :

a, b, 1, 2, ’, -, @

Un alfabeto es un conjunto no vacío y finito de símbolos. Se denota por la letra Por ejemplo

Alfabetos y Lenguajes : Alfabetos, Palabras y Lenguajes

39

j p Letras del alfabeto español : {a,b,c,...,x,y,z}

Dígitos : { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }

Page 14: TALF - Otoño 2010

14

Una palabra o cadena es una secuencia finita de símbolos de un determinado alfabeto . s = s1 s2 ...sn donde si

Alfabetos y Lenguajes : Alfabetos, Palabras y Lenguajes

40

1 2 n i

La palabra vacía, se denota por el símbolo , es una palabra sobre cualquier alfabeto.

Por ejemplo : = { a, e, l, o, p, t } la, pelo, pelota, tela, pote, pate son palabras sobre

el alfabeto .

Un lenguaje es un conjunto de palabras. Por ejemplo

La colección de palabras españolas “correctas” es un lenguaje sobre el alfabeto español.

El lenguaje compuesto por ninguna palabra, es el

Alfabetos y Lenguajes : Alfabetos, Palabras y Lenguajes

41

lenguaje vacío.

El lenguaje compuesto por todas las palabras sobre el alfabeto . Se conoce como cerradura de o lenguaje universal sobre y se denota por *.

Para cualquier alfabeto, * es infinito (ya que los alfabetos son no vacíos).

Conceptos Longitud Concatenación Identidad

P i

Alfabetos y Lenguajes : Operaciones con Palabras

42

Potencia Igualdad Prefijo Sufijo Subpalabra Inversa

Page 15: TALF - Otoño 2010

15

Longitud Si w es una palabra sobre cualquier alfabeto, su

longitud se denota por el símbolo | w |.

La longitud es el numero de símbolos que tiene la

Alfabetos y Lenguajes : Operaciones con Palabras

43

palabra.

La palabra vacía tiene longitud 0.

Ejemplo : Si w = 121 sobre el alfabeto = {1,2}, entonces | w | = 3.

Concatenación Si w y z son palabras sobre cualquier alfabeto, la

concatenación de w con z es la palabra que se obtiene al añadir a la palabra w la palabra z.

La concatenación de las palabras w y z se denota

Alfabetos y Lenguajes : Operaciones con Palabras

44

La concatenación de las palabras w y z se denota wz o w·z.

Para la concatenación se tiene que : | wz | = | w | + | z |

Ejemplo : Si w = “banana” y z = “rama”, la concatenación de w con

z es la palabra “bananarama”

Identidad La concatenación de la palabra vacía con

cualquier otra palabra w, no modifica a la palabra w

Alfabetos y Lenguajes : Operaciones con Palabras

45

palabra w.

Por esto, se comporta como la identidad respecto a la operación de concatenación.

Page 16: TALF - Otoño 2010

16

Potencia Sea w una palabra; para n se define : wn es igual a :

si n = 0 wwn-1 si n > 0

Alfabetos y Lenguajes : Operaciones con Palabras

46

wwn 1 si n > 0

Se dice que wi es la potencia i-esima de w. Ejemplo :

Si w = 122 sobre el alfabeto = {1,2} se tiene : w0 = w1 = 122 w2 = 122122 w3 = 122122122

IgualdadSi w y z son palabras, se dice que w es

igual z, si tienen : La misma longitud

Alfabetos y Lenguajes : Operaciones con Palabras

47

La misma longitud

Los mismos símbolos en la misma posición.

Se denota mediante w = z

Prefijo Si w y x son palabras, se dice que x es prefijo de

w, si para alguna palabra y se obtiene que w = xy. Si se considera y = , entonces para w = xy se

tiene w = x

Alfabetos y Lenguajes : Operaciones con Palabras

48

tiene w = x. Ejemplo :

Si w es la palabra 121, entonces la palabra x = 12 es un prefijo de w e y = 1.

Son prefijos propios aquellas palabras que son prefijo de una palabra pero no iguales a la misma. Ejemplo :

Si w es la palabra 121, entonces la palabra x = 121 es un prefijo de w, pero no es prefijo propio de w.

Page 17: TALF - Otoño 2010

17

Sufijo Si w y x son palabras, se dice que x es sufijo de

w, si para alguna palabra y se obtiene que w = yx. Si se considera y = , entonces para w = yx se

tiene w = x

Alfabetos y Lenguajes : Operaciones con Palabras

49

tiene w = x. Ejemplo :

Si w es la palabra 121, entonces la palabra x = 21 es un sufijo de w e y = 1.

Son sufijos propios aquellas palabras que son sufijo de una palabra pero no iguales a la misma. Ejemplo :

Si w es la palabra 121, entonces la palabra x = 121es un sufijo de w, pero no es sufijo propio de w.

SubpalabraUna palabra w es una subpalabra de otra

palabra z, si existen las palabras x e y para las cuales z = xwy

Alfabetos y Lenguajes : Operaciones con Palabras

50

las cuales z xwy.

Si se consideran x = e y = , entonces se tiene que z = w, es decir, una palabra es subpalabra de si misma.

Inversa o Transpuesta La inversa de una palabra w es la imagen

refleja de w.

Para denotar la inversa de la palabra w se

Alfabetos y Lenguajes : Operaciones con Palabras

51

Para denotar la inversa de la palabra w se usa w.

Podemos definir a w. w si w = ya si w = ay, a e y *

Page 18: TALF - Otoño 2010

18

Inversa o Transpuesta Ejemplo : supongamos que x = “able”. Siguiendo

la definición anterior para calcular w se tiene : x = (able) = (ble) a

Alfabetos y Lenguajes : Operaciones con Palabras

52

= (le) ba

= (e) lba

= () elba

= elba

= elba

Inversa o TranspuestaAdicionalmente, se tiene que si w e y son

palabras y si x = wy, entonces : (x) = (wy)

Alfabetos y Lenguajes : Operaciones con Palabras

53

(x) = (wy)

= yw

La inversa se “deshace” a si misma : (x) = x

Conceptos básicos Concatenación Identidad Potencia

U ió

Alfabetos y Lenguajes : Operaciones con Lenguajes

54

Unión Intersección Igualdad Sublenguaje Cerradura Diferencia

Page 19: TALF - Otoño 2010

19

ConcatenaciónSean A y B lenguajes sobre un alfabeto, se

define el lenguaje concatenación de A y B como :

Alfabetos y Lenguajes : Operaciones con Lenguajes

55

A B = { w x | w A y x B }

Por lo tanto, A B esta formado por todas las cadenas que se forman concatenando cada cadena de A con todas las cadenas de B.

ConcatenaciónNo es necesario que para formar el

lenguaje de concatenación A B, A y B sean lenguajes sobre el mismo alfabeto

Alfabetos y Lenguajes : Operaciones con Lenguajes

56

sean lenguajes sobre el mismo alfabeto.

Si A es un lenguaje sobre 1, y B es lenguaje sobre 2, entonces A B es un lenguaje sobre el alfabeto 12.

Concatenación : EjemploEjemplo 1 :

A = { casa }

B = { pajaro perro }

Alfabetos y Lenguajes : Operaciones con Lenguajes

57

B = { pajaro, perro } A B = { casapajaro, casaperro }

Ejemplo 2 : A = { a, b, c }

B = { 1, 2, 3 } A B = { a1, a2, a3, b1, b2, b3, c1, c2, c3 }

Page 20: TALF - Otoño 2010

20

Identidad La concatenación del lenguaje cuyo único

elemento es la palabra vacía { } con cualquier otro lenguaje A no modifica el

Alfabetos y Lenguajes : Operaciones con Lenguajes

58

cualquier otro lenguaje A, no modifica el lenguaje A.

Por esto, el lenguaje { } se comporta como la identidad respecto a la operación de concatenación de lenguajes.

Potencia Sea A un lenguaje sobre el alfabeto , definimos

el conjunto potencia An es igual a : { } si n = 0 AAn-1 si n > 0

Alfabetos y Lenguajes : Operaciones con Lenguajes

59

AA si n 0

Se define 0 = { } Ejemplo :

Si A = { a, b } sobre el alfabeto español se tiene : A0 = { } A1 = { a, b } A2 = { aa, ab, ba, bb } A3 = { aaa, aab, aba, abb, baa, bab, bba, bbb }

Unión Si A y B son lenguajes sobre el alfabeto ,

entonces la unión de A y B se denota por A B y esta formada por todas las palabras que

t l d l d l j

Alfabetos y Lenguajes : Operaciones con Lenguajes

60

pertenecen al menos a uno de los dos lenguajes.

Por tanto se tiene : A B = { x | x A o x B }

Ejemplo : A = { , 0, 1, 10, 11 } y B = {, 1, 0110, 11010 }, entonces

A B = {, 0, 1, 10, 11, 0110, 11010 }

Page 21: TALF - Otoño 2010

21

Intersección Si A y B son lenguajes sobre el alfabeto ,

entonces la intersección de A y B se denota por A B y esta formada por todas las palabras que

t l d l j l

Alfabetos y Lenguajes : Operaciones con Lenguajes

61

pertenecen a los dos lenguajes a la vez.

Por tanto se tiene : A B = { x | x A y x B }

Ejemplo : A = { , 0, 1, 10, 11 } y B = {, 1, 0110, 11010 }, entonces

A B = {, 1 }

IgualdadSe dice que dos lenguajes A y B son

iguales si contienen exactamente las mismas palabras es decir son conjuntos

Alfabetos y Lenguajes : Operaciones con Lenguajes

62

mismas palabras, es decir, son conjuntos iguales.

Se denota mediante A = B

Sublenguaje Si A y B son lenguajes sobre un alfabeto y si

todas las cadenas de A son también palabras de B, entonces se dice que A es un sublenguaje de B.

Alfabetos y Lenguajes : Operaciones con Lenguajes

63

A B denota que A es un sublenguaje de B. Cualquier lenguaje L sobre el alfabeto es un

sublenguaje de *, es decir, L *.

Page 22: TALF - Otoño 2010

22

TeoremaSean A y B dos lenguajes sobre el alfabeto , entonces A = B si y sólo si A B y B A

Alfabetos y Lenguajes : Operaciones con Lenguajes

64

B A.

TeoremaDados los lenguajes A, B y C tres

lenguajes sobre el alfabeto , entonces se cumple que :

Alfabetos y Lenguajes : Operaciones con Lenguajes

65

cumple que : A ( B C) = A B A C

( B C) A = B A C A

Cerradura de estrella o de KleeneSi A es un lenguaje sobre un alfabeto , de

un lenguaje como : A* = An

Alfabetos y Lenguajes : Operaciones con Lenguajes

66

A = n=0 A

Page 23: TALF - Otoño 2010

23

Cerradura positivaSi A es un lenguaje sobre un alfabeto , de

un lenguaje como : A+ = An

Alfabetos y Lenguajes : Operaciones con Lenguajes

67

A = n=1 A

DiferenciaSi A y B son lenguajes sobre un alfabeto ,

definiremos la diferencia como : A – B = { x | x A y x B }

Alfabetos y Lenguajes : Operaciones con Lenguajes

68

A – B = { x | x A y x B }

ComplementoSi A es un lenguaje sobre el alfabeto ,

definiremos el complemento como : Ā = * – A

Alfabetos y Lenguajes : Operaciones con Lenguajes

69

Ā = – A

Page 24: TALF - Otoño 2010

24

TeoremaSi A es un lenguaje sobre el alfabeto ,

entonces se cumple que : A+ = A A* = A* A

Alfabetos y Lenguajes : Operaciones con Lenguajes

70

A = A A = A A

TeoremaSi A y B son lenguajes sobre el alfabeto ,

entonces se cumple que : ( A B ) = B A

Alfabetos y Lenguajes : Operaciones con Lenguajes

71

( A B ) = B A

Lenguajes Regulares

72

Page 25: TALF - Otoño 2010

25

Lenguajes Regulares

Lenguajes regulares y expresiones regulares Autómata Finito Determinista AFD y lenguajes Autómata Finito No Determinista Eq i alencia de AFND AFD

73

Equivalencia de AFND y AFD -transiciones Autómatas finitos y expresiones regulares Propiedades de los lenguajes regulares Aplicaciones de las expresiones regulares y los

autómatas finitos Simplificación de AFD

Lenguajes Regulares : lenguajes y expresiones regulares

El primer método para especificar lenguajes que estudiaremos, define el conjunto de lenguajes llamados lenguajes regulares sobre un alfabeto

74

lenguajes regulares sobre un alfabeto.

Lenguajes Regulares : lenguajes y expresiones regulares

Sea un alfabeto. El conjunto de los lenguajes regulares sobre se define recursivamente como sigue :

{ } son leng ajes reg lares

75

y { } son lenguajes regulares

a , { a } es un lenguaje regular

Si A y B son lenguajes regulares, entonces A B, A B, A* son lenguajes regulares.

Ningún otro lenguaje sobre es regular.

Page 26: TALF - Otoño 2010

26

Lenguajes Regulares : lenguajes y expresiones regulares

Podemos simplificar la especificación de un lenguaje regular introduciendo una especie de abreviatura llamada expresión regular.

Convenimos en escribir a en lugar del l j it i { }

76

lenguaje unitario { a }. Por tanto :

a b denota { a,b } = { a } { b } ab denota { ab } a* denota { a }* a+ denota { a }+

Lenguajes Regulares : lenguajes y expresiones regulares

Sea un alfabeto. El conjunto de las expresiones regulares sobre se define recursivamente como sigue : y { } son expresiones regulares

77

y { } so e p es o es egu a es a , a es una expresión regularSi r y s son expresiones regulares,

entonces r s, r s, r* también lo son.Ninguna otra secuencia de símbolos es

una expresión regular.

Lenguajes Regulares : lenguajes y expresiones regulares

Teorema : Sean r, s, y t expresiones regulares sobre el

mismo alfabeto . Entonces . r s = s r r = r = r

78

r r r r r = r ( r s ) t = r ( s t ) r = r = r r = r = (rs) t = r (st) r (s t) = rs rt y ( r s ) t = rt st

Page 27: TALF - Otoño 2010

27

Lenguajes Regulares : lenguajes y expresiones regulares

Teorema r* = r** = r*r* = ( r )* = r*( r ) = ( r )r*

= rr*

(r s)* = ( r* s* )* = (r*s*)* = (r*s)*r* = r*(sr*)*

79

( ) ( ) ( ) ( ) ( )

r(sr)* = (rs)*r

(r*s)* = ( r s )* s

(rs*)* = r ( r s)*

s (r )* (r ) s = sr

rr* = r*r

Lenguajes Regulares : Autómata Finito Determinista

Si A = c* ( a bc* )*.

Para saber si una palabra w ϵ A, se deben analizar :

80

Los simbolos que aparecen en w

La posición relativa de dichos caracteres

Por ejemplo : abc5c3ab ϵ A,

cabac3bc A.

Lenguajes Regulares : Autómata Finito Determinista

Podemos construir un diagrama que ayude a determinar a los miembros del lenguaje.

81

Page 28: TALF - Otoño 2010

28

Lenguajes Regulares : Autómata Finito Determinista

Tal diagrama tiene la forma de un grafo dirigido con información adicional, y se llama diagrama de transición.

L d d l f ll t d

82

Los nodos del grafo se llaman estado, y se usan para señalar, en ese momento, hasta que lugar se ha analizado la cadena.

Lenguajes Regulares : Autómata Finito Determinista

Las aristas del grafo se etiquetan con caracteres del alfabeto y se llaman transiciones.

Si el carácter a reconocer conc erda con

83

Si el carácter a reconocer concuerda con la etiqueta de alguna transición que parta del estado actual, nos desplazamos al estado al que nos lleva la arista correspondiente.

Lenguajes Regulares : Autómata Finito Determinista

Se debe comenzar por un estado inicial, y cuando se hayan tratado todos los caracteres de la cadena correspondiente necesitamos saber si

84

correspondiente, necesitamos saber si es “correcto”.

Para ello se marcan ciertos estados como estados de aceptación o estados finales.

Page 29: TALF - Otoño 2010

29

Lenguajes Regulares : Autómata Finito Determinista

Por ejemplo : El siguiente diagrama acepta todas las cadenas

que están formadas por 0 ó más a’s seguidas por una unica b

85

L = { w | w = akb, para k 0 }

a

b a, b a, b

Lenguajes Regulares : Autómata Finito Determinista

Por ejemplo :Consideremos el lenguaje L = (ab)*.

En este caso la cadena vacía pertenece al lenguaje y debe ser aceptada

86

al lenguaje y debe ser aceptada.

Por lo tanto el estado inicial también es estado de aceptación.

Lenguajes Regulares : Autómata Finito Determinista

El siguiente diagrama de transición correspondiente es :

b

87

b

a

a, b

a

Page 30: TALF - Otoño 2010

30

Lenguajes Regulares : Autómata Finito Determinista

Etiquetaremos los estados del diagrama con las letras qi, para i=0,1,2. Resultando :

b

88

qo q1

q2

b

a

a, b

a

Lenguajes Regulares : Autómata Finito Determinista

Representaremos el diagrama por medio de una tabla que indica el siguiente estado al que desplazarse, desde un estado combinado con un símbolo de la entrada.

89

Estado / Entrada

a b

q0 q1 q2

q1 q2 q0

q2 q2 q2

Lenguajes Regulares : Autómata Finito Determinista

Obsérvese que : La tabla tiene, para cada par estado actual

– entrada, un único estado siguiente.

Por lo tanto para cada estado actual y

90

Por lo tanto, para cada estado actual y símbolo de entrada se puede determinar cual será el estado siguiente.

Page 31: TALF - Otoño 2010

31

Lenguajes Regulares : Autómata Finito Determinista

Se puede pensar que el diagrama representa la acción de alguna máquina que :

P ede pasar por diferentes estados

91

Puede pasar por diferentes estados

El cambio de estado depende de la entrada y del estado en que se encuentre.

Lenguajes Regulares : Autómata Finito Determinista

Dicha máquina se llama autómata o computadora ideal.

Existen autómatas finitos de 2 tipos :

92

Deterministas

No deterministas

Lenguajes Regulares : Autómata Finito Determinista

Formalmente, un autómata finito determinista M es una colección de cinco elementos : Un alfabeto de entrada

Una colección finita de estados Q

93

Un estado inicial s

Una colección F de estados finales

Una función : Q x Q que determina el unico estado siguiente para el par (qi, ) correspondiente al estado actual y la entrada.

Page 32: TALF - Otoño 2010

32

Lenguajes Regulares : Autómata Finito Determinista

Generalmente, el termino autómata finito determinista se abrevia como AFD

Usaremos M = ( Q, , s, F, ) para i di l j t d t d l

94

indicar el conjunto de estados, el alfabeto, el estado inicial, el conjunto de estados iniciales y la función asociada con el AFD M.

Para el ejemplo anterior el autómata se representará mediante M = ( Q, , s, F, ), donde : Q = { q0, q1, q2 } { b }

Lenguajes Regulares : Autómata Finito Determinista

95

= { a, b } s = q0

F = { q0 } a b

q0 q1 q2

q1 q2 q0

q2 q2 q2

Lenguajes Regulares : AFD y Lenguajes

Para trabajar con los AFD se requieren ciertas definiciones :Si M es un AFD, entonces el lenguaje

aceptado por M es : L(M) = { w * | w es

96

aceptado por M es : L(M) = { w | w es aceptada por M }

Por lo tanto, L(M) es el conjunto de todaslas cadenas que hacen que M pase de su estado inicial a un estado de aceptación.

Page 33: TALF - Otoño 2010

33

Lenguajes Regulares : AFD y Lenguajes

Para cada ( qi, ) de Q x , ( qi, ) es un estado perteneciente a Q. Obsérvese que :

este estado puede ser pareado con la entrada.

97

Este par se transforma mediante en un nuevo estado de Q.

Ejemplo : si q0 es el estado inicial de M y se tiene la entrada 1 2 3, entonces : El estado resultante se obtiene mediante la aplicación de ( ( (q0, 1), 2),3).

Lenguajes Regulares : AFD y Lenguajes

Por abreviatura utilizaremos ( q0 , 123 ) para representar a

( ( ( q0, 1 ), 2 ),3 ).

98

Lenguajes Regulares : AFD y Lenguajes

Autómatas equivalentesDiremos que 2 AFD M1 y M2 son

equivalentes si L( M1 ) = L( M2 ).

99

Page 34: TALF - Otoño 2010

34

Ejemplo : Sean M1 y M2 sobre el alfabeto = { a }, representados por los siguientes diagramas de transición :

Lenguajes Regulares : AFD y Lenguajes

100

Ambos aceptan el lenguaje a+ y por tanto son equivalentes.

a

aM2a

aM1 a

Si se permiten que desde un estado, se realicen cero, uno o más transiciones mediante el mismo símbolo de entrada, se dice que el autómata finito es no

Lenguajes Regulares : Autómata Finito No Determinista

101

se dice que el autómata finito es no determinista.

A veces es más conveniente diseñar autómatas finitos no deterministas (AFND) en lugar de deterministas.

Ejemplo : el lenguaje a*b ab* Las cadenas que pertenece a este

lenguaje están formadas por : Algunas a’s seguidas por una b o

Lenguajes Regulares : Autómata Finito No Determinista

102

Algunas a s seguidas por una b, o

Una a seguida por varias b’s.

Page 35: TALF - Otoño 2010

35

El AFD que acepta el lenguaje se representa por el siguiente diagrama de transición :

Lenguajes Regulares : Autómata Finito No Determinista

bq q

103

q0 q1

q2

a

a, ba q5q3 q4

q6

a, b

b

a

b

a

a, b

b

Verifiquemos que el diagrama de transición corresponde al AFD de A. a*b = b ab aaa*b

Lenguajes Regulares : Autómata Finito No Determinista

bq q

104

q0 q1

q2

a

a, ba q5q3 q4

q6

a, b

b

a

b

a

a, b

b

Verifiquemos que el diagrama de transición corresponde al AFD de A. ab* = a abb*

Lenguajes Regulares : Autómata Finito No Determinista

bq q

105

q0 q1

q2

a

a, ba q5q3 q4

q6

a, b

b

a

b

a

a, b

b

Page 36: TALF - Otoño 2010

36

Para el mismo lenguaje, este diagrama representa un AFN. Obsérvese que en este diagrama es más fácil determinar qué lenguaje se acepta

Lenguajes Regulares : Autómata Finito No Determinista

106

qué lenguaje se acepta.

q3

q0

b

a q1 q2

q4

b

a

a

b

Formalmente, un autómata finito no determinista M es una colección de cinco elementos :Un alfabeto de entrada

Lenguajes Regulares : Autómata Finito No Determinista

107

U a abeto de e t adaUna colección finita de estados QUn estado inicial sUna colección F de estados finalesUna relación de transición : (Q x ) x Q

Para el ejemplo anterior el autómata se representará mediante M = ( Q, , s, F, ), donde :

Q { q q q q q }

Lenguajes Regulares : Autómata Finito Determinista

a b

108

Q = { q0,q1,q2,q3,q4 }

= { a, b }

s = q0

F = { q2, q3, q4 }

a b

q0 {q1,q4} {q3}

q1 {q1} {q2}

q2 q3 q4 {q4}

Page 37: TALF - Otoño 2010

37

Autómatas equivalentesDiremos que el AFD M1 es equivalente al

AFND M2 si L( M1 ) = L( M2 ).

Lenguajes Regulares : Equivalencia AFD y AFND

109

Lenguajes Regulares : Equivalencia AFD y AFND

Los siguientes autómatas son equivalentes : AFND

q0a q1

a,b

110

AFD

Reconocen al lenguaje L = a ( a b )*

q0a q1

a,b

b q2

a,b

Lenguajes Regulares : Equivalencia AFD y AFND

TeoremaSea M = ( Q, , s, F, ) un AFND,

entonces existe un AFD M’ = ( Q’, ’, s’, F’, ) que es equivalente a M

111

) que es equivalente a M.

Page 38: TALF - Otoño 2010

38

Lenguajes Regulares : Equivalencia AFD y AFND

Definamos M’ = ( Q’, ’, s’, F’, ) como sigue :

s’ = { s }

’ =

112

= Q’ = 2Q (colección de todos los subconjuntos

de Q)

F’ = todos los subconjuntos de Q’ que contienen estados de F.

Lenguajes Regulares : Equivalencia AFD y AFND

Para cada conjunto { qi1, qi2, ... qin } de Q’ y cada símbolo de , definiremos como :

( { qi1, qi2, ... qin }, ) = { p1, p2, ... pk } si y solo sí

( { } ) { }

113

( { qi1, qi2, ... qin }, ) = { p1, p2, ... pk }

Lenguajes Regulares : Equivalencia AFD y AFND

Ejemplo : M es un AFND que acepta el lenguaje L = a (ab)+ , representado por el siguiente diagrama de transición :

114

q0a q1

a q2 q3b

a

Page 39: TALF - Otoño 2010

39

Lenguajes Regulares : Equivalencia AFD y AFND

El autómata se representará mediante M = ( Q, , s, F, ), donde :

Q = { q0,q1,q2,q3 }

= { a b }

115

= { a, b }

s = q0

F = { q1, q3 }

a b

q0 {q1,q2} q1 q2 { q3 }

q3 { q2 }

Lenguajes Regulares : Equivalencia AFD y AFND

M’ = ( Q’, ’, s’, F’, ) se define como: s’ = { s } = { q0 }

’ = = { a, b }

116

a b

q0 {q1,q2} q2 { q3 }

q3 { q2 } {q1,q2} { q3 }

Lenguajes Regulares : Equivalencia AFD y AFND

Conforme la función definida, basta con añadir a Q’ y F’ estados sólo cuando el resultado de una transición desde un estado previamente añadido,

117

Q’ = { , {q0}, {q2}, {q3}, {q1, q2} }

F’ = { {q3}, {q1, q2} }

Page 40: TALF - Otoño 2010

40

Lenguajes Regulares : Equivalencia AFD y AFND

El diagrama de transición será entonces el siguiente :

b

118

{q0}a {q1,q2}

b

{q3} {q2}b a

a,b

a

ba

Lenguajes Regulares : -Transiciones

Podemos ampliar la definición de AFND para incluir transiciones de un estado a otro que no dependan de ninguna entrada

119

entrada.

Tales transiciones se llaman -transiciones porque al realizarse no consumen ningún símbolo de la entrada.

Lenguajes Regulares : -Transiciones

Si un AFND tiene -transiciones, la relación de transición asocia pares de Q x ( {} ) x Q con subconjuntos de Q.

Se puede añadir una columna en la tabla de

120

Se puede añadir una columna en la tabla de para colocar los pares de la forma (qi, ).

Cuando hay -transiciones en un AFND es conveniente suponer que cada estado tiene una -transición que cicla en ese estado.

Page 41: TALF - Otoño 2010

41

Lenguajes Regulares : -Transiciones

Ejemplo :

q0 q1a

121

a,

q2

b

Lenguajes Regulares : -Transiciones

Ejemplo :

a b

122

q0 {q1}

q1 { q2 }

q2 { q0 } { q0 }

Lenguajes Regulares : -Transiciones

Para calcular el conjunto de estados siguientes de un AFND que contiene -transiciones, debemos tener en cuenta :

las transiciones “anteriores”

123

las -transiciones “anteriores”, y

las -transiciones “posteriores” a la transición etiquetada con .

Page 42: TALF - Otoño 2010

42

Lenguajes Regulares : -Transiciones

Podemos sistematizar el proceso para calcular el conjunto de los estados siguientes en un AFND con -transiciones

124

transiciones.

Lenguajes Regulares : -Transiciones

Para todo estado q Q, definimos la -cerradura de q como : -c(q) = { p | p es accesible desde q sin

consumir nada en la entrada}

125

consumir nada en la entrada}

Ampliando esta definición para todos los estados :

n

1k

)c(}),...,,({21

kn iiii qqqqc

Lenguajes Regulares : -Transiciones

Ejemplo

q0a q1

b

q2 q3b a

126

-c(q1) = { q1, q4 }

q5 q4

b

b

a

Page 43: TALF - Otoño 2010

43

Lenguajes Regulares : -Transiciones

Ejemplo

b

q0

q1

b

q2

a

127

-c(q0) = { q0, q1, q2 } -c(q1) = { q1, q2 } -c(q2) = { q2 } -c(q3) = { q3 } -c(q4) = { q1, q2, q4 }

bq3 q4

Lenguajes Regulares : -Transiciones

Para q Q y se define d( q, ) = { p | hay una transición de q a p

etiquetada con }

Ampliando la definición de d a los

128

Ampliando la definición de d a los conjuntos

n

1k

),()},,...,,({21

kn iiii qdqqqd

Lenguajes Regulares : -Transiciones

Ejemplo

b

q0

q1

b

q2

a

129

d(q0,a) = { q3 } d(q0,b) = d({q3,q4}, b) = { q0, q4 }

bq3 q4

Page 44: TALF - Otoño 2010

44

Lenguajes Regulares : -Transiciones

Obsérvese que : -c( d(q,) ) es el conjunto de todos los

estados accesibles desde q, primero mediante una transición con y después

130

mediante una transición con y después mediante una o más -transiciones.

Lenguajes Regulares : -Transiciones

d( -c(q), ) es el conjunto de todos los estados accesibles desde q, tomando primero una o más -transiciones y después una transición con .

131

Lenguajes Regulares : -Transiciones

-c( d( -c(q), ) ) es el conjunto de todos los estados accesibles desde q, tomando primero una o más -transiciones, después una transición con y, por último,

132

una o más -transiciones.

Page 45: TALF - Otoño 2010

45

Lenguajes Regulares : -Transiciones

Téngase presente que permanecer en un estado es como tomar una -transición.

Por lo tanto, -c( d( -c(q), ) ) es el conjunto de todos los estados siguientes al

133

conjunto de todos los estados siguientes al actual q mediante la entrada .

Lenguajes Regulares : -Transiciones

Lo anterior, sistematiza el cálculo de conjuntos de estados siguientes : Se obtiene -c( q )

Luego, se calcula d( -c(q), )

134

g ( (q) )

Finalmente se calcula la -cerradura del conjunto de estados resultantes.

Lenguajes Regulares : -Transiciones

A partir de un AFND M = (Q, , s, F, ) que tiene -transiciones, se puede construir un AFND sin -transiciones que acepte el mismo lenguaje.

135

q p g jSe define por M´ = (Q, , s, F’, ’)

donde :F’ = F { q | -c(q) F }’( q, ) = -c( d( -c( q ), ) )

Page 46: TALF - Otoño 2010

46

Lenguajes Regulares : -Transiciones

Ejemplo

b

q0

q1

q2

aa

b

136

-c( q0 ) = { q0, q1 } -c( q1 ) = { q1 } -c( q2 ) = { q2 } -c( q3 ) = { q3, q1 } -c( q4 ) = { q4, q5 } -c( q5 ) = { q5 }

bq3 q4 q5

Lenguajes Regulares : -Transiciones

Primero determinaremos F’ -c( q0 ) { q2 } = { q0, q1 } { q2 } = -c( q1 ) { q2 } = { q1 } { q2 } = -c( q2 ) { q2 } = { q2 } { q2 } = { q2 }

137

c( q2 ) { q2 } { q2 } { q2 } { q2 }

-c( q3 ) { q2 } = { q3, q1 } { q2 } = -c( q4 ) { q2 } = { q4, q5 } { q2 } = -c( q5 ) { q2 } = { q5 } { q2 } =

Por lo tanto F’ = F = { q2 }

Lenguajes Regulares : -Transiciones

d( -c( q0 ), a ) = d( { q0, q1 }, a ) = { q3, q4 } d( -c( q0 ), b ) = d( { q0, q1 }, b ) = { q2 } d( -c( q1 ), a ) = d( { q1 } , a ) = { q4 } d( -c( q1 ), b ) = d( { q1 } , b ) = { q2 } d( -c( q2 ), a ) = d( { q2 } , a ) =

( ( ) ) ( { } )

138

d( -c( q2 ), b ) = d( { q2 } , b ) = d( -c( q3 ), a ) = d( { q3, q1 }, a ) = { q4 } d( -c( q3 ), b ) = d( { q3, q1 }, b ) = { q4, q2 } d( -c( q4 ), a ) = d( { q4, q5 }, a ) = d( -c( q4 ), b ) = d( { q4, q5 }, b ) = d( -c( q5 ), a ) = d( { q5 } , a ) = d( -c( q5 ), b ) = d( { q5 } , b ) =

Page 47: TALF - Otoño 2010

47

Lenguajes Regulares : -Transiciones

-c( d( -c( q0 ), a ) ) = -c( d( { q0, q1 }, a ) ) = -c( { q3, q4 } ) = { q3, q4, q1, q5 } -c( d( -c( q0 ), b ) ) = -c( d( { q0, q1 }, b ) ) = -c( { q2 } )

{ }

139

= { q2 } -c( d( -c( q1 ), a ) ) = -c( d( { q1 }, a ) ) = -c( { q4 } ) = { q4, q5 } -c( d( -c( q1 ), b ) ) = -c( d( { q1 }, b ) ) = -c( { q2 } ) = { q2 }

Lenguajes Regulares : -Transiciones

-c( d( -c( q2 ), a ) ) = -c( d( { q2 } , a ) ) = -c( ) = -c( d( -c( q2 ), b ) ) = -c( d( { q2 } , b ) ) = -c( )

140

= -c( d( -c( q3 ), a ) ) = -c( d( { q3, q1 }, a ) ) = -c( { q4 } ) = { q4, q5 } -c( d( -c( q3 ), b ) ) = -c( d( { q3, q1 }, b ) ) = -c( { q4, q2 } ) = { q4, q2, q5 }

Lenguajes Regulares : -Transiciones

-c( d( -c( q4 ), a ) ) = -c( d( { q4, q5 }, a ) ) = -c( ) = -c( d( -c( q4 ), b ) ) = -c( d( { q4, q5 }, b ) ) = -c( )

141

= -c( d( -c( q5 ), a ) ) = -c( d( { q5 } , a ) ) = -c( ) = -c( d( -c( q5 ), b ) ) = -c( d( { q5 } , b ) ) = -c( ) =

Page 48: TALF - Otoño 2010

48

Lenguajes Regulares : -Transiciones

Resultando el siguiente diagrama de transición

qa

q qb

b

142

a,b

q0 q1

a

q3

q2

q4

aa

q5

a,bb

aa

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Propiedades de los lenguajes aceptados por autómatas finitos. Entre estas propiedades veremos :

Unión

143

Unión

Concatenación

Cerradura

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

UniónSupongamos que M1 = (Q1, 1, s1, F1, 1) y

M2 = (Q2, 2, s2, F2, 2) son AFND.

Podemos unir M y M en un nuevo AFND

144

Podemos unir M1 y M2 en un nuevo AFND que acepte L(M1) L(M2), añadiendo un nuevo estado inicial s y dos -transiciones, una de s a s1 y otra de s a s2.

Page 49: TALF - Otoño 2010

49

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Formalmente definiremos este nuevo AFND M = (Q, , s, F, ) viene dado por : Q = Q1 Q2 { s }

= 1 2

145

1 2

s = s

F = F1 F2

= 1 2 { (s,,s1), (s,,s2) }

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Ejemplo : construir el AFND que reconozca la expresión ab* (ab)* L1 = ab*

1 a 1

b

146

L2 = (ab)*

q01 q1

1

q02 a

q12

b

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

L = ab* (ab)*

q01 a

q11

b

147

q0

q02 a

q12

b

Page 50: TALF - Otoño 2010

50

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

ConcatenaciónSupongamos que M1 = (Q1, 1, s1, F1, 1) y

M2 = (Q2, 2, s2, F2, 2) son AFND.

Podemos concatenar M y M en un nuevo

148

Podemos concatenar M1 y M2 en un nuevo AFND que acepte L(M1) L(M2), añadiendo una -transición, desde cada estado final de M1 al estado inicial de M2.

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Formalmente definiremos este nuevo AFND M = (Q, , s, F, ) viene dado por : Q = Q1 Q2

= 1 2

149

1 2

s = s1

F = F2

= 1 2 { F1 x {} x {s2} }

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Ejemplo : construir el AFND que reconozca la expresión ab* · (ab)* L1 = ab*

q 1 aq 1

b

150

L2 = (ab)*

q01 q1

1

q02 a

q12

b

Page 51: TALF - Otoño 2010

51

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

L = ab* · (ab)*

q01 a

q11

b

q02 a

q12

b

151

q0 q1 q0 q1

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

CerraduraSupongamos que M = (Q, , s, F, ),

podemos construir un AFND que acepte L(M)* añadiendo :

152

L(M) , añadiendo : un nuevo estado inicial s’, que además es

estado de aceptación

una -transición desde s’ a s.

una -transición desde cada estado de aceptación de M a s’.

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Formalmente definiremos este nuevo AFND M’ = (Q’, ’, s’, F’, ’) viene dado por: Q’ = Q { s’ }

153

{ }

’ = s = s’

F = { s’ }

= { (s’,,s) } (F x {} x {s’})

Page 52: TALF - Otoño 2010

52

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Ejemplo : construir el AFND que reconozca la expresión : (ab)* L = ab

154

q0a

q1b

q2

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

L’ = (ab)*

qa

qb

qq

155

q0 q1 q2q0

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

TeoremaEl conjunto de lenguajes aceptados por un

autómata finito sobre el alfabeto contiene y los lenguajes unitarios { a } para todo a

156

y los lenguajes unitarios { a } para todo a . Este conjunto es cerrado con respecto a la unión, concatenación y la cerradura estrella.

Page 53: TALF - Otoño 2010

53

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Dada una expresión regular r para construir un AFND, podemos aplicar las técnicas precedentes a los términos de las expresiones regulares

157

las expresiones regulares.

Por lo tanto, todo lenguaje regular es aceptado por un automata finito.

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Consideremos el autómata finito M = (Q, , s, F, ) y supongamos que s = q0

es el estado inicial.

P t d

158

Para todo qi, sea :Ai = { w * | (qi, w) F }

Ai es el conjunto de las cadenas sobre que hacen que M pase desde qi hasta un estado de aceptación.

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Obsérvese que :A0 = L(M)

Es posible que Ai = . Si qi F, entonces se obtiene que A

159

se obtiene que Ai.

Page 54: TALF - Otoño 2010

54

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Ejemplo :

q0a q1 q2

a

b

b

160

q3

q5

a

b

q4

a,b

a

b

a,b

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

A0 = ab ba

A1 = b

A2 =

161

A3 = a

A4 = A5 =

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Supongamos que qk (qi,). Entonces Ai contiene a Ak.

Se tiene :

162

Ai = { Ak | qk (qi,) }

Page 55: TALF - Otoño 2010

55

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Aplicando lo anterior al ejemplo se tiene que : A0 = a A1 b A3

A1 = b A2 a A5

A2 = a A5 b A5

A A b A

163

A3 = a A4 b A5

A4 = a A5 b A5

A5 = Que corresponde a un sistema de

ecuaciones, que se puede resolver por sustitución.

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Reemplazando A5 = A0 = a A1 b A3

A1 = b A2

A2 =

164

2

A3 = a A4

A4 =

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Reemplazando A2 = y A4 = A0 = a A1 b A3

A1 = b

A3 = a

165

3

Reemplazando A1 = b y A3 = a, se tiene A0 = ab ba

Page 56: TALF - Otoño 2010

56

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Considere el AFD siguiente :

q0b

q1

a

166

Tenemos que : A0 = aA0 bA1

A1 =

Resolviéndolo tenemos que : A0 = aA0 b

Y no se puede seguir simplificando

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

Lema de ArdenUna ecuación de la forma X = AX B,

donde A, tiene una solución única X = A* B.

167

Para el caso anterior A0 = aA0 b Tiene como solución A0 = a*b

Lenguajes Regulares : Autómatas Finitos y Expresiones Regulares

LemaSea M un autómata finito, entonces existe

una expresión regular r para la cual L( r ) = L( M )

168

L( M ).

Teorema de KleeneUn lenguaje es regular si y solo si es

aceptado por un autómata finito.

Page 57: TALF - Otoño 2010

57

Cuando se determina el tipo más restrictivo alque pertenece un lenguaje, se estadeterminando el mínimo número de recursoscomputacionales necesario para reconocersus cadenas

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

169

sus cadenas. De ahí el interés de estudiar la herramientas

que nos permiten determinar si undeterminado lenguaje pertenece o no a undeterminado tipo.

En este tema se presentan los resultadosque satisfacen los lenguajes regulares.

Lema del Bombeo Este lema proporciona una herramienta muy util

para demostrar que ciertos lenguajes no sonregulares, es decir, que no pueden serreconocidos por autómatas finitos.

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

170

p Además como consecuencia adicionales de sus

enunciados, también resulta útil como referenciateórica para desarrollar algoritmos que respondana ciertas cuestiones sobre aspectos determinadosde autómatas finitos, como por ejemplo : si el lenguaje aceptado por un autómata finito ¿es finito o

infinito?.

Si un lenguaje es regular, entonces es aceptado por un AFD, M = ( Q, , q0, F, ).

S |Q| d i l AFD ti

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

171

Sea |Q| = n, es decir, el AFD tiene n estados.

Page 58: TALF - Otoño 2010

58

Sea z = a1a2...am una cadena de m símbolos, tal que m n, y supóngase que (q0,a1a2....ai)=qsi, donde qsi

representa el estado que alcanza

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

172

representa el estado que alcanza después de analizar los primeros ai

simbolos.

Según esto (q0,a1)=qs1, (q0,a1a2)=qs2, ..... etc.

Como la cadena z tiene m símbolos y el AFD tiene n estados distintos, y m n, entonces si el AFD M comienza a trabajar con la cadena z no puede ser

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

173

trabajar con la cadena z, no puede ser que los primeros n+1 estados que se suceden en el análisis de la cadena z (qs1,qs2 ... qsn ) sean todos distintos.

Por lo tanto, existen al menos dos enteros, llamémosles j y k, 1 j k n, tales que qsj = qsk, es decir, ( q0, a1...aj ) = qsj,( )

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

174

( q0, a1...ak ) = qsk = qsj, y ( qk, ak+1,...,am ) = qsm.

Como j k entonces la subcadena aj+1...aktiene una longitud mayor o igual que 1, y como k n entonces su longitud no puede ser mayor que n.

Page 59: TALF - Otoño 2010

59

Gráficamente, la idea se puede representar de la forma siguiente :

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

175

qo qsj =qsk

a1...aj qsm

ak+1...am

aj+1...ak

Si la cadena a1...am pertenece al lenguaje reconocido por el AFD M, entonces qsm F, y por lo tanto a1...ajak+1...am también pertenece a L(M).

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

176

En este caso, el bucle que reconoce aj+1...ak

no se realiza ninguna vez.

Pero también podría darse el caso de realizarlo i veces, en cuyo caso la cadena reconocida sería a1...aj(aj+1...ak)iak+1...am.

¿qué conclusión se puede sacar de este proceso?. Que si se tiene un AFD y una cadena z de una

longitud lo suficientemente larga que sea

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

177

aceptada por el AFD, entonces se puede localizaruna subcadena de z tal que esa subcadena sepuede repetir tantas veces como se quiera (esdecir, se puede “bombear”) obteniéndose comoresultado de este proceso nuevas cadenas quetambién serán aceptadas por el AFD.

Page 60: TALF - Otoño 2010

60

Para todo lenguaje regular L existe una constante n, dependiente únicamente de L, tal que si z es una cadena de L, y se cumple que | z | n, entonces la cadena de z se

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

178

puede descomponer como z = uvw tal que : | v | 1

| uv | n

Para todo i 0 las cadenas uviw son, todas, cadenas de L.

DemostraciónBasta con identificar

u con a1...aj,

V con a a y

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

179

V con aj+1...ak, y

w con ak+1...an.

Como j k entonces | v | = k – (j+1) + 1 = k – j 1, y

Como k n, entonces | uv | n

Este lema se aplica para demostrar que un lenguaje no es regular, es decir : si un lenguaje no cumple con el lema de

bombeo entonces se puede garantizar que

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

180

bombeo entonces se puede garantizar que no es regular,

Pero, si cumple con las condiciones del lema entonces no se puede asegurar si es o no es regular.

Page 61: TALF - Otoño 2010

61

Ejemplo : Demostrar que el lenguaje L = { anbn | n 0} no es un lenguaje regular.

Para poder comprobar si se c mplen las

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

181

Para poder comprobar si se cumplen las condiciones impuestas por el lema del bombeo, se debe localizar una cadena del lenguaje cuya longitud sea mayor que la constante del lema para este lenguaje.

Sea t esa constante. Entonces z = atbt pertenece al lenguaje y su longitud es mayor que t.

Por lo tanto z se puede escribir como z = uvw.

Pero ¿cuales son los símbolos de z que l d ?

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

182

componen la cadena v?.

Se analizan todos los casos posibles y si al menos uno de estos casos fuese posible, entonces no se podría demostrar que no se cumple el lema para esta cadena.

Si v esta compuesta solo de símbolos a, entonces las cadenas uviw, i 2 no pertenecen al lenguaje porque poseen una mayor cantidad de a’s que de b’s.

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

183

(t) (t)

a......a...abb...bu v w

Page 62: TALF - Otoño 2010

62

Si en la cadena v aparece algún símbolo b, deja de cumplirse la segunda condición, ya que entonces | uv | > t, ya que en la subcadena deberían estar al menos todos

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

184

t símbolos de a.(t) (t)

a......a...abb...bu v w

Como no hay más opciones posibles para la asignación de los símbolos a la cadena v, entonces este lenguaje no cumple con el lema del bombeo y por lo tanto no puede

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

185

ser un lenguaje regular.

Demostrar que el lenguaje L = { 0p | p es un numero primo } no es un lenguaje regular.

Este leng aje esta formado por las

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

186

Este lenguaje esta formado por las cadenas de 0’s cuya longitud es un numero primo.

Page 63: TALF - Otoño 2010

63

Sea n la constante del lema del bombeo y sea z = 0k, tal que k es un numero primo mayor que n.

Como el conj nto de números primos es

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

187

Como el conjunto de números primos es un conjunto de infinitos elementos se garantiza que ese número primo k existe, sea cual sea el valor de n.

Por lo tanto z L y si L fuese un lenguaje regular entonces deberían cumplirse las condiciones expuestas por el lema del bombeo en particular

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

188

por el lema del bombeo, en particular, que : uviw L i 0

Sea i = k + 1; la cadena uvk+1 debería pertenecer a L. Pero, | uvk+1w | = | uvkvw |

| | | k |

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

189

= | uvw | + | vk |

= k + k | v |

= k ( 1 + | v | )

Page 64: TALF - Otoño 2010

64

Es decir, | uvk+1w | no es un numero primo, puesto que es divisible por k y por (1 + | v | ).

C i l l j L

Lenguajes Regulares : Propiedades de los Lenguajes Regulares

190

Como consecuencia, el lenguaje L no es un lenguaje regular puesto que no cumple el lema del bombeo.

Los autómatas finitos se utilizan en los problemas que implican el análisis de cadenas de caracteres.

Tales problemas incluyen :

Lenguajes Regulares : Aplicaciones de las expresiones regulares y los autómatas finitos

191

problemas de búsqueda e identificación Búsqueda de la existencia de una cadena en un

fichero Reconocimiento de cadenas que satisfagan

ciertos criterios. Validación de datos de entrada de un programa.

Las expresiones regulares se pueden usar para especificar unidades léxicas presentes en un lenguaje de programación.

Los autómatas finitos asociados se usan para

Lenguajes Regulares : Aplicaciones de las expresiones regulares y los autómatas finitos

192

Los autómatas finitos asociados se usan para reconocer dichas unidades (llamadas componentes léxicos). Dicho análisis es una etapa importante en la compilación de programas.

Page 65: TALF - Otoño 2010

65

Lenguajes Regulares : Simplificación de AFD – clases de equivalencias

Sea AFD M = ( Q, , s, F, ), el procedimiento es: Definimos dos clases de equivalencia, F y Q F.

Para cada clase• Sea q un estado en la clase.

• Poner en una misma clase a todos los estados q’ que tienen transiciones “iguales” a las de q, es decir, q y q’ la misma clase si , (q’,) “cae” en la misma clase que (q, ).

193

, (q ,) cae en la misma clase que (q, ).

• Ponemos en otra clase a los que tienen transiciones “distintas” a las de q.

• Si todos los estados de la clase tienen transiciones iguales, entonces la clase no se divide y analizamos otra clase.

• Repetir hasta que ninguna clase se divida.

Ejemplo

Lenguajes Regulares : Simplificación de AFD – clases de equivalencia

q1a q2 q3

b q4

a

a

b

194

b

b

q5 q6

a

q7

a

q8b

b b

a

b aa

El AFD sería por M = ( Q, , s, F, ), con :Q = {q1,q2,q3,q4,q5,q6,q7,q8}

= { a b }

Lenguajes Regulares : Simplificación de AFD – clases de equivalencia

a b

q1 q2 q6

195

= { a, b }

s = q1

F = { q3 }

q2 q7 q3

q3 q1 q3

q4 q3 q7

q5 q8 q6

q6 q3 q7

q7 q7 q5

q8 q7 q3

Page 66: TALF - Otoño 2010

66

El AFD sería por M = ( Q, , s, F, ), con :Q = {q1,q2,q3,q4,q5,q6,q7,q8}

= { a b }

Lenguajes Regulares : Simplificación de AFD – clases de equivalencia

a b

q1 q2 q6

196

= { a, b }

s = q1

F = { q3 }

q2 q7 q3

q3 q1 q3

q4 q3 q7

q5 q8 q6

q6 q3 q7

q7 q7 q5

q8 q7 q3

Lenguajes Regulares : Simplificación de AFD – clases de equivalencias

Clases Iniciales : Clase = F = { q3 }

Clase = Q – F = {q1,q2,q4,q5,q6,q7,q8}

La Clase permanece porque solo tiene un único estado es decir no es posible dividirla en nuevas

197

estado, es decir, no es posible dividirla en nuevas clases.

La Clase se revisa si los estados caen en la misma clase.

Lenguajes Regulares : Simplificación de AFD – clases de equivalencia

a b

q1 q2

a b

q1 q5 q7

a b

198

q2

q4 q5 q6 q7 q8

a b

q2 q8

a b

q4 q6

Page 67: TALF - Otoño 2010

67

Lenguajes Regulares : Simplificación de AFD – clases de equivalencias

La Clase , da origen a 3 clases : Clase A = {q1,q5,q7}

Clase B = {q2,q8}

Clase C = {q4,q6}

199

Lenguajes Regulares : Simplificación de AFD – clases de equivalencia

a b

q1 B C

q5 B C

q7 A A

a b

La Clase A, a 2 clases : Clase α = {q1,q5}

Clase β = {q7}

La Clase B no se divide

200

a b

q2 A q8 A

a b

q4 A

q6 A

La Clase B no se divide

La Clase C no se divide

Lenguajes Regulares : Simplificación de AFD – clases de equivalencias

La Clase A, da origen a 2 clases : Clase α = {q1,q5}

a b

q1 B C

q5 B C

201

Clase β = {q7}

No hay nuevas clases

a b

q7 α β

Page 68: TALF - Otoño 2010

68

Lenguajes Regulares : Simplificación de AFD – clases de equivalencias

En resumen se obtuvieron las clases : Clase = {q3}

Clase B = {q2,q8}

Clase C = {q4,q6}

Clase α = {q1,q5}

Clase β {q }

202

Clase β = {q7}

Cada clase es un estado del AFD

La clase es el estado final.

La clase α es el estado inicial

Lenguajes Regulares : Simplificación de AFD – clases de equivalencia

a b

α B β

La función de transición basada en clases es: Clase = {q3}

Clase B = {q2,q8}

Clase C = {q4,q6}

Clase α = {q q }

203

C β

α B C

β β α

Clase α = {q1,q5}

Clase β = {q7}

El AFD minimizado queda :

Lenguajes Regulares : Simplificación de AFD – clases de equivalencia

α a B

a

b

204

b

C

βa

b

b

a

b

a

Page 69: TALF - Otoño 2010

69

Resumen

Los pasos claves para desarrollar un programa computacional, aplicando Teoría de Autómatas son :

Constr ir el AFNDConstruir el AFND

Convertirlo a AFD

Simplificar el AFD

Teoría de Autómatas y Lenguajes Formales – Semestre Otoño 2009 - 205

Lenguajes Independientes del Contexto

206

Lenguajes Independientes del Contexto

Gramáticas Regulares Gramáticas Regulares y Lenguajes Regulares Gramáticas Independientes del Contexto Gramáticas Dependientes del Contexto Arboles de deri ación o de análisis ambigüedad

207

Arboles de derivación o de análisis y ambigüedad. Simplificación de gramáticas independientes del

contexto. Propiedades de los lenguajes independientes del

contexto Autómata de pila Autómata de pila y lenguajes independientes del

contexto. Forma normal de Greibach

Page 70: TALF - Otoño 2010

70

Gramáticas Regulares

Las expresiones regulares y loas autómatas finitos nos proporcionan dos medios para especificar o definir lenguajes

208

lenguajes.

Las expresiones nos proporcionan una plantilla o patrón para las cadenas del lenguaje.

Gramáticas Regulares

Todas las cadenas se corresponden con un patrón en particular y dichas cadenas serán las únicas que formarán dicho lenguaje.

Un autómata finito especifica un lenguaje

209

Un autómata finito especifica un lenguaje como el conjunto de todas las cadenas que lo hacen pasar del estado inicial a uno de sus estados de aceptación.

Gramáticas Regulares

También se podría interpretar un autómata como un generador de cadenas del lenguaje.

Un símbolo se genera al recorrer el camino etiquetado con dicho símbolo y que parte del

210

etiquetado con dicho símbolo y que parte del estado actual al siguiente.

Se empieza con la cadena vacía y se obtiene una cadena del lenguaje cuando el recorrido llega a un estado de aceptación.

Page 71: TALF - Otoño 2010

71

Gramáticas Regulares

Ejemplo : consideremos el autómata que acepta el lenguaje regular a(a*b*)b. a

211

q1

q3

q2a

q4

q5

b

b

b

Gramáticas Regulares

Imaginemos que se comienza en el estado inicial y se atraviesa el diagrama de alguna forma.

C d i d t d

212

Cuando un camino va de un estado a otro, la “salida” es el símbolo que etiqueta dicho camino.

Gramáticas Regulares

Observe que todas las cadenas del lenguaje estarán formadas por una a seguida de alguna “parte final”.

Si hacemos que E represente la parte final, lo

213

Si hacemos que E represente la parte final, lo dicho se puede representar simbólicamente mediante SaE.

La flecha se puede interpretar como “produce”, “puede ser”, “se descompone de”.

Page 72: TALF - Otoño 2010

72

Gramáticas Regulares

La parte final de una cadena estará formada por una de las dos listas de aes o bes.

Por tanto, para indicar las múltiples posibilidades que hay para E podemos

ibi E A E B

214

escribir E A y E B. La lista de aes se puede expresar como A

aA junto con A b para indicar que una cadena de aes va seguida de una b.

La lista de bes se puede expresar como B bB junto con B b para indicar que una cadena de bes va seguida de una b.

Gramáticas Regulares

En resumen, tendremos las siguientes expresiones : S aE

E A

215

E B

A aA

A b

B bB

B b

Gramáticas Regulares

Estas expresiones pueden ser consideradas como reglas de sustitución para la generación de cadenas

216

cadenas.

El símbolo que se encuentra a la izquierda de la flecha se puede sustituir por la cadena de la derecha.

Page 73: TALF - Otoño 2010

73

Gramáticas Regulares

Finalmente introduciremos el símbolo | que será interpretado como “o”.

La colección para ejemplo se puede escribir como :

217

escribir como :1. S aE2. E A | B3. A aA | b4. B bB | b

Gramáticas Regulares

La cadena a3b se puede generar a partir de S aplicando primero la regla 1 para obtener aE.

Entonces aplicando la regla 2 se obtiene aA

Aplicando la regla 3 se obtiene aaA y aaaA

218

Aplicando la regla 3 se obtiene aaA y aaaA.

Finalmente, se puede aplicar la segunda parte de la regla 3 para obtener aaab.

Gramáticas Regulares

Podremos escribir una descripción del proceso de generación como :S aE aA aaA aaaA aaab

D d l fl h i t t

219

Donde la flecha se interpreta como “deriva”, “produce” o “genera”.

Usaremos la notación E * w se deriva a partir de s en 0 o más etapas.

Page 74: TALF - Otoño 2010

74

Gramáticas Regulares

Obsérvese que en este modelo hemos introducido una colección de nuevos símbolos para representar las porciones de cadena que no han sido generadas.C d l d h id l t t

220

Cuando las cadenas han sido completamente generadas, estarán formadas en su totalidad por símbolos del alfabeto , pero antes de llegar a esto se obtendrán cadenas formadas por símbolos del alfabeto y por nuevos símbolos.

Gramáticas Regulares

Los nuevos símbolos se llaman no terminales, para indicar que se deben ser sustituidos por símbolos del alfabeto antes de que la cadena haya sido

221

antes de que la cadena haya sido totalmente generada.

Por otro lado, los símbolos del alfabeto se llaman terminales, para indicar que no es posible que sean sustituidos.

Gramáticas Regulares

Obsérvese que el símbolo usado para representar a una cadena que no ha comenzado a generarse debe ser necesariamente un no terminal.

222

Observemos que hemos generado la cadena de izquierda a derecha - en las cadenas de las etapas intermedias por las que se pasa al aplciar la reglas, los no terminales deben aparecer solamente en el extremo derecho.

Page 75: TALF - Otoño 2010

75

Gramáticas Regulares

Una Gramática Regular G es una 4-tupla G = (,N,S,P), donde : es un alfabeto, N es una colección de símbolos no terminales,

S t i l ll d í b l i i i l

223

S es un no terminal llamado símbolo inicial, y P es una colección de reglas de sustitución

llamadas producciones, y que son de la forma Aw, donde A N y w es una cadena sobre N que satisface lo siguiente : w contiene un no terminal como máximo si w contiene un no terminal, entonces es el símbolo que

está en el extremo derecho de w.

Gramáticas regulares

El lenguaje generado por la gramática regular G se denota L(G).

Si se llega al acuerdo de escribir los no

224

terminales con letras mayúsculas y los terminales con letras minúsculas y además se conviene que S se use como símbolo inicial, entonces una gramática regular puede ser completamente especificada por medio de sus producciones.

Gramáticas Regulares y Lenguajes Regulares

Supongamos que L es un lenguaje regular. Se puede obtener una gramática que genere L por medio de un AFD M = ( Q s F ) para el cual

225

un AFD M = ( Q, , s, F, ) para el cual L = L(M).

Page 76: TALF - Otoño 2010

76

Gramáticas Regulares y Lenguajes Regulares

Podremos construir a partir de un AFD construir una gramática asociada, que cumple que L(G) = L(M)

226

Gramáticas Regulares y Lenguajes Regulares

Definimos G = ( N, , S, P ) por : N = Q

= S

227

S = s

P = { q ap | (q,a)=p } { q | q F }

Gramáticas Regulares y Lenguajes Regulares

Ejemplo, dado el lenguaje a*b, aceptado por el autómata siguiente :

228

q1 q2b

q3a,b

a,ba

Page 77: TALF - Otoño 2010

77

Gramáticas Regulares y Lenguajes Regulares

Autómata Finito DeterministaQ = { q1, q2, q3 }

= { a, b }

S

229

S = q1

F = { q2 }

a b

q1 q1 q2

q2 q3 q3

q3 q3 q3

Gramáticas Regulares y Lenguajes Regulares

GramáticaN = { q1, q2, q3 }

= { a, b }

S

230

S = q1

P q1 aq1 | bq2

q2 aq3 | bq3 | q3 aq3 | bq3

Gramáticas Regulares y Lenguajes Regulares

Análogamente podremos a partir de una Gramática G, construir un AFND M que cumpla que L(M) = L(G)

231

Page 78: TALF - Otoño 2010

78

Gramáticas Regulares y Lenguajes Regulares

Sea G = ( N, , S, P ) una gramática regular; se define M = ( Q, , s, F, ) mediante :

Q N { ƒ } donde ƒ es n símbolo

232

Q = N { ƒ }, donde ƒ es un símbolo nuevo

s = S

F = { ƒ }

Gramáticas Regulares y Lenguajes Regulares

se construye a partir de las producciones de P : Si A 1...nB es una producción de P con A

y B como no terminales, entonces se añadirán

233

a Q los nuevos estados q1,q2,...,qn-1 y las transformaciones siguientes : (A,1...n) = (q1, 2..n) = (qn-1,n) = B

Gramáticas Regulares y Lenguajes Regulares

Si A 1...n es una producción de P entonces se añadirán a Q los nuevos estados q1,q2,...,qn-1 y a las transformaciones siguientes : (A 1 ) = (q1 2 ) = (q 1 ) = ƒ

234

(A,1...n) = (q1, 2..n) = (qn-1,n) = ƒ

Page 79: TALF - Otoño 2010

79

Gramáticas Regulares y Lenguajes Regulares

Por ejemplo, la gramática regular S aB | bA | A abaS

B babS

235

Se tiene que, se inician : Q = { S, A, B, ƒ }

s = S

F = { ƒ }

Gramáticas Regulares y Lenguajes Regulares

A partir de la producciones de S : S aB, se tiene que (S,a) = B

S bA, se tiene que (S,b) = A

S , se tiene que (S,) = ƒ

236

, q ( , ) ƒ

A partir de las producción de A : A abaS, se tiene que :

( A, aba ) = ( q1, ba ) = ( q2,a ) = S

B babS ( B, bab ) = ( q3, ab ) = ( q4,b ) = S

Gramáticas Regulares y Lenguajes Regulares

El diagrama de transición queda :

a b S B A ƒ

A q

237

A q1

B q3

ƒ

q1 q2

q2 S

q3 q4

q4 S

Page 80: TALF - Otoño 2010

80

Gramáticas Regulares y Lenguajes Regulares

El AFND es el siguiente :

S q3Ba b q4a

b

b

238

ƒ

q1

Aa

b

q2

a

b

Gramáticas Regulares y Lenguajes Regulares

Teorema L es regular si y sólo si es generado por

una gramática regular.

239

Gramáticas Regulares y Lenguajes Regulares

Por lo tanto, tenemos 3 métodos generales de especificación de lenguajes :

E presiones reg lares

240

Expresiones regulares

Autómatas finitos

Gramáticas regulares

Page 81: TALF - Otoño 2010

81

Gramáticas Independientes del Contexto

En las gramáticas regulares se requiere que el lado derecho de todas las producciones contenga al menos un no terminal.

Es más, cuando un no terminal está

241

Es más, cuando un no terminal está presente, debe aparecer al final de la cadena ( final izquierdo o final derecho, dependiendo de si es una gramática regular por la izquierda o por la derecha)

Gramáticas Independientes del Contexto

Para expresar esto formalmente, se requiere que las producciones satisfagan P N x * ( N ).

O l d l l id d l

242

O en el caso de la regularidad por la izquierda P N x ( N ) *.

Gramáticas Independientes del Contexto

Supongamos que se permite que P N x ( N )*, de forma que las producciones puedan tener cero, uno o más terminales que aparezcan en

243

más terminales que aparezcan en cualquier lugar del lado derecho de las mismas.

Page 82: TALF - Otoño 2010

82

Gramáticas Independientes del Contexto

Ejemplo : la gramática dada por : S aB | bA A a | aS | bAA B b | bS | aBB

244

Es una gramática de este tipo. Obsérvese que, esta gramática no es una gramática regular.

Reconoce a L = { las cadenas de a y b que tiene el mismo numero de a´s que de b´s }

Gramáticas Independientes del Contexto

Una gramática independiente del contexto (GIC) es una 4-tupla G=(N,,S,P), donde : N es una colección finita de no terminales,

es un alfabeto (también conocido como conjunto

245

( jde terminales),

S es un no terminal determinado que se llama símbolo inicial, y

P N x ( N )* es un conjunto de producciones

Gramáticas Independientes del Contexto

Dado que toda gramática regular es una GIC, se tiene que todo lenguaje regular es un Lenguaje Independiente del Contexto (LIC)

246

del Contexto (LIC).

Page 83: TALF - Otoño 2010

83

Gramáticas Independientes del Contexto

Ejemplo : consideremos la gramática independiente del contexto, dada por :

S aSb |

El LIC generado es { anbn | n 0 } el cual

247

El LIC generado es { anbn | n 0 }, el cual ya sabemos que no es regular.

Gramáticas Independientes del Contexto

Por lo tanto, hay lenguajes independientes del contexto que no son lenguajes regulares.

E d i l j t d l l j

248

Es decir, el conjunto de los lenguajes independientes del contexto contiene al conjunto de los lenguajes regulares.

Gramáticas Dependientes del Contexto

El término independiente del contexto, cuando se aplica a gramáticas, sugiere que debiera habar gramáticas que dependieran del contexto.

249

Para entender esto introduciremos un nuevo tipo de gramáticas que nace de la generalización de la parte izquierda de las producciones a las cuales denominaremos gramáticas de estructura de frase.

Page 84: TALF - Otoño 2010

84

Una gramáticas de estructura de frasees aquella en la que los lados izquierdos de las reglas de producción pueden estar formados por cualquier

Gramáticas Dependientes del Contexto

250

pueden estar formados por cualquier cadena vacía sobre N , las cuales contienen algún no terminal.

Por lo tanto, para una gramática de estructura de frase, la colección de reglas de producción P satisface :

P (N )* N (N )* (N )*

Gramáticas Dependientes del Contexto

251

P (N)* N (N)* x (N)*

Las gramáticas de estructura de frase se conocen como de tipo 0 o gramáticas no restringidas.

Gramáticas Dependientes del Contexto

Las gramáticas dependientes del contexto son gramáticas de estructura de frase, en las cuales las producciones se restringen a tal que || ||

252

se restringen a , tal que || ||.

Hay una forma normal para estas gramáticas, en la cual toda producción es de la forma 1 A 21 2 con .

Page 85: TALF - Otoño 2010

85

Gramáticas Dependientes del Contexto

Tales producciones permiten que el no terminal A sea reemplazado por la cadena , sólo cuando A aparezca en el “contexto” de y

253

contexto de 1 y 2.

Árboles de derivación o de análisis y ambigüedad

Cuando una cadena se deriva mediante una gramática independiente del contexto, el símbolo inicial es sustituido por alguna cadena.

254

Los no terminales de esta cadena son sustituidos uno tras otros por otra cadena, y así sucesivamente, hasta que se llega a una cadena formada sólo por símbolos terminales.

Árboles de derivación o de análisis y ambigüedad

A veces, es útil realizar un gráfico de la derivación, que indique de qué manera ha contribuido cada no terminal a formar la cadena final de símbolos

255

formar la cadena final de símbolos terminales.

Tal gráfico tiene forma de árbol y se llama árbol de derivación (o árbol de análisis).

Page 86: TALF - Otoño 2010

86

Arboles de derivación o de análisis y ambigüedad

Un árbol de derivación para una derivación dada se construye creando un nodo raíz que se etiqueta con el símbolo inicial

256

símbolo inicial.

El nodo raíz tiene unos nodos hijos para cada símbolo que aparezca en el lado derecho de la producción usada para reemplazar el símbolo inicial.

Arboles de derivación o de análisis y ambigüedad

Todo nodo etiquetado con un no terminal también tiene unos nodos hijos etiquetados con los símbolos del lado derecho de la producción usada para

257

derecho de la producción usada para sustituir ese no terminal.

Los nodos que no tienen hijos deben ser etiquetados con símbolos terminales.

Arboles de derivación o de análisis y ambigüedad

Consideremos la gramática independiente del contexto

S AB A aA | a

258

B bB | b

La cadena aabbb puede ser derivada mediante : S AB AbB AbbB Abbb aAbbb

aabbb

Page 87: TALF - Otoño 2010

87

Arboles de derivación o de análisis y ambigüedad

El árbol de derivación para esta derivación es:

S

259

B

a

A

A b

b

b

B

B

a

Arboles de derivación o de análisis y ambigüedad

Obsérvese que hay muchas derivaciones posibles para la cadena aabbb, las cuales también tienen el mismo árbol de derivación.

260

Por ejemplo : S AB aAB aaB aabB aabbB

aabbb S AB aAB aAbB aAbbB aAbbb aabbb

Árboles de derivación o de análisis y ambigüedad

Para esta cadena y esta gramática, todas las derivaciones de aabbb tienen el mismo árbol de derivación.

Si b t ti

261

Sin embargo, esto no tiene porque cumplirse siempre.

Page 88: TALF - Otoño 2010

88

Arboles de derivación o de análisis y ambigüedad

Ejemplo : considérese la gramática : S SbS | ScS | a

Podemos derivar la cadena abaca de dos formas distintas :

262

formas distintas :1. S SbS SbScS SbSca Sbaca abaca

2. S ScS SbScS abScS abacS abaca

Árboles de derivación o de análisis y ambigüedad

El árbol de derivación para la derivación 1:

S

263

S

a

S b

S

a

Sc

a

Árboles de derivación o de análisis y ambigüedad

El árbol de derivación para la derivación 2:

S

264

S

b

S c

S

a

S a

a

Page 89: TALF - Otoño 2010

89

Árboles de derivación o de análisis y ambigüedad

Obsérvese que los 2 árboles son distintos, aunque las cadenas producidas son las misma.

L d d i d d l

265

La cadena derivada corresponde a los nodos hojas y se llama producto del árbol de derivación.

Árboles de derivación o de análisis y ambigüedad

Una gramática se dice ambigua si hay dos o más árboles de derivación distintos para la misma cadena.

U áti l l t d

266

Una gramática en la cual, para toda cadena w, todas las derivaciones de w tienen el mismo árbol de derivación, es no ambigua.

Árboles de derivación o de análisis y ambigüedad

La ambigüedad puede ser un problema para ciertos lenguajes en los que su significado depende, en parte, de su estructura como ocurre con los

267

estructura como ocurre con los lenguajes naturales y los lenguajes de programación.

Page 90: TALF - Otoño 2010

90

Árboles de derivación o de análisis y ambigüedad

Ejemplo : “Juan vio a un hombre con un telescopio”,

es una sentencia ambigua, debido a que “con un telescopio” puede describir a :

268

con un telescopio , puede describir a : Al hombre que vio Juan, o

A la técnica que Juan empleó para ver al hombre.

Árboles de derivación o de análisis y ambigüedad

Sea la siguiente gramática de asignaciones de expresiones :A := E a | b | c

269

a | b | cE E + E | E * E | (E) |

Los no-terminales son : A, y E Los terminales son : :=, +, *, ( , ), a, b, c

Árboles de derivación o de análisis y ambigüedad

Si tomamos la cadena a := b + c * a, vemos que existen 2 árboles de derivación para ella.

270

Page 91: TALF - Otoño 2010

91

Árboles de derivación o de análisis y ambigüedad

El árbol de derivación para la derivación 1: A

E :=

271

aE

E

E+

* E

b

c a

Árboles de derivación o de análisis y ambigüedad

El árbol de derivación para la derivación 2: A

E :=

272

aE

E

E *

+ E

a

b c

Árboles de derivación o de análisis y ambigüedad

Si pretendemos determinar como se calcula el valor de la derecha del operador de asignación (el símbolo :=), se obtienen dos resultados posibles :

273

p b + ( c * a ) ( b + c ) * a

Resultados que en general no son iguales.

Page 92: TALF - Otoño 2010

92

Árboles de derivación o de análisis y ambigüedad

En algunos casos, si la gramática es ambigua, se puede encontrar otra gramática que produzca el mismo lenguaje pero que no sea ambigua

274

lenguaje pero que no sea ambigua.

Árboles de derivación o de análisis y ambigüedad

Por ejemplo, la gramática : S A | B A a B a

275

Es ambigua porque tiene 2 árboles de derivación para la cadena a.

Una gramática equivalente que no es ambigua es :

S a

Árboles de derivación o de análisis y ambigüedad

Si todas las gramáticas independientes del contexto para un lenguaje son ambiguas, se dice que el lenguaje es un lenguaje independiente del contexto

276

lenguaje independiente del contexto inherentemente ambigua.

Page 93: TALF - Otoño 2010

93

Árboles de derivación o de análisis y ambigüedad

Ejemplo : el lenguaje L = { aibjck | i=j o j=k } es inherentemente ambiguo.El lenguaje tendrá una clase de derivación

para los casos en que i=j

277

para los casos en que i=j,

Y otra para los casos en que j=k. Cuando i = j = k, existirán 2 derivaciones.

Árboles de derivación o de análisis y ambigüedad

Derivación por la izquierda Es aquella en la cual el no terminal que se

expande es el del extremo izquierdo.

Ejemplo : para la gramática

278

Ejemplo : para la gramática S SbS | ScS | a

Una derivación por la izquierda de abaca será : S ScS SbScS abScS abacS abaca

Árboles de derivación o de análisis y ambigüedad

Derivación por la derechaEs aquella en la cual el no terminal que se

expande es el del extremo derecho.

Ejemplo : para la gramática

279

Ejemplo : para la gramática S SbS | ScS | a

Una derivación por la derecha de abaca será : S ScS Sca SbSca Sbaca abaca

Page 94: TALF - Otoño 2010

94

Árboles de derivación o de análisis y ambigüedad

Obsérvese que para la gramática anterior, la siguiente :

S SbS abS abScS abacS abaca

Es una derivación por la izquierda distinta de la

280

Es una derivación por la izquierda distinta de la precedente.

Árboles de derivación o de análisis y ambigüedad

Podemos señalar que, una gramática ambigua se caracteriza por tener dos (o más) derivaciones por la izquierda para la misma cadena

281

la misma cadena.

Simplificación de Gramáticas Independientes del Contexto

La definición vista hasta este momento de Gramática independiente del contexto proporciona escaso control sobre la clase de producciones

282

sobre la clase de producciones permitidas.

Page 95: TALF - Otoño 2010

95

Simplificación de Gramáticas Independientes del Contexto

Esto nos permite construir una gramática en la que los árboles de derivación son : Tupidos

S abcdefgS | abcdefg

283

Profundos S A

A B

B C

C D

D a | A

Simplificación de Gramáticas Independientes del Contexto

Parece razonable imponer algunas restricciones a las producciones de manera que el árbol de derivación resultante no sea necesariamente

284

resultante no sea necesariamente complejo o inútilmente sencillo.

Simplificación de Gramáticas Independientes del Contexto

Eliminación de producciones y símbolos inútiles.Ejemplo :

S Aa | B | D

285

S Aa | B | D

B b

A aA | bA | B

C abd

Page 96: TALF - Otoño 2010

96

Simplificación de Gramáticas Independientes del Contexto

Obsérvese que :C nunca formará parte de una derivación

que parta del símbolo inicial. Por lo tanto el no-terminal C y la producción

286

Por lo tanto, el no-terminal C y la producción Cabd son inútiles.

Simplificación de Gramáticas Independientes del Contexto

D se obtiene a partir de S, pero nunca deriva una cadena de símbolos. Por lo tanto, D también es inútil, aunque por

una razón distinta.

287

Simplificación de Gramáticas Independientes del Contexto

B es, en cierto modo, redundante, ya que deriva únicamente un símbolo terminal. Por lo tanto, las derivaciones :

S B b, puede reducirse a S b

288

A B b, puede reducirse a A b

Eliminándose B.

Page 97: TALF - Otoño 2010

97

Simplificación de Gramáticas Independientes del Contexto

Las simplificaciones que revisaremos son las siguientes :Eliminación de no-terminales que no

deriven en cadenas terminales.

289

Eliminación de terminales y no-terminales que no aparezcan en las cadenas que deriven a partir de S.

Eliminación de producciones Eliminación de producciones unitarias.

Simplificación de Gramáticas Independientes del Contexto

Algoritmo para la eliminación de no-terminales que

no deriven cadenas de terminales.

290

Sea G = ( N, , S, P ) una gramática independiente del contexto.

Transformaremos G en G’ = ( N’, , S, P’ ) de forma que L(G) = L(G’)

Simplificación de Gramáticas Independientes del Contexto

1. Inicializar N’ con todos los no-terminales de A para los que A w, es una producción de G, con w *.

2. Inicializa P’ con todas las producciones A l l A N’ *

291

Aw para las cuales A N’ y w *.3. Repetir hasta que no se puedan añadir

más no terminales a N’ Añadir a N’ todos los no-terminales A para los

cuales Aw , para algún w (N’ )* que sea una producción de P y añadirla a P’.

Page 98: TALF - Otoño 2010

98

Simplificación de Gramáticas Independientes del Contexto

Ejemplo : S Aa | B | D

B b

A aA | bA | B

292

| |

C abd

Simplificación de Gramáticas Independientes del Contexto

Paso 1 N’ = { B, C }

B b

C abd

293

Paso 2 P’ = { B b, C abd }

Simplificación de Gramáticas Independientes del Contexto

Paso 3 S B

Se agrega S a N’ y S B a P’

A B Se agrega A a N’ y A B a P’

294

g g y

S Aa Se agrega S Aa a P’

A aA Se agrega A aA a P’

A bA Se agrega A bA a P’

Page 99: TALF - Otoño 2010

99

Simplificación de Gramáticas Independientes del Contexto

La gramática sin no-terminales que no derivan cadenas de no terminales queda : N’ = { S, A, B, C }

P’ = { S Aa | B

295

S Aa | B,

A aA | bA | B,

B b,

C abd }

Se ha eliminado el no-terminal D y la producción S D.

Simplificación de Gramáticas Independientes del Contexto

Algoritmo para la eliminación de aquellos terminales y no-

terminales que no aparezcan en las cadenas que deriven a partir de S.

296

Sea G = ( N, , S, P ) una gramática independiente del contexto.

Transformaremos G en G’ = ( N’, ’, S, P’ ) de forma que L(G) = L(G’)

Simplificación de Gramáticas Independientes del Contexto

1. Inicializar N’ de forma que contenga el símbolo inicial S, e inicializar P’ y ’ en .

2. Repetir hasta que no se puedan añadir nuevas producciones.

297

nuevas producciones. Para A N’, si A w es una producción de

P, entonces : Agregar A w a P’

no-terminal B de w, añadir B a N’.

terminal de w, añadir a ’.

Page 100: TALF - Otoño 2010

100

Simplificación de Gramáticas Independientes del Contexto

Ejemplo : S Aa | B

B b

A aA | bA | B

298

| |

C abd

Simplificación de Gramáticas Independientes del Contexto

Paso 1 N’ = { S }

’ = P’ =

299

Simplificación de Gramáticas Independientes del Contexto

Paso 2 – ciclo 1 S N’. Se tienen las producciones :

S Aa Se agrega S Aa en P’ Se agrega A en N’

Se agrega a en ’

300

Se agrega a en S B

Se agrega S B en P’ Se agrega B en N’

N’ = { S, A, B } ’ = { a } P’ = { S Aa | B }

Page 101: TALF - Otoño 2010

101

Simplificación de Gramáticas Independientes del Contexto

Paso 2 – ciclo 2 A N’. Se tienen las producciones :

A aA Se agrega A aA en P’

A bASe agrega A bA en P’

301

Se agrega A bA en P Se agrega b en ’

A B Se agrega A B en P’

N’ = { S, A, B } ’ = { a,b } P’ = { S aA | B, A aA | bA | B }

Simplificación de Gramáticas Independientes del Contexto

Paso 2 – ciclo 3 B N’. Se tienen las producciones :

B b

Se agrega B b en P’

302

N’ = { S, A, B }

’ = { a,b }

P’ = { S aA | B, A aA | bA | B, B b }

Simplificación de Gramáticas Independientes del Contexto

La gramática sin los terminales y no-terminales que no aparezcan en las cadenas que deriven a partir de S, queda : N’ = { S, A, B } ’ = { a, b }

303

P’ = { S Aa | B, A aA | bA | B, B b }

Se ha eliminado el no-terminal C, el terminal d y la producción C abd.

Page 102: TALF - Otoño 2010

102

Simplificación de Gramáticas Independientes del Contexto

Producciones .Si L(G) entonces todas las

producciones pueden ser eliminadas.

En el caso que L(G) se puede aplicar

304

En el caso que L(G), se puede aplicar el mismo algoritmo, y posteriormente agregar la producción S .

Simplificación de Gramáticas Independientes del Contexto

Producciones .Para eliminar las producciones , es

necesario identificar los no-terminales anulables

305

anulables.

Diremos que A es un no-terminal anulable si A * .

Simplificación de Gramáticas Independientes del Contexto

AlgoritmoPara identificar el conjunto , de todos los

no-terminales anulables de una gramática independiente del contexto G = (N S P)

306

independiente del contexto G (N, , S, P)

Page 103: TALF - Otoño 2010

103

Simplificación de Gramáticas Independientes del Contexto

1. Inicializar con todos los no-terminales A para los cuales existe una producción , A .

2. Repetir hasta que no se añadan más no-

307

2. Repetir hasta que no se añadan más noterminales a : Si B w para algún w N* y todos los

símbolos de w están en , añadir B a .

Simplificación de Gramáticas Independientes del Contexto

AlgoritmoPara crear el nuevo conjunto de

producciones P’, sin producciones

308

Simplificación de Gramáticas Independientes del Contexto

Si B X1X2...Xn es una producción de P, entonces en P’ introduciremos todas las producciones de la forma B Y1Y2..Yn, donde las Yi satisfagan :

309

i

Yi = Xi si Xi no es anulable

Yi = Xi o si Xi es anulable

Yi no es para todo i (es decir, no se introduce en P’ ninguna producción de la forma B .

Page 104: TALF - Otoño 2010

104

Simplificación de Gramáticas Independientes del Contexto

Ejemplo :Sea la gramática G, con las producciones :

S aA

A aA |

310

A aA |

Simplificación de Gramáticas Independientes del Contexto

Etapa 1 : no-terminales anulablesPaso 1 :

= { A }, dado que A Paso 2 :

311

Para S aA aA N*. Por lo tanto S no se agrega a .

Se tiene que el único no-terminal anulable es A.

Simplificación de Gramáticas Independientes del Contexto

Etapa 2 : determinación de P’Para S aA, se tiene que :

X1 = a, no es anulable X2 = A, es anulable

312

2

Conforme el método : Y1 siempre será a, Y2 puede ser reemplazado por el mismo X2 o

por . Por ello se generan las producciones : S a ( para el caso de Y2 = ), y S aA ( para el caso de Y2 = X2 = A )

Page 105: TALF - Otoño 2010

105

Simplificación de Gramáticas Independientes del Contexto

Etapa 2 : determinación de P’Para A aA, se tiene que :

X1 = a, no es anulable X2 = A, es anulable

313

2

Conforme el método : Y1 siempre será a, Y2 puede ser reemplazado por el mismo X2 o

por . Por ello se generan las producciones : A a ( para el caso de Y2 = ), y A aA ( para el caso de Y2 = X2 = A )

Simplificación de Gramáticas Independientes del Contexto

La gramática sin producciones queda : P’ = {

S aA | a,

A aA | a }

314

Se ha eliminado la producción A .

Simplificación de Gramáticas Independientes del Contexto

Producciones Unitarias. Las producciones de la forma A B,

donde A y B son no-terminales, se llaman producciones unitarias o no generativas

315

producciones unitarias o no generativas.

La presencia de producciones unitarias no indica, necesariamente, que un símbolo es inútil.

Page 106: TALF - Otoño 2010

106

Simplificación de Gramáticas Independientes del Contexto

Conjunto UnitarioDefiniremos el conjunto UNITARIO de un

no-terminal A, de la siguiente manera : Unitario(A) = { B N | A * B usando

316

Unitario(A) = { B N | A B usando solamente producciones unitarias }

Obsérvese que A Unitario(A) puesto que A * A mediante 0 producciones.

Simplificación de Gramáticas Independientes del Contexto

AlgoritmoSea una gramática independiente del

contexto G = (N, , S, P), se construirá una gramática equivalente G’ = ( N S P’) en

317

gramática equivalente G ( N, , S, P ) en la que P’ no contenga producciones equivalentes.

Simplificación de Gramáticas Independientes del Contexto

1. Inicializar P’ de forma que contenga todos los elementos de P.

2. A N, obtener el conjunto Unitario(A).

3 A para el cual Unitario(A) { A }

318

3. A para el cual Unitario(A) { A } B Unitario( A )

producción no unitaria B w de P

añadir A w a P’

4. Eliminar todas las producciones unitarias que haya en P’.

Page 107: TALF - Otoño 2010

107

Simplificación de Gramáticas Independientes del Contexto

Ejemplo :Sea la gramática G, con las producciones :

S A | Aa

A B

319

A B

B C | b

C D | ab

D b

Simplificación de Gramáticas Independientes del Contexto

Paso 1 : se inicializa PP = {

S A | Aa

A B

320

A B

B C | b

C D | ab

D b }

Simplificación de Gramáticas Independientes del Contexto

Paso 2 : se calculan los conjuntos UNITARIO Unitario( S ) = { S, A, B, C, D }

S pertenece por definición S A, entonces A también pertenece S A B entonces B también pertenece

321

S A B, entonces B también pertenece S A B C, entonces C también pertenece S A B C D, entonces D también pertenece

Unitario( A ) = { A, B, C, D } A pertenece por definición A B, entonces B también pertenece A B C, entonces C también pertenece A B C D, entonces D también pertenece

Page 108: TALF - Otoño 2010

108

Simplificación de Gramáticas Independientes del Contexto

Paso 2 : se calculan los conjuntos UNITARIO Unitario( B ) = { B, C, D }

B pertenece por definición

B C, entonces C también pertenece

322

B C D, entonces D también pertenece

Unitario( C ) = { C, D } C pertenece por definición

C D, entonces D también pertenece

Unitario( D ) = { D } D pertenece por definición

Simplificación de Gramáticas Independientes del Contexto

Paso 3 : ciclo con no-terminales Unitario( S ) { S }

Para no-terminal S, no se hace nada Para no-terminal A

No tiene producciones no unitarias, no se hace nada

323

o e e p oducc o es o u a as, o se ace ada

Para no-terminal B Para la producción no unitaria B b

Se agrega S b a P’

Para no terminal C Para la producción no unitaria C ab

Se agrega S ab a P’

Para no terminal D Para la producción no unitaria D b

Se agrega S b a P’

Simplificación de Gramáticas Independientes del Contexto

Paso 3 : ciclo con no-terminales Unitario( A ) { A }

Para no-terminal A, no se hace nada Para no-terminal B

Para la producción no unitaria B b

324

a a a p oducc ó o u ta a b Se agrega A b a P’

Para no terminal C Para la producción no unitaria C ab

Se agrega A ab a P’

Para no terminal D Para la producción no unitaria D b

Se agrega A b a P’

Page 109: TALF - Otoño 2010

109

Simplificación de Gramáticas Independientes del Contexto

Paso 3 : ciclo con no-terminalesUnitario( B ) { B }

Para no-terminal B, no se hace nada

Para no terminal C

325

Para no terminal C Para la producción no unitaria C ab

Se agrega B ab a P’

Para no terminal D Para la producción no unitaria D b

Se agrega B b a P’

Simplificación de Gramáticas Independientes del Contexto

Paso 3 : ciclo con no-terminalesUnitario( C ) { C }

Para no-terminal C, no se hace nada

Para no terminal D

326

Para no terminal D Para la producción no unitaria D b

Se agrega C b a P’

Simplificación de Gramáticas Independientes del Contexto

Paso 3 : ciclo con no-terminalesUnitario( D ) = { D }

No se hace nada

327

Page 110: TALF - Otoño 2010

110

Simplificación de Gramáticas Independientes del Contexto

Paso 3 : ciclo con no-terminalesSe han agregado las producciones

S b | ab

A b | ab

328

A b | ab

B b | ab

C b

Simplificación de Gramáticas Independientes del Contexto

Paso 4 : eliminar producciones unitariasSe han agregado las producciones

S A

A B

329

A B

B C

C D

Simplificación de Gramáticas Independientes del Contexto

Gramática simplificada, queda : S b | ab | Aa

A b | ab

B b | ab

330

B b | ab

C b | ab

D b

Page 111: TALF - Otoño 2010

111

Simplificación de Gramáticas Independientes del Contexto

Avram Noam Chomsky (nacidoel 7 de diciembre de 1928 enFiladelfia, EE.UU.) es profesoremérito de Lingüística en el MIT yuna de las figuras másdestacadas de la lingüística delsiglo XX. Creó la gramáticagenerativa, disciplina que situó la

331

g , p qsintaxis en el centro de lainvestigación lingüística y con laque cambió por completo laperspectiva y los programas ymétodos de investigación en elestudio del lenguaje, actividadque elevó definitivamente a lacategoría de ciencia moderna.

Simplificación de Gramáticas Independientes del Contexto

Forma Normal de ChomskySe dice que una gramática independiente

del contexto está en la forma normal de Chomsky si :

332

Chomsky si : no contiene producciones Todas la producciones son de la forma :

A a

A BC, donde BC son no terminales

Simplificación de Gramáticas Independientes del Contexto

Forma Normal de ChomskyObsérvese, que el árbol de derivación para

cualquier derivación esta bastante bien construido ya que excepto en las hojas

333

construido ya que, excepto en las hojas, ¡ el árbol es binario !

Page 112: TALF - Otoño 2010

112

Simplificación de Gramáticas Independientes del Contexto

AlgoritmoEliminar las producciones Eliminar los símbolos inútiles

Eli i l d i i útil

334

Eliminar las producciones inútiles

Simplificación de Gramáticas Independientes del Contexto

Algoritmo Si se tiene una producción de la forma A w,

donde w = X1X2...Xn. Si Xi es un símbolo terminal, llamado .

335

Sustituiremos Xi por un nuevo no terminal C y C .

Eliminar las producciones

Con este paso, todas las producciones de la forma A w, donde w es un símbolo terminal o una cadena formada solo por no terminales.

Simplificación de Gramáticas Independientes del Contexto

Algoritmo Ahora se deben eliminar las cadenas con más de

dos no terminales que se encuentren en el lado derecho de una producción.

336

Si se tiene una producción de la forma A B1B2...Bn es una producción con n 2. La reemplazaremos por n-1 producciones A B1D1

D1 B2D2

...

Dn-2 Bn-1Bn

Page 113: TALF - Otoño 2010

113

Simplificación de Gramáticas Independientes del Contexto

Ejemplo :Sea la gramática G, con las producciones :

S bA | aB

A bAA | aS | a

337

A bAA | aS | a

B aBB | bS | b

Simplificación de Gramáticas Independientes del Contexto

Paso 1 : se dejan producciones solo con no-terminalesS bA

Se añade la producción C b

338

Se añade la producción Cb b

S CbA

S aB Se añade la producción Ca a

S CaB

Simplificación de Gramáticas Independientes del Contexto

Paso 1 : se dejan producciones solo con no-terminales A bAA, queda como :

A CbAA

A aS queda como :

339

A aS, queda como : A CaS

B aBB, queda como : B CaBB

B bS, queda como : B CbS

Page 114: TALF - Otoño 2010

114

Simplificación de Gramáticas Independientes del Contexto

Paso 1 : el resultado final es : S CbA | CaB

A CbAA | CaS | a

B CaBB | CbS | b

340

B CaBB | CbS | b

Ca a

Cb b

Simplificación de Gramáticas Independientes del Contexto

Paso 2 : se dejan producciones solo con un máximo de 2 no-terminalesA CbAA, queda como :

A C D

341

A CbD1

D1 AA

B CaBB B CaD2

D2 BB

Simplificación de Gramáticas Independientes del Contexto

La gramática en forma de Chomsky queda como :

S CbA | CaB A CbD1 | CaS | a

342

D1 AA B CaD2 | CbS | b D2 BB Ca a Cb b

Page 115: TALF - Otoño 2010

115

Propiedades de los lenguajes Independientes del Contexto

Las gramáticas en Forma Normal de Chomsky nos permiten obtener la relación que existe entre la longitud de una cadena y el numero de pasos de su

343

una cadena y el numero de pasos de su derivación.

Propiedades de los lenguajes Independientes del Contexto

La relación que existe entre el numero de producciones que comprende cada etapa y la longitud de la cadena de terminales resultante sugiere que una

344

terminales resultante sugiere que una Gramática Independiente del Contexto en Forma Normal de Chomsky, genera un promedio de un terminal por cada dos producciones.

Propiedades de los lenguajes Independientes del Contexto

El conocimiento de la relación existente entre la longitud de la cadena y su derivación en una gramática independiente del contexto nos permite

345

independiente del contexto, nos permite demostrar el siguiente lema del bombeo para los lenguajes independientes del contexto.

Page 116: TALF - Otoño 2010

116

Propiedades de los lenguajes Independientes del Contexto

LemaSea L un Lenguaje Independiente del

Contexto que no contiene . Entonces existe un entero k para el cual si z L y

346

existe un entero k para el cual, si z L y |z| k, entonces z se puede escribir como z = uvwxy con las propiedades siguientes : | vwx | k

Al menos o v o x no es uviwxiy L para todo i 0.

Propiedades de los lenguajes Independientes del Contexto

Ejemplo : Sea L = {aibj | j = i2 } no es independiente del contexto.

Sea L un Lenguaje Independiente del Contexto

347

Sea L un Lenguaje Independiente del Contexto que no contiene . Entonces escribir como z = uvwxy con las propiedades siguientes : | vwx | k

Al menos o v o x no es uviwxiy L para todo i 0.

Autómata de Pila

Hemos visto que las gramáticas independientes del contexto amplían la capacidad para especificar lenguajes al incluir algunos lenguajes que no son

348

reconocidos por un autómata finito.

En esta parte veremos un tipo de Autómata que es capaz de reconocer todo lenguaje independiente del contexto.

Page 117: TALF - Otoño 2010

117

Autómata de Pila

El problema que se plantea con loa autómatas finitos es que sólo tienen capacidad para una “memoria” finita.

Lenguajes tan simples como L={anbn | n 0},

349

Lenguajes tan simples como L {a b | n 0}, necesitan guardar gran cantidad de información, dado que : Se debe verificar que todas las a’s preceden a las

b’s, y

Se de tiene que contar las a’s.

Autómata de Pila

Un autómata de pila, se comporta de manera similar a como lo hacen los autómatas finitos, es decir :

En todo momento se enc entran en n

350

En todo momento se encuentran en un estado

Y el cambio de estado depende del estado actual y de una información adicional.

Autómata de Pila

En el caso de los autómatas de pila, considera : El símbolo en que esta en ese momento

en la cima de la pila

351

en la cima de la pila.

Además de cambiar el estado, también cambia la cima de la pila.

Page 118: TALF - Otoño 2010

118

Autómata de Pila

Un autómata de pila no determinista (ADPND) es una 7-tupla, M=(Q,,,,s,F,z), donde : Q : es un conjunto finito de estados l lf b t d l t d

352

es el alfabeto de la entrada es un alfabeto llamado alfabeto de la pila es una regla de transición s Q es el estado inicial F Q es el conjunto de estados de aceptación z es el símbolo inicial de la pila.

Autómata de Pila

La regla de transición para obtener : el siguiente estado, y

la acción a realizar en la pila,

debe conocer :

353

debe conocer : el estado actual

el símbolo de entrada actual, y

la cima actual de la pila

Autómata de Pila

Por ello la regla de transición se define por medio de ternas de la forma (q,,), donde : q Q

{ }, y

354

{ } y

El resultado de aplicar a dicha terna, es una colección de pares (p,w), donde : p Q

w *

Page 119: TALF - Otoño 2010

119

Autómata de Pila

Ejemplo :Q = { q1, q2, q3, q4, q5 }

= { a,b }

{ A B }

355

= { A, B }

z = A

F = { q4 }

s = q1

Autómata de Pila

(a,A) (b,A) (,A) (a,B) (b,B) (,B)

q1

(q2,BA),

(q4 A)(q4,)

356

(q4,A)

q2 (q2,BB) (q3,)

q3 (q4,A) (q3,)

Autómata de Pila

El Autómata anterior reconoce el lenguaje L = { anbn | n 0 } { a }

357

Page 120: TALF - Otoño 2010

120

Autómata de Pila

Obsérvese que no hay transiciones para todas las ternas posibles de estado, símbolo de estado y símbolo de pila

358

pila.

Autómata de Pila

Por lo tanto, si el ADPND pasa a un estado para el cual no se especifica un estado siguiente y una acción de la pila para los símbolos actuales de la pila y

359

para los símbolos actuales de la pila y la entrada, el ADPND no puede volver a realizar ningún movimiento.

En otras palabras el ADPND no puede realizar ningún movimiento.

Autómata de Pila

En otras palabras el ADPND no puede realizar ningún movimiento.

360

Page 121: TALF - Otoño 2010

121

Autómata de Pila

Durante el procesamiento de una cadena, se pueden describir las sucesivas configuraciones por las que pasa el ADPND en función de su

361

pasa el ADPND en función de su estado actual, de los contenidos de la pila y de la entrada leída.

Autómata de Pila

La terna (q,w,u), donde : q es el estado actual

w es la cadena restante, y

l t id d l il

362

u el contenido de la pila

Se llama descripción instantánea del autómata.

Autómata de Pila

Esta descripción instantánea, describe la configuración del autómata en un instante en particular.

I di i i t d

363

Indicaremos un movimiento de una configuración a otra situando el símbolo

entre dos descripciones instantáneas. (q1,aw,BX) (q2,w,YX)

Page 122: TALF - Otoño 2010

122

Autómatas de Pila y Lenguajes Independientes del Contexto

El principal resultado de esta sección es que los autómatas de pila no deterministas aceptan lenguajes independientes del contexto

364

independientes del contexto.

Autómatas de Pila y Lenguajes Independientes del Contexto

Esto requiere que : para cada lenguaje independiente del

contexto, debamos poder encontrar en autómata de pila no determinista que lo

365

acepte, y a la inversa, para cada lenguaje

aceptado por un autómata de pila no determinista, obtener una gramática independiente del contexto.

Autómatas de Pila y Lenguajes Independientes del Contexto

Sea G = ( N, , S, P ) una gramática independiente del contexto. Desearíamos construir un ADPND que acepte

L(G).

366

El ADPND que construiremos debería poder verificar que todas las cadenas de L(G) son derivables.

La idea principal es construir un ADPND que pueda realizar una derivación por la izquierda para cualquier cadena del lenguaje.

Page 123: TALF - Otoño 2010

123

Autómatas de Pila y Lenguajes Independientes del Contexto

Representaremos la derivación guardando en la pila los no terminales del extremo derecho de la derivación.

Mientras que la parte izquierda es idéntica

367

Mientras que la parte izquierda es idéntica que la cadena de entrada que se ha leído.

Autómatas de Pila y Lenguajes Independientes del Contexto

Empezaremos por introducir en la pila el símbolo inicial (de G).

En cada una de las etapas posteriores realizaremos una de estas acciones :

368

Si el símbolo que está en la cima de la pila es un no terminal A, lo sustituiremos por el lado derecho de la producción para A, A w, o

Si el símbolo de la cima la pila es un terminal y si corresponde con el siguiente símbolo de la entrada, lo desapilaremos de la pila.

Automátas de Pila y Lenguajes Independientes del Contexto

Para definir dicho ADPND M, sean : Q = { q1,q2,q3 }

= N { z }, donde z es el símbolo inicial de la pila ( y es distinto de todos los símbolos

369

de N )

F = { q3 }

s = q1

Page 124: TALF - Otoño 2010

124

Automátas de Pila y Lenguajes Independientes del Contexto

La regla de transición está compuesta por cuatro tipos de transiciones : ( q1, , z ) = ( q2, Sz), la cual corresponde con

la introducción del símbolo inicial en la pila.

370

( q2, , A ) = { (q2,w) | A w P} para cada no terminal A N.

( q2, a, a ) = { (q2, )} para cada símbolo terminal a .

( q2, , z ) = { (q3,z) }

Automátas de Pila y Lenguajes Independientes del Contexto

Sea L(G) = { wcw | w {a,b}* } un lenguaje independiente del contexto.Sea G la gramática que reconoce el

lenguaje cuyas producciones son :

371

lenguaje, cuyas producciones son : S aSa | bSb | c

Automátas de Pila y Lenguajes Independientes del Contexto

El ADPND, tiene la siguiente regla de transición : ( q1, , z ) = { ( q2, Sz) }

( q2, , S ) = { (q2, aSa ), (q2, bSb ), (q2, c ) }

372

( q2 ) { (q2 ) (q2 ) (q2 ) }

( q2, a, a ) = { (q2, ) }.

( q2, b, b ) = { (q2, ) }.

( q2, c, c ) = { (q2, ) }.

( q2, , z ) = { (q3, z ) }

Page 125: TALF - Otoño 2010

125

Automátas de Pila y Lenguajes Independientes del Contexto

TeoremaSi L es un lenguaje independiente del

contexto, entonces existirá una ADPND M para el cual L=L(M)

373

para el cual L L(M).

Automátas de Pila y Lenguajes Independientes del Contexto

TeoremaSi L es aceptado por un ADPND, entonces

L es un lenguaje independiente del contexto

374

contexto.

Automátas de Pila y Lenguajes Independientes del Contexto

TeoremaSi L1 es un lenguaje independiente del

contexto y L2 es un lenguaje regular, entonces L1 L2 es un lenguaje

375

entonces L1 L2 es un lenguaje independiente del contexto.

Page 126: TALF - Otoño 2010

126

Forma Normal de Greibach

Dra. Greibach nació en New York y recibió el A.B. grado del Radcliffe College en Lingüística y Matemáticas Aplicadas summa cum laude in 1960. Recibió el A.M. grado del Radcliffe en 1962 y el PhD en Matemáticas Aplicadas de la Universidad de

376

Matemáticas Aplicadas de la Universidad de Harvard en 1963. Trabajó en la División de Física Aplicada e Ingeniería de la Universidad de Harvard y se unió a la Facultad UCLA en 1969 y al Departamento de Ciencias de la Computación en 1970. Sus intereses incluyen algoritmos y complejidad computacional, esquemas de programas y semántica, lenguajes formales y teoría de autómatas y computabilidad.

Forma Normal de Greibach

La Forma Normal de Greibach (FNG) es otra forma normal que tiene gran importancia teórica y practica.

E t f l t i l

377

En esta forma normal se restringe la posición en que pueden aparecer los terminales y los no terminales.

Forma Normal de Greibach

TeoremaSi A B es una producción de una

gramática independiente del contexto y si B 1 | 2 | | son todas la

378

B 1 | 2 | ... | m son todas la producciones que tienen a B en su lado izquierdo, entonces A B se puede reemplazar por :

A 1 | 2 | ... | m sin que varíe el lenguaje generado por la gramática.

Page 127: TALF - Otoño 2010

127

Forma Normal de Greibach

Una producción de la forma A A, donde ( N )*, se conoce como recursiva por la derecha.

A ál t d ió d l

379

Análogamente, una producción de la forma A A, donde ( N )*, se conoce como recursiva por la izquierda.

Forma Normal de Greibach

TeoremaSea G una gramática independiente del

contexto y A un no terminal de G. Si A A | A | | A son todas las

380

Si A A1 | A2 | ... | An son todas las producciones para A, que son recursivas por la izquierda, y

Si A 1 | 2 | ... | m, son las restantes producciones para A, entonces :

Forma Normal de Greibach

Se puede construir una gramática equivalente introduciendo un nuevo no terminal Z y reemplazando todas las producciones precedentes por :

381

A 1 | 2 | ... | m | 1Z | 2Z | ... | mZ

Z 1 | 2 | ... | n | 1Z | 2Z | ... | nZ

Page 128: TALF - Otoño 2010

128

Forma Normal de Greibach

Definición :Una gramática independiente del contexto

está en FNG, si todas las producciones son de la forma A a donde a es un

382

son de la forma A a, donde a es un símbolo terminal y ( N )*.

Propiedades de los lenguajes RegularesPropiedades de Clausura

Existen numerosas operaciones que aplicadas a lenguajes regulares dan como resultado otro lenguaje regular.

Por ejemplo :

383

la unión de dos lenguajes regulares es un lenguaje regular. Puesto que : si r1 y r2 denotan a los lenguajes regulares L1 y L2, la expresión regular r1 + r2 denota al lenguaje L1 L2.

Este tipo de operaciones reciben el nombre de operaciones de clausura.

Propiedades de los lenguajes RegularesPropiedades de Clausura

Teorema Los lenguajes regulares son cerrados bajo

las operaciones de unión, concatenación y estrella de Kleene

384

estrella de Kleene.

Page 129: TALF - Otoño 2010

129

Propiedades de los lenguajes RegularesPropiedades de Clausura

Teorema Los lenguajes regulares son cerrados bajo

la operación de complementación

385

Propiedades de los lenguajes RegularesPropiedades de Clausura

Demostración Sea A = (Q,,q0,f,F) un Autómata Finito

Determinista tal que L(A) = L. Se construye un AFD A’ = (Q,,q0,f,Q-F), es decir,

A’ es un AFD que se diferencia del AFD A en que

386

A es un AFD que se diferencia del AFD A en que en A’ serán estados finales los que no lo eran en el AFD A, y

Por lo tanto L(A’) = {x * | f(q0,x) Q-F} = = {x * | f(q0,x) F} = = * - { x * | f(q0,x) F} = = * - L = = L

Propiedades de los lenguajes RegularesPropiedades de Clausura

Resulta interesante que la condición de que el autómata finito de partida sea determinista es muy importante, puesto que de no ser así la demostración no

387

que de no ser así, la demostración no sería correcta.

Page 130: TALF - Otoño 2010

130

Propiedades de los lenguajes RegularesPropiedades de Clausura

Por ejemplo, si a fuese AFN tal que f(q,a) = {qj,qk} y qj F, pero qk F, al construir el AF A’ se tendría que qk Q – F y por lo tanto sería un estado final de A’.

388

Y como f(q,a) = {qj,qk} resulta que la cadena a es reconocida por el AF A y por A’. Esto es imposible si el AF A’ reconoce el complemento de L(A).

Propiedades de los lenguajes RegularesPropiedades de Clausura

Teorema Los lenguajes regulares son cerrados bajo

la operación de intersección.

Demostración

389

DemostraciónComo los lenguajes regulares son

cerrados bajo las operaciones de complementación y de unión, entonces si L1 y L2 son lenguajes regulares también lo será L2 L1 = L1 L2

¿cómo se podría construir un AFD que reconociese la intersección de 2 lenguajes regulares L1 y L2?

Propiedades de los lenguajes RegularesPropiedades de Clausura

390

Page 131: TALF - Otoño 2010

131

Dado que L1 L2.= L1 L2. Un método consistiría en : Construir el AFD A1 que reconozca L1, Construir el AFD A2 que reconozca L2, Construir el AFD A’1 que reconozca el complemento de

L t i t

Propiedades de los lenguajes RegularesPropiedades de Clausura

391

L1, y posteriormente Construir el AFD A’2 que reconozca el complemento de

L2. Construir el AFD A’ para reconocer la unión L(A’1) y

L(A’2). Finalmente, construir el AFD A” para reconocer el

complemento de L(A’)

Pero este método resulta muy largo.

Propiedades de los lenguajes RegularesPropiedades de Clausura

Este AFD se puede calcular de forma más sencilla aplicando el siguiente método : Sea A1 = (Q1,,q0,f1,F1) un AFD tal que L(A1)=L1, y Sea A2 = (Q2,,p0,f2,F2) otro AFD tal que L(A2)=L2.

S t l AFD A” (Q Q [ ] f F F )

392

Se construye el AFD A” = (Q1xQ2,,[q0,p0],f,F1xF2) tal que la función de transición f se define de la forma siguiente : f( [q,p],a ) = [ f1(q,a) , f2(p,a) ]

De esta forma el lenguaje reconocido por el AFD A” es el siguiente : L(A”) = { x * | f( [q0,p0],x) F1xF2 } =

{ x * | f1(q0,x) F1 f2(p0,x) F2 } = L1 L2

Propiedades de los lenguajes RegularesPropiedades de Clausura

Ejemplo de aplicación del teoremaSea L = { x (0 + 1)* | S(0.x) = S(1.x)}.

¿es un lenguaje regular?

El lenguaje esta formado por cadenas que

393

El lenguaje esta formado por cadenas que tienen el mismo número de 0’s que de 1’s dispuestos en cualquier posición.

Page 132: TALF - Otoño 2010

132

Propiedades de los lenguajes RegularesPropiedades de Clausura

Si L fuese un lenguaje regular entonces al intersectarlo con un lenguaje regular debería dar como resultado un lenguaje regular. El lenguaje 0*1* es un lenguaje regular, puesto

que es una expresión regular

394

que es una expresión regular. Por lo tanto si L fuese regular también lo debería

ser el lenguaje L 0*1*, pero este lenguaje es el lenguaje 0n1n que ya se había visto que no es un lenguaje regular.

Por lo tanto, L tampoco puede ser regular.

Máquinas de Turing

Alan Mathison Turing nació el 23 de Juniode 1912, en Paddington, Londres. Depadre Inglés y madre Irlandesa, estuvoseparado de sus padres durante suinfancia ya que estuvieron exiliados en laIndia (su padre luchó en esta guerra).Con 12 años ya expresaba su tremendafascinación sobre la naturaleza y la gran

395

y gcantidad de preguntas que no teníanrespuesta para él, pensamientos que lomarginaron en la Escuela Pública en quese hallaba. Debido a esto estudió enSherborne School cuyo director tuvo unaspalabras para con su madre: "Si es uncientífico de vocación, pierde el tiempo enla Escuela Pública". Las notas privadasde Turing sobre la Teoría de laRelatividad denotan un alto nivel deinteligencia, pero a su vez es advertidopara que no tenga un fatal fracaso en laobtención del Certificado Escolar.