TALF - Otoño 2010
Transcript of TALF - Otoño 2010
1
TEORIA DE AUTOMATAS Y LENGUAJES FORMALES
1
Andrés Santoro del Campo
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.
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
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
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
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
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
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
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
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
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.
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.
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
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 }
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
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.
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.
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 *
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
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 }
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 }
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 *.
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
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
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
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.
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
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
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.
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
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.
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.
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.
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
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.
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
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}
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.
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
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} }
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.
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 .
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
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
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.
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 ), ) )
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 ) =
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( ) =
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.
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
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
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’})
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
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.
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.
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,) }
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
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.
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.
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.
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.
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.
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
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.
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 | )
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.
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
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
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 α β
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
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
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.
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”.
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.
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.
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.
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).
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
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
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) = ƒ
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
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
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.
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).
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.
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 .
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).
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
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.
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
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.
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
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.
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.
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
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.
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
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.
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’.
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’
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 ’.
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 }
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.
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)
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 .
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 )
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.
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’.
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
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’
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
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
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 !
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
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
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
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.
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.
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.
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 *
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
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
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)
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.
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
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 ) }
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.
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.
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
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.
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.
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
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.
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.