Universidad Autónoma del Estado de México
2010-B
APUNTES DE DE AUTÓMATAS AUTÓMATAS Y LENGUAJES FORMALES
Asesor: Dra. Lilia Ojeda Toche Alumno: Tereso Antonio Antúnez Barbosa
Autómatas y Lenguajes Formales Formales
Facultad de Ingeniería
ÍNDICE 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Teoría de Graficas Conceptos Generales Expresiones Regulares Autómatas Finitos Autómatas Finitos Deterministas Autómatas Finitos No Deterministas Autómatas Finitos No Deterministas con ε Gramáticas Independientes del Contexto o de Contexto Libre Simplificación de Gramáticas Eliminación de Símbolos Inútiles Eliminación de Producciones Épsilon Eliminación de Producciones Unitarias Forma Normal de Chomsky Autómata de Pila Maquina de Turing Maquina de Turing como aceptador de Lenguajes Maquina de Turing para realizar cálculos
2 Universidad Autónoma del Estado de México | 2010-B
3 7 8 9 10 14 17 20 25 26 27 28 30 33 38 39 40
Autómatas y Lenguajes Formales Formales
Facultad de Ingeniería
TEORÍA DE GRÁFICAS
∈
GRAFICA: Una gráfica (no dirigida) consta de un conjunto de “V” vértices o nodos y un conjunto “E” de aristas o arcos, tales que cada arista e E queda asociado a un par no ordenados de vértices, es decir si v y w son los nodos asociados a e, entonces e= (v, w) o e= (w, v).
Una gráfica dirigida o bigráfica G consta de un conjunto V de vértices o nodos y un conjunto E de aristas o arcos, tales que cada arista e pertenece a E se asocia con un par ordenado de vértices, si v y w son los nodos asociados a e, entonces es (v, w) que denota un arco que va de v a w. Ejemplo 1: Gráfica dirigida: v= {a, b, c, d} E= {e1, e2, e3, e4, e5}c e1= {a, d}, e2= {a, b}, e3= {a, c}, e4= {c, c}, e5= {c, b} Ejemplo 2: Gráfica no dirigida: v= {a, b, c, d} E= {e1, e2, e3, e4, e5} e1= {a, d}, {d, a}, e2= {a, b}, {b, a} e3= {a, c}, {c, a} e4= {c, c}, e5= {c, b}, {b, c}
Una gráfica etiquetada o con peso es aquella con números o letras (etiqueta) sobre las aristas. Ejemplo 1:
Una gráfica G es conexa si s i dados cualesquiera dos vértices v y w en G, existe un camino de v a w. Un camino de y de longitud n es una sucesión alternante de n mas un vértice y n aristas que comienza con el vértice y termina con el vértice . 3 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales Formales
Facultad de Ingeniería
Ejemplo 1: No es conexa porque es dirigida.
Ejemplo 2: Es conexa porque no es dirigida.
Un ciclo es un camino de longitud distinta de cero de 1 a v, sin aristas repetidos. Un ciclo simple es un ciclo de v a b en el cual no existen vértices repetidos, excepto por los vértices inicial y final que son iguales a v. Ejemplo 1: Ciclo simple: {c-e4-c} Ciclo simple: {a-e3-c-e5-b-e2-a} {a-e3-c-e5-b-e2-a} Ciclo no simple= {a-e3-c-e4-c-e5-b-e2-a}
Un árbol es una gráfica a cíclica (no tiene ciclos) y conexa en vértice en particular se designa como la raíz.
4 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales Características
(,∗) ∗∗ (∗∗)∗
Expresión Regular
Conjunto de todas las cadenas de a y b pero la cadena vacía. Conjunto de todas las cadenas que empiezan con a, y solo contiene una a seguida de una serie de infinita de b. Conjunto de todas las cadenas que pueden empezar con a seguidas de una seria de b.
Facultad de Ingeniería Lenguaje
L= {ε, a, b, ab, ba, aab, bba, …} L= {a, ab, abb, abbb, abbbb, ab.., ….} L= {ε, a, b, ab, abb, baa, …} L= {ε, a, b, ab, ba, …}
Ejemplo 1: Sea el alfabeto Σ= {0, 1}, decir que lenguaje acepta la expresión regular 1*10. Dar una cadena mínima que acepta la condición y una mínima que no acepta la condición. Lenguaje: Conjunto de todas las cadenas que pueden empezar con 1 y terminan con 10, y solo contiene un 0. Cadena mínima que acepta: L= {10} Cadena mínima que no acepta: L= { ε}.
Ejemplo 2: Sea L el conjunto de todas las cadenas de 0 y 1 de longitud par. a) Diga si L es un lenguaje regular, y si es así; b) Construya una expresión regular que represente a L. a) Si es lenguaje regular porque contiene a la cadena vacía. L= {ε, 11, 00, 01, 10, 1100, 0011, 1001, …} b)
(11,00,01,10)∗
Ejemplo 3: Sea L el conjunto de todas las cadenas en a, b de longitud 4 o menos. a) Diga si L es un lenguaje regular, y si es así; b) Construya una expresión regular que represente a L. a) Si es lenguaje regular porque contiene a la cadena vacía. L= {ε, a, b, ab, ba, abb, aaa, bbb, baba, abab, …} b)
(a,b,ε)
5 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
Ejemplo 4: Sea L el lenguaje de todas las cadenas de x y y que contiene un número impar de y. Defina una expresión para este lenguaje. Σ = (x, y)
∗∗(∗∗)∗
L= {y, xxy, xxy, yyy, xxxxy, yxyy,…}
Ejemplo 5: Use temporalmente l (de letra) para denotar la expresión regular: l= (a+b+c+…+A+B+C…) y d (de dígitos) para representar la expresión regular d= (0+1+2+3,+…+a) un identificador en el lenguaje de programación C es una cadena de longitud n o mas que contiene solo dos letras, dígitos o el guion bajo (_) y empiece con una letra o este (_). Defina una expresión regular para el lenguaje de todos los identificadores en C.
(, _)(,_ , )∗
Ejemplo 6: Suponga que mantenemos el uso de l y del ejemplo anterior se añaden las abreviaturas “s” (de signo) y “p” (de punto). El símbolo “s” es de la abreviatura de ( ε+a+m), donde a es “+” y m es “-“. Un real en Pascal tiene la forma siguiente: Primero un signo (+, -, o ninguno), uno o más dígitos, un punto decimal y uno o más dígitos que pueden ir seguidos de E (que en este caso es un signo del alfabeto), un signo y uno o mas dígitos, o simplemente E, el signo y uno o mas dígitos. Defina una expresión regular para representar números reales en el lenguaje de programación Pascal.
()()(,)
6 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
CONCEPTOS GENERALES Un conjunto no vacío y finito de símbolos se conoce como alfabeto y se representa por Σ (sigma). Ejemplo 1: Σ= {1, 2, 3} Σ= {a, b, c}
Una secuencia finita de símbolos se conoce como palabra o cadena. Cada símbolo de un alfabeto es una cadena sobre dicho alfabeto. La cadena vacía, la cual se denota por ε (épsilon), es una cadena o palabra sobre cualquier alfabeto. Un lenguaje es un conjunto de cadenas que incluyen símbolos de un alfabeto. La longitud de una cadena X en Σ es el número de símbolos de la cadena y se denota |X| |ε|= 0 El conjunto de todas las cadenas en Σ se denota como Σ *. Los lenguajes son conjuntos de cadena, por lo tanto, es posible construir o crear lenguajes nuevos mediante operaciones de conjuntos. Si se tiene dos o más lenguajes se pueden hablar sobre su unión, intersección y diferencia. Cuando se habla del complemento de un lenguaje en Σ, se considera que el conjunto universal es el lenguaje.
Σ ∗ = Σ ∗ − Σ∗
∗ =⋃ ⋃
La operación de concatenación de cadenas, también permite construir nuevos lenguajes. Se define el conjunto de todas las cadenas que se obtienen al concatenar cualquier número de elementos de L como La operación * en esta fórmula suele denominarse estrella de Kleene. Este uso del símbolo * es compatible con el de para representar el conjunto de cadenas de Σ. ε siempre es un elemento de
∗
sin importar en qué consiste L ya que Lᵒ= { ε } se denota como
como =
Se afirma que la cadena x es una subcadena de la cadena y si existen las cadenas w y z, cualquiera de los cuales puede ser nula o vacía de modo que y=wxz. Ejemplos: y=12121212 w=[121], x=[212], z=[12] x=212 y=wxz y=12121212
y=1001100 w=[ ε], x=[100], z=[1100] w=ε x=100 y=ε1001100
7 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
EXPRESIONES REGULARES Un lenguaje regular en un alfabeto Σ es uno que puede obtenerse a partir de lenguajes básicos con las operaciones de unión, concatenación y estrella de Kleene. Los lenguajes básicos son: a) El lenguaje ɸ. b) El lenguaje cuyo único elemento es {ε}. c) El lenguaje {a} donde a Σ.
∈
Es factible describir un lenguaje regular con una formula explicita, que se conoce como expresión regular. Definición: Sea Σ un alfabeto. El conjunto de los lenguajes regulares son Σ se define recursivamente como sigue: a) b) c) d) e)
El conjunto ɸ es un lenguaje regular. El lenguaje {ε} es un lenguaje regular. El lenguaje {a} es un lenguaje regular. Si son lenguajes regulares entonces Ningún otro lenguaje sobre Σ es regular.
== + =,
∪ , −∗
también son lenguajes regulares.
Ejemplo:
∗== = = = = , a, aa, aaa, aaaa, …} , , ,
,
Nota: Por tanto, el conjunto de los lenguajes regulares sobre Σ está formado por el lenguaje ɸ, los lenguajes unitario incluido {ε} y todos los lenguajes obtenidos a partir de la concatenación, unión y cerradura de lenguajes.
Se puede simplificar la especificación de un lenguaje regular introduciendo una especie abreviatura llamada expresión regular. Una expresión regular sobre el alfabeto Σ se puede definir de forma recursiva empleando lo siguiente. a) b) c) d)
ɸ y ε son expresiones regulares.
∈
a es una expresión regular donde a Σ. Si r y s son expresiones regulares entonces r+s, r.s y r* también son expresiones regulares. Ninguna otra secuencia de símbolo es una expresión regular.
Expresión Regular ɸ ε
a
Lenguaje L= {ε} L= {a}
Expresión Regular a+b a* (a,b)*
8 Universidad Autónoma del Estado de México | 2010-B
Lenguaje L= {a,b} L= {ε, a, aa, aaa, aaaa, …} L={ ε, a, b, ab, aab, bba, …}
Autómatas y Lenguajes Formales
Facultad de Ingeniería
Ejemplo: Sea L= {w € {a,b} / w termina en b y no contiene a a} L= {b, ab, abb, abbb, abbb…, …} (b, ab)*
AUTÓMATAS FINITOS Considere el lenguaje regular representado por c*(a+bc)*. Si dada una cadena x, se nos pregunta si x pertenece a este lenguaje regular, debemos analizar no solo los caracteres que aparecen en x sino también sus posiciones relativas. Por ejemplo, la cadena abccccccccab pertenece a este lenguaje regular, sin embargo, cabac³bc no pertenece a este lenguaje regular. Podemos construir un diagrama que nos ayude a determinar si una cadena pertenece o no a un lenguaje. Este diagrama tiene la forma de digrafica etiquetada o con peso, que se llama diagrama de transición. Los nodos de esta grafica se llaman estados y se usan para indicar hasta que lugar se ha analizado la cadena. Los arcos de la gráfica se etiquetan con símbolos del alfabeto y se llaman transiciones. Si el siguiente símbolo a reconocer concuerda con la etiqueta de alguna transición que salga del estado actual, nos desplazamos al estado al que nos lleve el arco correspondiente, se debe comenzar por un estado inicial que se marca con una flecha y cuando se hayan tratado todos los símbolos de la cadena, se necesita saber si la cadena es válida. Para ello, se marcan ciertos estados como estados finales o de aceptación (con un doble círculo). Si cuando ha sido leída toda la cadena se termina en un estado de aceptación, entonces la cadena es válida. Ejemplo: Considere el lenguaje
()∗
. Construya un autómata finito.
Diagrama de Transición.
Se puede representar el diagrama de transición mediante una tabla que indica el siguiente estado al que desplazarse, desde un estado combinado con un símbolo de la entrada. Esta tabla contiene para cada par (estado actual, entrada) un único estado siguiente. Por tanto. Para cada estado actual y símbolo de entrada se puede determinar cuál será el estado siguiente. Se puede pensar que el diagrama representa la acción de alguna maquina. Esta máquina puede pasar por diferentes estados. El cambio de estado depende de la entrada y del estado en que se encuentre. Dicha maquina se llama autómata finito.
9 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
Tabla de transición Estado Entradas x y {qo} {q1} {q2} {q1} {q2} {q0} {q2} {q2} {q2} Existen dos tipos de autómatas finitos: Autómatas Finitos Deterministas (AFD) y Autómatas Finitos No Deterministas (AFND).
AUTÓMATA FINITO DETERMINISTA Formalmente, un autómata finito determinista M (maquina) es una colección de cinco elementos: a) b) c) d) e)
Un alfabeto de entrada Σ. Un conjunto finito de estados Q. Un estado inicial s. Un conjunto F de estados finales de aceptación. Una función &: Q x ΣQ que determina el único estado siguiente para el par estado actual y al símbolo de entrada.
M= {Σ, Q, s, F, &}, donde: Σ= {x, y} Q= F= { & (q0, x)= q1 & (q0, y)= q2 & (q1, x)= q2 Reglas de transición & (q1, y)= q0 & (q2, x)= q2 & (q2, y)= q2
, ,
10 Universidad Autónoma del Estado de México | 2010-B
(, )
correspondiente al
Autómatas y Lenguajes Formales
Facultad de Ingeniería
Ejemplo 1: Sea el lenguaje de todas las cadenas en (c, d) que terminan en dc. a) Determine una expresión regular para este lenguaje. b) Muestre tres ejemplos de cadenas validas. c) Construya un autómata finito determinista para este lenguaje mediante su diagrama de transición, tabla de transición y elementos correspondientes. a) b) L= {dc, ddc, cddc} c) Tabla de transición Estado Entradas c d {qo} {q0} {q1} {q1} {q2} {q1} {q2} {q0} {q1}
( +)∗
∑=
{c, d} Q= {q0, q1, q2} S= q0 F= q2
(q0, c) = q0 (q0, d) = q1 (q1, c) = q2 (q1, d) = q1 (q2, c) = q0 (q2, d) = q1
Ejemplo 2: Encuentre una expresión regular que corresponda a cada uno de los lenguajes en x, y que siguen: a) El lenguaje de todas las cadenas que contienen exactamente dos x. b) El lenguaje de todas las cadenas que contienen al menos dos x. c) El lenguaje de todas las cadenas que no terminan en xy. a) b) c)
∑=(, ∗ ∗∗) ∗ ∗ (,[(,))∗(,, (), (,)∗,)(, )∗,(,,)]
11 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
( +)∗.
Ejemplo 3: Considere la expresión regular a) Diga con sus propias palabras que lenguaje representa. b) De tres o más ejemplos de cadenas no válidas. c) Construya un autómata finito determinista mostrando su diagrama de transición, tabla de transición y cada uno de sus elementos. a) El conjunto de todas las cadenas que pueden iniciar en aa o bba, pero que terminan en a. b) L= {ε, b, bab, bb, aaaa}. c) Tabla de transición Estado Entradas a b {qo} {q1} {q2} {q1} {q0} {q4} {q2} {q4} {q3} {q3} {q0} {q4} {q4} {q4} {q4}
∑=,
Q= {q0, q1, q2, q3, q4} S= {q0} F= {q2} (q0, a) = {q1} (q0, b) = {q2} (q1, a) = {q0} (q1, b) = {q4} (q2, a) = {q4} (q2, b) = {q3} (q3, a) = {q0} (q3, b) = {q4} (q4, a) = {q4} (q4, b) = {q4}
12 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
AUTÓMATA FINITO NO DETERMINISTA (AFND) Si se permite que desde un estado se realicen 0, 1 o más transiciones mediante el mismo símbolo de entrada se dice que el autómata finito es no determinista. Un autómata finito no determinista se define mediante una colección de cinco objetos (Q, Σ, s, f, ∆), donde: a) b) c) d) e)
Q conjunto finito de estados. Σ es el alfabeto de entradas. s es uno de los estados de Q designado como uno de los estados de inicio. F es conjunto de estados finitos o de aceptación. ∆ es una relación sobre QxΣxQ y se llama relación de transición.
(,(∇, ∇)) ⊆
(,∇)
Observe que puesto que ∆ es una relación para todo es puesto por el estado actual y el símbolo de entrada de ∆ de es un conjunto de 0 o más estados, es decir ∆ Q. esto indica que para todo estado Q se pueden tener 0 o más alternativas a elegir como estado siguiente, todos para el mismo símbolo de entrada. Observe que en la tabla de la relación de transición las celdas con el ɸ indican que no existe ninguna transición desde el estado actual mediante la entrada correspondiente. Que para un par estado-entrada, existen más de un estado posible siguiente, índica que puede elegir entre las distintas posibilidades. En el modelo no existe nada que determine la elección. Por esta razón, se dice que el comportamiento del autómata es no determinista. Ejemplo 1: Sea el autómata finito que se muestra en el siguiente diagrama de transición. Tabla de transición Estado Entradas a {qo} {q1, q4} {q1} {q1} {ɸ} {q2} {ɸ} {q3} {ɸ} {q4} a) Defina los elementos del autómata, incluyendo la tabla de transición. b) Diga qué tipo de autómata finito es. c) Diga cuál es el lenguaje que acepta. d) Defina una expresión regular para el lenguaje que acepta el autómata. e) Diga si la cadena abab es válida, mediante las reglas de transición. a) Σ= {a, b} Q= {q0, q1, q2, q3, q4} S= q0 F= {q2, q3, q4}
13 Universidad Autónoma del Estado de México | 2010-B
(q0, a) = {q1, q4} (q0, b) = {q3} (q1, a) = {q1,} (q1, b) = {q2} (q2, a) = {ɸ} (q2, b) = {ɸ} (q3, a) = {ɸ} (q3, b) = {ɸ} (q3, b) = {ɸ} (q3, b) = {q4}
b {q3} {q2} {ɸ} {ɸ} {q4}
Autómatas y Lenguajes Formales
Facultad de Ingeniería
b) El diagrama de transición es un autómata finito no determinista. c) Conjunto de todas las cadenas de a y b, que inician con una a seguida de una serie de b. d) e) Sea la cadena abab. Decir si es cadena valida ∆ ({q0, a}, bab)) ∆ ({q1, q4}, bab)) ∆ ({q1, b} u {q4, b}, ab)) ∆ (({q2, q4}, a), b) ∆ ({q2, a} u {q4, a}, b) ɸuɸ ∆ (ɸ, b) = ɸ, por lo tanto no es cadena valida, porque tiene elementos sin derivar.
(∗, ∗)
(,)∗
Ejemplo 2: Sea la expresión regular . a) Diga que lenguaje representa esta expresión regular. b) Construya un autómata finito no determinista que acepte el lenguaje representado incluyendo todos sus elementos. a) El lenguaje de todas las cadenas de x, y, donde es una serie de xy que empieza con x. b) Tabla de transición Estado Entradas x y {ɸ} {qo} {q1} {ɸ} {q1} {q0, q2} {q2} {q0} {ɸ}
∑=,
Q= {q0, q1, q2} S= {q0} F= {q0}
Ejemplo 3: Dado el autómata finito no determinista siguiente: Tabla de transición Estado Entradas x y {ɸ} {qo} {q1} {ɸ} {q1} {q0, q2} {ɸ} {q2} {q0} a) Construir un autómata finito determinista semejante.
14 Universidad Autónoma del Estado de México | 2010-B
{q0q2} {q0q1} {ɸ}
{q0q1} {q1} {ɸ}
{ɸ} {q0q2} {ɸ}
Autómatas y Lenguajes Formales
Facultad de Ingeniería
Autómata finito determinista.
Eliminando el estado q2, porque no tiene entradas.
Tabla de transición Estado Entradas x y {ɸ} {qo} {q1} {ɸ} {q1} {q0, q2} {q0q2} {q0q1} {ɸ}
(,)∗.
Ejemplo 4: Sea la expresión regular a) Diga que lenguaje representa. b) Construya un autómata no determinista que acepte el lenguaje. c) Diga si la cadena ccddc es una cadena valida por medio de la regla de transición. d) Transforme al autómata de b) en un autómata determinista.
= , , ,,, …
a) El conjunto de todas las cadenas que pueden iniciar en dd, ddc pero que terminan en c, con un número par de d. b)
c)
15 Universidad Autónoma del Estado de México | 2010-B
{q0q1} {q1} {ɸ}
{ɸ} {q0q2} {ɸ}
Autómatas y Lenguajes Formales ∆ (q0, ccddc) ∆ ((q0, c), cddc) ∆ ((q1, c), ddc) Como (q1, c) se va al vacío, la cadena no es válida. Y aun faltan elementos por derivar. d)
Tabla de transición Estado Entradas c d {qo} {q1} {q2, q3} {ɸ} {ɸ} {q1} {ɸ} {q2} {q0} {ɸ} {q3} {q4} {ɸ} {q4} {qo} {q2, q3} {q0, q4} {q0, q1}
ɸ
{q0, q1} {q1}
{q0, q4} {q2, q3} {q2, q3}
ɸ
ɸ
ɸ
Eliminando estados que no tienen entradas.
16 Universidad Autónoma del Estado de México | 2010-B
Facultad de Ingeniería
Autómatas y Lenguajes Formales
Facultad de Ingeniería
AUTÓMATA FINITO NO DETERMINISTA CON ε (AFND-ε) Se puede ampliar la definición de autómata finito no determinista para incluir transiciones de un estado a otro que no depende de ninguna entrada. Tales transiciones se llaman ε-transiciones o transiciones- ε porque al realizarse no consumen ningún símbolo de entrada. Ejemplo: Sean los siguientes AFND- ε. Tabla de transición Estado Entradas ε a {qo} {q1} {q1}
Tabla de transición Estado Entradas b ε a ɸ {qo} {q1} ɸ ɸ {q1} {q2} ɸ {q2} {q0} ɸ {q0}
( ) Σ ∪ (, )
(Σ ∪ )
Si un autómata finito no determinista tiene transiciones ε, la relación de transición ∆ asocia pares de . Es decir ∆ es la relación sobre . Se puede agregar una columna en una tabla de ∆ para colocar los pares de la forma . Cuando hay transiciones ε en un AFND es conveniente poner que cada estado tiene una transición ε que cicla en ese estado, con la finalidad de sistematizar el cálculo en los autómatas finitos no deterministas. Para tratar de calcular el conjunto de los estados siguientes de un AFND-ε debemos tener en cuenta las transiciones ε “anteriores” y “posteriores” a la transición etiquetada con ε. Por ejemplo: Considere el siguiente AFND-ε.
a) Calcular el conjunto de estados siguientes, si el estado actual es q0 y la entrada es a. R= {q1, q4} b) Calcular el conjunto de estados siguientes, si el estado actual es q1 y la entrada es b. R= {q0, q2, q5} c) Calcular el conjunto de estados siguientes, si el estado actual es q0 y la entrada es ababbb. R= {q1, q5}
17 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
) = p|0p es accesible desde q sin consumir nada en la entrada −−((0)= −−((12)=) = 21,4 −−((34)) == 34 − =(, , … , )= −() (, ∇) = p |hay una(t,ra)=nsicion1de q a p etiquetada con ∇ (, ∇ ) ∇ (, , … , ) =( , ∇ ) −( −(), ∇) ∇ −( −(), ∇) ∇ Se puede sistematizar el proceso para calcular el conjunto de estados siguientes en un AFND-ε. Para todo estado se define la ε-cerradura en ε-clausura o cerradura-ε de q.
Se puede ampliar esta definición para todo el conjunto de estados de la s iguiente manera.
Para todo
y se define
El conjunto que se obtiene de calcular es el conjunto de estados que “siguen” directamente a q pasando por la transición etiquetada . Se amplía la definición de d a los conjuntos como sigue:
Finalmente observe que 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 ultimo una o más transiciones ε. Por tanto. Es el conjunto de todos los estados siguientes al actual q mediante la entrada . Ejemplo: Considere el siguiente AFND- ε.
) ∆(∆(0,0,)=)= −( −( 0) , a −( 0, 1) , a ∆(∆(0,0,)=)= −(−(3,(0,4)a)∪(1,)) ∆(∆(0,0,)=)=−(1,33)∪∪4,−(54) ∆(0,)= 1,3,4,5
a) Calcule el conjunto de estados siguientes, si el estado actual es q0 y la entrada es a.
b) Calcular el conjunto de estados siguientes a partir de q0 con entrada b.
18 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
) ∆(∆(0,0,)=)= −( −( 0) , b −( 0, 1) , b ∆(∆(0,0,)=)= −(−(((2)∪(2) 0,b)∪(1,)) ∆(∆(0,0,)=)= 22,2 Ejemplo 2: Considere el AFND- ε.
a) Obtenga un autómata finito no determinista equivalente.
) ) ∆(∆( ,,)=)= −( −( , a ) −( , , ), a )∪(, ) ∆(∆( ,,)=)= −( , )∪( , a ) −( , , ∆(∆( ,,)=)= −(,, ,)∪ −() ∪ −() ) ) ∆(∆(,, )=)= −( −( , a ) −( , ), a ) ∆(∆(,, )=)= −( , ) ∪( , a ) −( , ∆(∆(,, )=)= −( , −(), a) ∆(∆(,, )=)= −−(∅()),a) ∆(∆(,,)=)= ∅−( −(), a) ) ∆(∆(,, )=)= −( ), a ) −( ∅ ∆(, )= ∅
) ) ∆(∆( ,,)=)= −( −( , b ) −( , ), b ) ∆(∆( ,,)=)= − , ) ∪( , −( ∅ ∪∅) ∆(∆( ,,)=)= ∅−( −(), b) ) ∆(∆(,, )=)= −( , ), b ) −, )∪( , ∆(∆(,, )=)= ∅−( ∅ ∪∅) ) ) ∆(∆(,, )=)= −( −( , b ( ) − ), b ∆(∆(,, )=)= , −() ) ) ∆(∆(,, )=)= −( −( , b ) −( ), b ∆(∆(,, )=)= ∅−( ∅)
19 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
Estados de aceptación, son únicamente los estados de aceptación del Autómata original (AFND- ε).
)= −( , , )= −( , −(−()=)= b) Obtenga un autómata finito determinista equivalente. Tabla de transición Estado Entradas a {A} {A,B,C,D} {B} {C,D} {ɸ} {C} {D} {D} {A,B,C,D}={E} {A,B,C,D} {B,D}={F} {D} {C,D}={G} {C,D} {ɸ} {ɸ}
b {ɸ} {ɸ} {ɸ} {ɸ} {B,D} {ɸ} {B,D} {ɸ}
GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO O DE CONTEXTO LIBRE (GCL) Las expresiones regulares y los autómatas finitos nos proporcionan dos medios para especificar o definir lenguajes. Las expresiones regulares nos proporcionan una plantilla o patrón para las cadenas de lenguaje. Igualmente, 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. También se podría interpretar un autómata como un generador de cadenas del lenguaje, según se plantea a continuación. Un símbolo se genera al recorrer el camino 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.
(∗, ∗)
Por ejemplo: Considere el siguiente Diagrama de Transición.
→→ →→ →→ →
20 Universidad Autónoma del Estado de México | 2010-B
→→ | →→ ||
Autómatas y Lenguajes Formales
Facultad de Ingeniería
Estas expresiones pueden ser consideradas como reglas de sustitución para la generación de cadenas. El símbolo que se encuentra a la izquierda de la flecha puede sustituir por la cadena de la derecha. Por ejemplo: La cadena Sea la cadena
⟹ ⟹ ⟹ ⟹ ⟹ ⟹ ⟹ ⟹ ⟹
se puede generar empezando por S.
, derívela a partir de las reglas de sustitución anteriores.
Observe que en este modelo se han introducido una colección de nuevos símbolos para representar las porciones de cadena que no han sido generados. Cuando las cadenas han sido completamente generadas, estarán formadas en su totalidad por el símbolo del alfabeto Σ, pero antes de llegar a esta se obtendrán cadenas formadas por símbolos del alfabeto y por nuevos símbolos. Los nuevos símbolos se llaman no terminales y se representan por letras mayúsculas que indican que deben ser sustituidos por símbolos de alfabeto 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. Una gramática regular G es una 4-tupla, , donde Σ es un alfabeto, N es un conjunto de símbolos no terminales, S es un no terminal llamado símbolo inicial y P es un conjunto de reglas de sustitución llamadas producciones, y que son de la forma , donde A N y w es una cadena sobre que satisface lo siguiente:
⟶ ∈
= Σ , , ,
Σ∪
1. W contiene un no terminal como máximo. 2. Si w contiene un no terminal, entonces es el símbolo que está en el extremo derecho de w.
⟶ Σ =, = ,,, = = ⟶⟶⟶||| Ejemplo:
,
,
,
*Nota: Todas las gramáticas regulares son libres de contexto, pero no todas las gramáticas libres de contexto son
regulares. El lenguaje generado por la gramática regular G se denota por L (G).
Σ== , , == ⟶ ⟶ || ()= ()∗( +)
Ejemplo 1: Considere la Gramática G siguiente:
a) Defina el lenguaje generado por G.
21 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
⟹ ⟹ ⟹ ⟹ Σ == , ==⟶ |
Facultad de Ingeniería
b) Genere una cadena a partir de esa Gramática que pertenece a L (G).
Ejemplo 2: Sea el lenguaje representado por la expresión regular
∗
defina una gramática para este lenguaje.
Recordemos que en nuestra definición de Gramáticas Regulares se requiere que el lado derecho de las producciones contenga cuando mucho un no terminal. Este requerimiento restringe en gran medida la manera en que se puede formar las producciones y en consecuencia, restringe las clases de lenguajes que se pueden especificar. Suponga que se permite que las producciones puedan tener 0, 1 o mas no terminales que aparezcan en cualquier lugar del lado derecho de las mismas.
⟶ | = ⟶⟶ ||||
Ejemplo: Considere la gramática:
Es una gramática de este tipo. Una gramática independiente del contexto esta formado por 4 elementos Σ = Alfabeto de conjunto de
= Σ , , ,
terminales. N = Variables o no terminales. S = Es un no terminal llamado símbolo inicial P = Conjunto de reglas de sustitución llamadas producciones. El lenguaje generado por la gramática independiente del contexto se denota por L (G) y se llama lenguaje independiente del contexto.
→ |
Ejemplo: Considere la gramática independiente del contexto dada por: a) Diga si es una gramática regular. No es gramática regular b) Diga que lenguaje genera. Acepta la cadena vacía, el numero de x es igual al número de y, siempre iniciará con x. c) Genere si es posible la cadena a partir de esta gramática. Xyxyxy no es valida d) Proponga una cadena valida y derívela a partir de G.
⟹ ⟹ ⟹ ⟹ ⟹
22 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
A veces, es útil realizar una grafica de la derivación, que indique de que manera ha contribuido cada no terminal a formar la cadena final de símbolos terminales. Tal gráfica se llama árbol de derivación o árbol de análisis. *Árbol de la gramática anterior.
→ +| −| + ∗+()| ⟹ + ⟹ + + ⟹ + + ⟹ + + ⟹ + + Ejemplo 1: Sea la gramática independiente del contexto. -Derive la cadena
y construya su árbol de derivación.
∗ − + ∗⟹− +⟹ ⟹+∗+−⟹ + ⟹ + ⟹ + ⟹ + ⟹ + ∗ ⟹ + − ⟹ + Ejemplo 2: Suponga que tiene la cadena
. Derive esta cadena a partir de G.
Una gramática se dice ambigua cuando hay dos o más arboles de derivación distinta para la misma cadena. 23 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
< ó >⟶< (<ó >ó|<>)<óó>>| (< ó >)< ó > (ó1)(ó2) ( ); ( ); Ejemplo: Considere la gramática dada por las siguientes producciones. Considere la instrucción:
O esta instrucción es equivalente a: If (expresión1) If (expresión2) F (); Else: G ();
Derive en dos formas distintas esta instrucción:
Modula 2.
< ó >⟶> ( < ó )| < ó > << > < > | ó > Forma 1: IF A1 THEN IF A2 THEN S1 END ELSE S2 END IF A1 THEN IF A2 THEN S1 END ELSE S2 END
Forma 2: IF A1 THEN IF A2 THEN S1 ELSE S2 END END IF A1 THEN IF A2 THEN S1 ELSE S2 END END
24 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
La ambigüedad es una característica que es recomendable eliminar de una gramática así como otras características como la creación de árboles de derivación casi inconteniblemente tupidos (anchos) como ocurre en el s iguiente caso.
⟶ |
Ejemplo: Sea la gramática independiente del contexto.
O inútilmente profundos y delgados como es:
⟶⟶ ⟶⟶ ⟶ |
Ejemplo: Sea la gramática independiente del contexto.
Es recomendable establecer restringciones necesarias para que las producciones se formen de manera que él árbol de derivación resultante no sea necesariamente complejo o inútilmente sencillo. A continuación se analizarán algunas formas de mejorar una gramática sin cambiar el lenguaje resultante: Primero, al eliminar ciertos tipos de producciones con las que sería difícil trabajar y luego, al estandarizar las producciones de modo que todas tengan una cierta “forma normal”.
SIMPLIFICACIÓN DE GRAMÁTICAS Para simplificar una gramática se debe realizar las siguientes acciones. 1. Eliminar los símbolos inútiles: Las variables o símbolos o terminales que no aparecen en ninguna derivación de una cadena terminal que parta del símbolo inicial. 2. Eliminar las producciones épsilon ε: Las que tienen la forma: Para alguna variable A. 3. Eliminar las producciones unitarias: Las que son de la forma. Para las variables A y B.
⟶ ⟶
25 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
ELIMINACIÓN DE SÍMBOLOS INÚTILES
=Σ,,,
Decimos que un símbolo X es útil para una gramática si existe alguna derivación de la forma. , donde Note que X debe estar en N o en y la forma sentencial puede ser la primera o la ultima de la derivación. Nuestro método para eliminar los símbolos inútiles empieza por identificar los dos casos que un símbolo tiene que poder hacer para ser útil: 1. Decimos que X es generador si para alguna cadena terminal w. Note que todo símbolo terminal es generador, ya que w puede ser ese mismo terminal que se deriva en cero pasos. 2. Decimos que X es alcanzable si existe una derivación para algún y .
∗ ⇒∗ ⇒
Σ∗Σ
⇒∗
⟶⟶ | , , , ⟶⟶ ⟶ Ejemplo: Considere la gramática.
∗ ⇒
1. Símbolos generadores:
Entonces:
= Σ , , , Σ
Sea una gramática. Para calcular los símbolos generadores de G, llevamos a cabo la siguiente instrucción: Base: Todo símbolo es generador puesto que se genera a si mismo. , y que se sabe de todo símbolo de es generador. Entonces Paso inductivo: Suponga que existe una producción A es generadora. Note que esta regla incluye el caso en el que ; todas las variables que tienen ε como cuerpo de producción son generadoras.
⟶⟶ | ,,,
⟶ =
Ejemplo: Considere la gramática:
Generadores:
⟶⟶| | ⟶⟶ || ,,,,,,
Ejemplo 2: Sea la gramática independiente del contexto.
Elimine símbolos no generables: Generadores=
⟶⟶| ⟶⟶ ||
26 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
Consideremos ahora el algoritmo inductivo mediante el cual encontramos al conjunto de símbolos alcanzables de la gramática G. Base: S es alcanzable. Pase inductivo: Supongamos que hemos descubierto que alguna variable A es alcanzable. Entonces, para todas las producciones cuya cabeza es A, todos los símbolos de los cuerpos de dichas producciones son también alcanzables.
→→| Ejemplo 1:
→→| | →→ || →→| | → || Ejemplo 2:
Alcanzables: {S, A, a, B, b}
Alcanzables: {S, a} Generadores: {a, b, S, A}
→→
→→| →→ ||
Generadores: {a, b, d, S, B, C, A}
ELIMINACIÓN DE PRODUCCIONES ÉPSILON Las producciones ε aunque convenientes, en muchos problemas de diseño de gramáticas no son esenciales. Por supuesto, sino existe ninguna producción cuyo cuerpo sea ε, es imposible generar la cadena vacía como parte del lenguaje. Si el lenguaje L tiene una gramática independiente del contexto tiene una gramática independiente del contexto sin producciones ε. Comenzaremos descubriendo que variables son “anulables”. Sea G una gramática independiente del contexto. Podemos encontrar todos los símbolos anulables de G mediante el algoritmo iterativo que se describe a continuación. es una producción de G. A es anulable. Base: Si , en la que todas son anulables, B es anulable. Note que Paso inductivo: Si existe una producción todo debe ser una variable anulable, por lo que solo tenemos que considerar producciones en cuyo cuerpo solo aparecen variables. A continuación se da la construcción de una gramática sin producciones ε:
−
→
→ , , … ,
27 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
= Σ , , , → , , … , 2 =
Sea G una gramática independiente del contexto. Se determinan todos los símbolos anulables de G. se construye una gramática nueva cuyo conjunto de producciones P, se determina como sigue: Para cada producción , donde K es mayor o igual a 1, supongamos que m, de los , son símbolos anulables. La nueva gramática G, tendrá versiones de esta producción, donde los anulables están presentes o no en todas las combinaciones posibles. Hay una excepción, si , es decir, si todos los símbolos son anulables, no incluimos el caso en el que todas las están ausentes.
→→ | → |
Ejemplo 1: Considere la gramática. Anulables: {A, B, S}
→→ |||| → ||
Ejemplo 2: Considere la gramática independiente del contexto. a)Eliminar las producciones ε. Anulables= {A}
→→ |
→→ ||
ELIMINACIÓN DE PRODUCCIONES UNITARIAS
→
Una producción unitaria es de la forma donde tanto A como B son no terminales o variables. Estas producciones pueden ser útiles, sin embargo, introducen pasos adicionales en las derivaciones que técnicamente no tendrían porque aparecer. Para eliminar producciones unitarias se deben encontrar primero todos los pares de variables A y B, tales que usando una secuencia que sólo hace uso de producciones unitarias. Una vez que hemos determinado todos estos pares, podemos sustituir cualquier secuencia de pasos de derivación en los que con una producción que aplique directamente a partir de A la producción no unitaria ; es decir, . Para empezar, veamos la obtención por inducción de los pares (A, B) tales que usando solo producciones unitarias. Llamamos a este tipo de pares par unitario. es un par unitario para todo variable A. Base: Paso inductivo: Supongamos que hemos determinado que es un par unitario y puede ser sustituido por es una producción, donde es una variable. Entonces es un par unitario.
⟹,→ ⟹ ⟹ →⋯ ⟹ ⇒∗ (,) ( → ) →→||()|||∅|1 →→ || ∗+
Ejemplo 2: Considere la gramática.
(,(, ))(,) (, )(, )(,)
⇒∗
,( ,)
Pares unitarios:
28 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
= Σ , , ,
Facultad de Ingeniería
1 = Σ,,,1 → → .
Para eliminar las producciones unitarias, hacemos lo siguiente, duda una gramática independiente del contexto , construiremos la gramática independiente del contexto de la siguiente forma: 1. Encontramos todos los pares unitarios de . 2. Para cada par unitario , añadimos a todas las producciones , donde es una producción no unitaria de , Note que es posible que , de esa forma, contiene todas las producciones no unitarias de
(, ) 1 = 1
→→||||||||∅∅||11|() →→ ||||||||∅∅||11||(())|| ∗|∗ + →→ |||| →→
Ejemplo: Del ejemplo anterior, y dados estos pasos, la nueva gramática independiente del contexto quedaría así:
Ejemplo 2: Sea la gramática.
Aplique los algoritmos para eliminar símbolos inútiles, producciones ε y producciones unitarias para simplificar esta gramática. Aplicar: 1. Eliminar producciones ε. 2. Eliminar producciones unitarias. 3. Eliminar producciones inútiles. 1. Eliminar producciones ε. Anulables = {A} La nueva gramática sería.
→→ ||| →→ | →→ | → |
Ejemplo 3: Sea la gramática.
1. Eliminar producciones ε. Anulables = {A, B} La nueva gramática sería.
→→ ||||
(,) →→|| →→ |
2. Eliminar producciones unitarias. es par unitario. La nueva gramática sería.
2. Eliminar producciones unitarias. No tiene.
29 Universidad Autónoma del Estado de México | 2010-B
3. Eliminar producciones inútiles. Generadores= {a, d, S, B, A, D} Alcanzables= {S, a, A, B} La nueva gramática sería.
→→ || → |
3. Eliminar producciones inútiles. Generadores= {a, b, S, B} Alcanzables= {S, a, B, b} La nueva gramática sería.
→→| ||
Autómatas y Lenguajes Formales
Facultad de Ingeniería
FORMA NORMAL DE CHOMSKY Para completar el estudio de las simplificaciones gramaticales, veremos que todo lenguaje independiente del contexto no vacía sin ε tiene una gramática G en la que todas las producciones tienen una de las formas siguientes: 1. , donde son variables o no terminales. 2. , donde es una variable y es un terminal. Se dice que esta gramática esta en forma normal de Chomsky (FNC). Para poner una gramática en FNC, requerimos una gramática que no contenga producciones ε, ni producciones unitarias, ni símbolos inútiles. Toda producción de esta gramática tiene la forma , que ya está en forma permitida para la forma normal del Chomsky o tiene un cuerpo de longitud de 2 o más. Nuestras tareas son: a) Conseguir que en todos los cuerpos de longitud 2 o más solo aparezcan variables. b) Descomponer los cuerpos de longitud 3 o más en una cascada de producciones en cuyos cuerpos solo aparezcan dos variables. La construcción para a) es como sigue: Para cada símbolo terminal que aparezca en un cuerpo de longitud dos o más, creamos una nueva variable, digamos . Esta variable tiene una sola producción . Ahora usamos en lugar de siempre que aparezca en un cuerpo de longitud mayor o igual a dos. La construcción para b) es como sigue: Debemos descomponer las producciones de la forma con , en un grupo de producciones con dos variables en cada cuerpo. Introducimos menos dos variables nuevas, , se reemplaza la producción original por menos una producción.
→→ ,
→
→ → … ≥ 3 … → , → …, → , →
→→ || → | → →→ | | → | Ejemplo 1: Sea la gramática.
Sustituir
, solo donde este acompañado.
→→
Ahora la gramática tiene producciones de la forma:
→→ → ℎ →→ →→ 30 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
→→ | →→ ||| →→ ℎ|
Facultad de Ingeniería
Ejemplo 2: Sea la GIC dada por las producciones.
Pasar a la forma normal de Chomsky. 1. Eliminar producciones ε. 2. Eliminar producciones unitarias. No tiene
((,,))(,) ((,,)) →→| ℎ| →→ || →→ ℎℎ|
Es par unitario La nueva gramática sería.
→→ →→ →→ → ℎ →→ | ℎ| →→ ||
Elementos que serán sustituidos.
Nueva gramática.
→→ →→ →
→→ →→ →
Forma normal de Chomsky.
→→ →→ →
→→ →→ → ℎ
31 Universidad Autónoma del Estado de México | 2010-B
3. Eliminar producciones inútiles. Generadores= {a, b, c, d, e, f, g, h, S, A, B, C, D, E} Alcanzables= {S, C, B, a, g, h, A, b, d, e, f, c} La nueva gramática sería.
→→| ℎ| →→ ||
Autómatas y Lenguajes Formales
→→ | →→ |||
Facultad de Ingeniería
Ejemplo 3: Sea la gramática independiente del contexto.
Obtener la forma normal de Chomsky. 1. Eliminar producciones ε. 2. Eliminar producciones unitarias. Anulables = {A, D} es par unitario. La nueva gramática sería. La nueva gramática sería.
→→ | | | | | | →→ ||||
(,)
→→ | | | | | | | →→ ||||
→→ →→ | | | | | | | →→ | | | |
3. Eliminar producciones inútiles. Generadores= {S, A, C, D, a, b} Alcanzables= {S, A, C, D, a, b} La nueva gramática sería.
→→ | | | | | | | →→ || ||
Elementos que serán sustituidos.
→→ →→ →
→→ →→ →→ →→ →→ → → → → → → → → →
Forma normal de Chomsky.
32 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
AUTÓMATA DE PILA Sea G una gramática independiente del contexto. Desearíamos construir un autómata no determinista que acepte a L (G). El autómata que construiremos debería poder verificar que todas las cadenas de L (G) son derivables. La idea principal es construir un autómata que pueda realizar una derivación por la izquierda para cualquier cadena del lenguaje. Este autómata se llama autómata de pila. Un autómata de pila se comporta de forma similar a como lo hacen los autómatas finitos. En todo momento se encuentra en un estado y el cambio de estado depende del estado actual y de una información adicional. En el caso de los autómatas finitos la información adicional consiste en el símbolo de entrada actual. En el caso de los autómatas de pila se incluyen del símbolo de entrada actual y el símbolo que está en el tope de la pila. Además de cambiar de estado el autómata de pila cambia también el tope de la pila. Un autómata de pila es una séptupla , donde Es un conjunto finito de estados. Es un alfabeto de entrada Es un alfabeto llamado alfabeto de la pila. Es una regla de transición. Y es el estado inicial Es un subconjunto de y es el conjunto de estados finales o de aceptación. Y es el símbolo inicial de la pila. Una regla de transición para obtener el siguiente estado y la acción a realizar sobre la pila, debe conocer el estado actual, el símbolo de entrada actual y el tope actual de la pila. Por consiguiente se define por medio de ternas , donde es un estado de , es un símbolo de y (lo que hay en la pila). El resultado de aplicar a dicha terna es una colección de pares , donde y es el estado siguiente y y es la cadena que se introducirá en la pila en lugar del símbolo (gama minúscula) que estaban antes ahí. Ya que estamos definiendo un autómata de pila no determinista, cabe esperar que ∆ (delta) no tiene porque ser una función. Por tanto, si aplicamos ∆ a la terna se obtiene el conjunto del cual se elige de forma no determinista uno de los pares, de manera que el autómata de pila cambia para reflejar dicha elección. Observe que, puesto que los pares resultantes pertenecen a se puede tener que de se obtenga . Esto indica que el estado siguiente es y que el símbolo se eliminó del tope de la pila o se desapila. No es posible ningún movimiento si la pila está vacía, por esta razón se supone que inicialmente la pila contiene algún símbolo que dé el símbolo inicial de pila. Por otro lado, un movimiento tal como indica que el autómata de pila puede cambiar a un estado y apilar una sin consumir ningún símbolo de la entrada. Observe que si no es posible ningún movimiento desde el estado con él símbolo de entrada , ni con el símbolo de entrada . En este caso, el autómata de pila se detendrá.
= ,Σ,Γ,Δ,s,F,z
Σ ΓΔ sFϵQ ⊆ zϵΓ Δ (, , γ ) ∇(,) Σ∪ Γ Γ∗ Δ γ (,,) (, ), (,), (,) ∗ Γ∗ Γ Δ(, , ) (,) )= Δ(, , ( , ) Δ(,,γ) = ∇ 33 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
Ejemplo 1: Suponga que queremos construir un autómata de pila que acepte el lenguaje cantidad de unos que de ceros}. L no es lenguaje regular.
Δ(Δ(,,01,,)=)= ((,,01)) Δ(Δ(,,00,,01)=)=((,,00)) Δ(Δ(,,11,,10)=)= ((,,1)1) Δ(,,)= (, ) Δ(Δ(,,,,)=)=((,,,)) Δ(Δ(,,,,)=)= ((,,)) Δ(Δ(,,,,)=)= ((,,)) Δ(Δ(,,,,)=)= ((,,)) (⊢(,,,,))⊢ (,,) ⊢(⊢ (,,,,)) (⊢(,, )⊢ ( , , ) , , ) ⊢(⊢ (,,,,)) ⊢⊢ ((,,,,)) ⊢ (,,)
Ejemplo 2: Construya un autómata de pila, dada la expresión
= 0, 1∗/
.
Derive la cadena abb y diga si es válida o invalida.
Como ya no hay transición de q4, decimos que la cadena es inválida. Deriva la cadena aabbbb y diga si es válida o invalida.
Como se terminó de derivar la cadena en el estado q0, dado que hay transición. Decimos que la cadena es válida
Δ(Δ(,,,,)=)= ((,,)) Δ(Δ(,,,,)=)= ((,,))
Ejemplo 3: Obtenga un AP para el siguiente lenguaje
≥ 0 con
.
34 Universidad Autónoma del Estado de México | 2010-B
contiene la misma
Autómatas y Lenguajes Formales
(⊢(,,,,))⊢ (,,) ⊢(⊢ (,,,,)) ⊢ (,,) ≥ 1 Δ(Δ(,,,,)=)= ((,,)) Δ(Δ(,,,,)=)= ((,, )) Δ(,,)= (, ) (⊢(,, )⊢ ( , , ) , , ) ⊢(,,)
Facultad de Ingeniería
Realice una descripción instantánea de la cadena xxyy.
Se detiene, y la cadena es válida porque q1 es un estado de aceptación. Ejemplo 4: Obtenga un AP para el siguiente lenguaje
con
.
Realice una descripción instantánea de la cadena xxyxyy.
La cadena es inválida.
Descripción instantánea: Una descripción instantánea es una configuración del estado actual, del contenido de la pila y de
la entrada no leída.
(⊢(,0110,,10,))⊢ (,110,0) ⊢(⊢ (,,0,,1)) ⊢ (,,) (⊢(,111,,1,11))⊢ (,11,1) ⊢ (,,111) Ejemplo para cadena valida.
El autómata se detiene aquí.
Ejemplo para cadena invalida.
El autómata se detiene aquí y como no hay transición, la cadena no es válida.
35 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
Dada una gramática G, deseamos construir un AP que acepte L (G). Empezaremos por introducir en la pila el símbolo inicial de G. En cada una de las etapas posteriores realizaremos una de estas acciones. 1. Si el símbolo que está en el tope de la pila, es un no terminal A, lo sustituimos por el lado derecho de la producción para A, . 2. Si el símbolo del tope de la pila es un terminal y se corresponde con el siguiente símbolo de la entrada, lo desapilaremos de la pila. Estas acciones imitan una derivación por la izquierda para la cadena de entrada. Si se agota la cadena de entrada y en el tope de la pila se encuentra el símbolo inicial de la pila, aceptaremos la cadena puesto que es posible la derivación de la misma. Para definir el AP que acepte a L (G) sean:
→
Γ == ∪Σ∪ , , == = Σ,Δ(,Γ,,Δ,,F)=,S, z( ,) Δ Δ(Δ(,,,,)=)= ((,,))| → óΣ Δ(,,)= (, ) →= 00|, 11|, 2 Γ == ,0,1,2, Δ(=,,)= (,) Δ(Δ(,,0,,0)=)=((,,0)0), (,11), (, 2) Δ(Δ(,,12,,12)=)= ((,, )) Δ(,,)= (, ) (⊢(,2,,2)⊢,)(,,) (⊢(,020,,020,)⊢)(,,) ⊢⊢ ((,,2,,2)) ⊢(⊢(,,0220,0,00)0) ⊢ (,,) ⊢(⊢(,,200,,02)0) ⊢(⊢(,,,,))
, donde z es el símbolo inicial de la pila y es distinto de todos los símbolos de
∪Σ
.
y la regla de transición está compuesta por cuatro tipos de transiciones: , la cual corresponde con la introducción del símbolo inicial en la pila. para cada no terminal de N. para cada símbolo terminal de .
1. 2. 3. 4.
Ejemplo 1: Sea la gramática: L (G).
Para la cadena “2”.
Para la cadena “020”
36 Universidad Autónoma del Estado de México | 2010-B
(⊢(,121,,121,)⊢)(,,) ⊢(⊢(,,1221,1,11)1) ⊢(⊢(,,211,,12)1) ⊢(⊢(,,,,))
Para la cadena “101”
Autómatas y Lenguajes Formales Ejemplo 2: Sea la gramática
→ ||||
Facultad de Ingeniería
, construya un autómata de pila que acepte L (G) y obtenga las
Γ == ,, ,,, == Δ(Δ(,,,,)=)= ((,, )), (, ), (,), (,), (,) Δ(Δ(,,,,)=)= ((,,)) Δ(,,)= (, ) (⊢(,, )⊢ ( , , ) , , ) ⊢(⊢(,,, ,)) ⊢(⊢(,,, ) , ) ⊢(⊢(,,,,)) ⊢(⊢(,,,,)) ⊢(⊢(,,,,)) ⊢(⊢(,,,,)) →→ +|∗| Γ == ,, ,, == descripciones instantáneas para la cadena xxxyxx.
Para” xxxyxx”.
Ejemplo 3: Sea la gramática G dada por las siguientes producciones.
Construya un autómata de pila que acepte L (G).
Δ(Δ(,,,,)=)= ((,, )+), (, ) Δ(Δ(,,+,,+)=)=((,, )∗ ), (, ) Δ(Δ(,,∗,∗,)=)=((,,)) Δ(,,)= (, ) Para la cadena “a+a-a”
37 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
Facultad de Ingeniería
(⊢(,,+ +−,−,)⊢ +)(, + −, ) ⊢(⊢(,, ++ −,−, +) +) ⊢(⊢(,,+−,−,)+) ⊢(⊢(,,−,−,))
Q3 no es un estado de aceptación, por lo tanto la cadena es inválida.
MAQUINA DE TURING
= ,Σ, Γ, ,ᵬ,,
Σ Γ ᵬΓ Σ = Σ → QxΓxX (, ) (, ,)
Una maquina de Turing es una séptupla , donde: Es el conjunto finito de estados. Es el alfabeto de entrada. Es el alfabeto llamado alfabeto de la cinta. Y es el estado inicial. Y es el símbolo espacio en blanco. (y no está en ). Es un subconjunto de y es el conjunto de estados finales de aceptación. Es una función de transición . Esta definición se supone que el valor inicial de todas las celdas de la cinta es el símbolo espacio en blanco ( ). La función de transición transforma pares formados por el estado actual y los símbolos de la cinta en ternas de la forma , donde: = El estado siguiente. = Símbolo escrito en la cinta. = Es un movimiento de la cabeza de lectura-escritura, que puede ser , según el movimiento sea hacia la izquierda o hacia la derecha.
|( ᵬ||,|)=|ᵬ|(,,) | ᵬ||||ᵬ
ᵬ
Ejemplo 1: Si tenemos la cinta siguiente
(, )
Las configuraciones de una maquina de turing también se pueden conocer mediante descripciones instantáneas para representar una descripción instantánea. La primera representa una configuración como un par , donde es el estado actual, es la cadena de la cinta que precede a la celda sobre la que se encuentra de cabeza de entradasalida, es el símbolo de la cinta sobre el que se encuentra la cabeza de entrada-salida y es la cadena que halla continuación de la cabeza de entrada-salida.
∇ (,) ⊢ (,)
38 Universidad Autónoma del Estado de México | 2010-B
Autómatas y Lenguajes Formales
(, ∪) ()⊢ ()
Facultad de Ingeniería
… …
Otra notación alternativa viene dada por una cadena que representa a la configuración , es decir la cabeza de entrada-salida, se coloca sobre la celda que contiene y el estado actual es .
Σ == ,, Γ == ,,ᵬ (=,)= (,,) ((,, ᵬ)=)= ((,,ᵬ,,))
(⊢(,)⊢ ( , ) , ) ⊢(⊢(,,) ᵬ) ⊢(,)
Ejemplo 1: Considere la máquina de Turing definida mediante:
,
(, ) = (,,)
Ejemplo 2: Construya una maquina de Turing que analice una cadena sobre que reemplace todas las por y todas por y que termine con la cadena sobre el blanco final (el blanco que sigue a la o a la que este mas a la derecha en la cadena transformada).
MAQUINA DE TURING COMO ACEPTADOR DE LENGUAJES Una maquina de Turing se puede comportar como un aceptador de un lenguaje, dar la misma forma que lo hace un autómata finito o un autómata de pila.
∗ = ,, ,, … (⊢(,)⊢ ( , ) , ) ⊢⊢ ((,,) ) ⊢⊢ ((,,ᵬ) ᵬᵬ)
Ejemplo 1: Considere que se diseña una maquina de Turing que acepte el lenguaje regular
Σ ==((,,ᵬ)=)= ((,,ᵬ,,)) Γ == ,ᵬ, == = ᵬ
Derive la cadena aaaa.
39 Universidad Autónoma del Estado de México | 2010-B
.
Autómatas y Lenguajes Formales
≥ 1 ((,,)=)= ((,,,,)) ((,, )=)= ((,,,,)) ((,, )=)= ((,,,,)) ((,, )=)= ((,,,,)) ((,, ᵬ)=)=((,,ᵬ,,)) Ejemplo 2: Considere el lenguaje
Facultad de Ingeniería
.
MAQUINA DE TURING PARA REALIZAR CÁLCULOS
Σ = 0,1 0 010 01
(, )= +
Supongamos que tenemos y que representamos los enteros positivos mediante cadenas de 0, así, el entero positivo n estaría representado por . La función suma podría ser implementado mediante la transformación de en . Podríamos diseñar una maquina de Turing apropiada para calcular la función suma.
(, )= + | ᵬ|0|0|0|1|0|0| ᵬ| ((,, 1)=)= ((,,00,,)) ((,, ᵬ)=)= ((,,0ᵬ,,)) ((,, 0ᵬ)=)= ((,,ᵬ1,,)) (⊢(,000100)⊢ ( , 0 00100) , 0 00100) ⊢(⊢(,,0000000) 00100) ⊢(⊢(,,0000000) 00000ᵬ) ⊢(⊢(,,0000001ᵬ) 00001ᵬ) Ejemplo 1: 000+00= 2+3
40 Universidad Autónoma del Estado de México | 2010-B