NOTAS DE CLASE
TEORIA DE LA COMPUTACIÓN
Autora: Dra. Cecilia Poblete Ibaceta
Revisión Técnica: Ing. David Jiménez Mimila
TABLA DE CONTENIDOS
CONJUNTOS.... 3
RELACIONES Y FUNCIONES.... 10
GRAMÁTICAS.... 17
MÁQUINAS TEÓRICAS.... 34
AUTÓMATAS FINITOS DETERMINÍSTICOS.... 41
AUTÓMATAS FINITOS NO DETERMINÍSTICOS.... 50
AUTÓMATAS DE PILA.... 65
MÁQUINAS DE TURING.... 76
COMPUTABILIDAD.... 87
GRAFOS... 91
DEFINICIONES BÁSICAS:
1. CONJUNTO: Grupo de elementos bien definidos.
Caso: A = { a, e, i, o, u} conjunto definido por Enumeración A = { vocales} conjunto definido por Comprensión A = { x | x es vocal} conjunto definido por Notación Ejercicio: Defina otros 3 conjuntos, cada uno por los 3 tipos de definición.
2. CARDINALIDAD: Es el número de elementos de un conjunto y se denota por #, o si A es un conjunto, entonces su cardinalidad se representa por |A|
Caso: A = { a, e, i, o, u} # (A)= |A| = 5
Hay conjuntos que tienen un número infinito de elementos. Esta cardinalidad se denota por ∞1
Tal es el Caso de:
N = { Naturales } = { 1, 2, 3, 4, 5 ...} #(N) = ∞ Z = {Enteros} = { ... –3, -2, -1, 0, 1, 2, 3 ...}
Q = {Racionales} = { x / y | x, y son enteros, y distinto de 0}, = decimales con periodicidad} = {fracciones} I = {Irracionales} = {π, e ...} = {decimales sin periodicidad} R = {Reales} = R ∪ I
C = {Complejos} = { x + i y | x, y son Reales, i = √ -1}
3. CONJUNTO VACÍO: Conjunto que no tiene elementos. Se denota por φ o { }. Nótese que es conjunto = {φ} no es vacío, porque tiene un elemento que es el φ
.
La Cardinallidad del Conjunto Vacío es cero. # (φ) = 0 Caso: Conjunto de enteros que sean pares e impares a la vez. Ejercicio: Defina otros 3 conjuntos que sean vacíos.
4. PERTENENCIA: Característica de cada elemento miembro de un conjunto. El símbolo para denotar la pertenencia es ∈. Sólo los elementos pertenecen a los conjuntos. Cuando un elemento no pertenece a un conjunto dado, se utiliza el símbolo ∉
Caso: Si A = { a, e, o} entonces a ∈ A, e ∈ A y o ∈ A, pero j ∉ A
Ejercicio: Defina otros 3 conjuntos que no sean vacíos y encuentre las pertenencias.
5. UNIÓN: Es la agrupación de todos los elementos que pertenecen a varios conjuntos. El símbolo para denotar la Unión es ∪.
1
El Infinito es un concepto, no un número. Por esta razón, hay infinitos “más grandes” o “más pequeños”, que otros infinitos.
La notación: A ∪ B = {x | x ∈ A o x ∈ B} se lee como:
A unido con B es el conjunto formado por las x (cualquier elemento) tal que x pertenece a A o x pertenece a B o x pertenece a ambos a la vez. La operación o es inclusiva
Caso: Si A = { b, c, f, g} y B = { 1, 2, 3, c} entonces A ∪ B = { b, c, f, g, 1, 2, 3}
Ejercicio: Defina otros 3 conjuntos que no sean vacíos y encuentre las uniones entre ellos. Propiedades de la Unión:
Propiedad Conmutativa A ∪ B = B ∪ A
Propiedad Asociativa (A ∪ B) ∪ C = A ∪ (B ∪ C) Elemento Neutro para la Unión A ∪φ = A
Ejercicio: Para los 3 conjuntos definidos en el ejemplo anterior, compruebe las propiedades de la Unión.
Recuerde que:
Z = Z- ∪ { 0 } ∪ Z+ Enteros = Enteros Negativos, el Cero y Enteros Positivos
Q = Q- ∪ { 0 } ∪ Q+ Racionales = Racionales Negativos, el Cero y Racionales Positivos R = Q ∪ I Reales = Racionales e Irracionales
6. INTERSECCIÓN: Es el conjunto de todos los elementos que pertenecen a varios conjuntos a la vez. El símbolo para denotar la Intersección es ∩.
La notación: A ∩ B = {x | x ∈ A y x ∈ B} se lee como:
A intersectado con B es el conjunto formado por las x (cualquier elemento) tal que x pertenece a A y x pertenece a B.
Caso: Si A = { b, c, f, g} y B = { g, f, h, 1, 2} entonces A ∩ B = { g, f}
Ejercicio: Defina otros 3 conjuntos que no sean vacíos y encuentre las intersecciones entre ellos.
Propiedades de la Intersección:
Propiedad Conmutativa A ∩ B = B ∩ A
Propiedad Asociativa (A ∩ B) ∩ C = A ∩ (B ∩ C) El conjunto vacío es subconjunto de
cualquier conjunto
A ∩φ = φ
Ejercicio: Para los 3 conjuntos definidos en el ejemplo anterior, compruebe las propiedades de la Intersección.
7. OTRAS PROPIEDADES:
a) A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C) Propiedad Distributiva de la Unión sobre la Intersección
b) A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C) Propiedad Distributiva de la Intersección sobre la Unión
Ejercicio: Para los 3 conjuntos definidos en el ejemplo anterior, compruebe las propiedades de Distribución.
8. CONJUNTO UNIVERSO: Es el conjunto formado por “todos” los elementos, definido para un caso en particular. Se denota por el símbolo U o Ω
Caso: U = {letras} = {a, b, c, d ...y, z} Ejercicio: Defina 3 conjuntos Universo.
9. CONJUNTO COMPLEMENTO: Es el conjunto formado por los elementos que faltan para formar el Universo. El conjunto complemento se forma a partir de un conjunto Universo dado y de otro conjunto definido. Se denota por el nombre del conjunto definido acompañado con un apóstrofe o con una C de complemento.
Caso: Si U = {letras} y A = {vocales} entonces A’ = Ac = {consonantes}
Caso: Si U = {números naturales} y B = {naturales pares} entonces B’ = {naturales impares}
Ejercicio: Para los 3 conjuntos definidos en el ejemplo anterior, defina conjuntos particulares y encuentre sus Complementos.
Propiedades del Universo y del Complemento: a) A ∪ U = U b) A ∪ A’ = U c) A ∩ A’ = φ d) A ∩ U = A e) φ’ = U f) U’ = φ
g) (A ∪ B)’ = A’ ∩ B’ Ley de De Morgan. Se lee como: El Complemento de una Unión es la Intersección de los Complementos h) (A ∩ B)’ = A’ ∪ B’ Ley de De Morgan. Se lee como:
El Complemento de una Intersección es la Unión de los Complementos Ejercicio: Para los 3 conjuntos definidos en el ejemplo anterior, compruebe las propiedades del Universo y del Complemento.
10. Prioridades de las Operaciones: La operación de Complemento es la única que tiene prioridad sobre la Unión y la Intersección. Sólo los paréntesis rompen la prioridad. Si en una expresión no hay paréntesis las operaciones se realizan de izquierda a derecha, según cual se encuentre primero.
Esto significa que:
a). A ∩ B ∪ C es equivalente a (A ∩ B) ∪ C b). A ∪ B ∩ C es equivalente a (A ∪ B) ∩ C Caso: Si A = { b, c, 3, 4, g} , B = { 1, 2, 3, c} y C = { 1, b, 3} entonces: A ∩ B ∪ C = (A ∩ B) ∪ C = {3, c} ∪ { 1, b, 3} = {3, c, 1, b} Caso: Si A = { a, b, c, 3, 5, h} , B = { 1, 2, 3, 4, 5} y C = { 1, b, z, 3} entonces: A ∪ B ∩ C = (A ∪ B) ∩ C = { a, b, c, 3, 5, h, 1, 2, 4} ∩ { 1, b, z, 3} = { 1, b, 3}
11. SUBCONJUNTOS: Un conjunto es Subconjunto de otro conjunto, si todos los elementos del primero son elementos del segundo. Los subconjuntos se denotan por el símbolo ⊂
Caso: Si A = { a, b, c, g} , B = { a, b, c, g, 1, 2, 3} entonces A ⊂ B Propiedades de los Subconjuntos:
a) A ⊂ ∪ Cualquier conjunto es subconjunto del Universo b) A ⊂ A ∪ B
c) φ⊂ A El conjunto vacío es subconjunto de cualquier conjunto d) Si A ∩ B = A entonces A ⊂ B
11. CONJUNTO POTENCIA: Es el conjunto formado por todos los subconjuntos, incluyendo el conjunto vacío, que se pueden formar con los elementos de un conjunto. Caso: Si B = { a, b, c} entonces el conjunto potencia de B se denota por 2B o P(B).
P(B) = { φ, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c} }
El Conjunto Potencia de un conjunto dado B, tiene 2 #(B) elementos.
12. DIAGRAMAS DE VENN: son la representación gráfica de los conjuntos.
Caso: Si A = { a, b, c, d, e, f} , B = { b, d, f, h, i} y C = { a, b, c}, su representación en Diagramas de Venn es la siguiente:
d f e a b c d f h i b b a c A B C Agrupándolos, se obtiene: e d f h i b a c B A C
Donde se aprecian los elementos comunes en las intersecciones de los círculos que representan a cada conjunto.
Ejercicio: Encuentre las uniones, intersecciones, cardinalidades y conjuntos potencia utilizando los conjuntos del Caso anterior. Además indique un conjunto universo y encuentre los complementos de cada conjunto obtenido.
13. Producto Cartesiano: Dados dos conjuntos A y B, su Producto Cartesiano, representado por A x B, es el conjunto de todos los pares ordenados que tienen la forma (a, b), tal que a ∈ A y b ∈ B.
Si se trata del producto cartesiano de un conjunto consigo mismo, se escribe dicho producto con notación de potencias. A x A = A2. Cuando se tenga A3, se tratará del producto cartesiano de A2 x A (tripletas ordenadas), y así sucesivamente.
C2 = C x C = {(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3,1), (3, 2), (3, 3)} Ejercicio: Dados 2 conjuntos cualesquiera A y B, encontrar A x B, B x A , A2, A x B2
Bibliografía Recomendada para el Capítulo:
DEFINICIONES BÁSICAS:
1. RELACIÓN: Regla de correspondencia entre 2 conjuntos que genera pares ordenadas, de las cuales se cumple que el primer elemento del par pertenece al primer conjunto y el segundo elemento al segundo conjunto. En particular son de interés los pares ordenados generados por una regla de correspondencia entre un primer conjunto llamado Origen, hacia un segundo conjunto llamado Destino.
Caso: Sea R1 : x --> 2 * x, con x que pertenece a N. Cada elemento de N, se asocia con su par.
Entonces R1 de N en N = { (1, 2), (2, 4), (3, 6) ... } Caso: Sea R2 : x --> x + 3, con x que pertenece a N
Cada elemento de N se asocia consigo mismo más 3. Entonces R2 = {(1, 4), (2, 5), (3, 6) ... }
Ejercicio: Defina 3 relaciones e indique los pares resultantes.
2. DOMINIO, CODOMINIO Y RANGO: Son los tres conjuntos que participan en una relación. El Domino es donde se inicia la relación (Origen). El Codominio es el conjunto hacia donde llega la relación (Destino). Rango o Imagen es el conjunto del Codominio que participa en la relación y que está formado por los segundos elementos de cada par de la relación; en otras palabras, es el subconjunto del Codominio constituido por los elementos que han sido relacionados con el Dominio.
Caso: Sea R3 : x --> x * x, con x que pertenece a Z. Dominio = Z Codominio = Z Rango o Imagen = {0, 1, 4, 9, 16, 25 ...} Gráficamente: Z . . .-2 -1 0 1 2 . . Z . . 0 1 2 3 4 Rango o Imagen La relación de Z en Z es R3 = {... (-2, 4), (-1, 1), ( 0,0), (1, 1), (2, 4) ...}
Nótese que en este caso 2 elementos distintos, tienen una misma imagen, debido a que tanto los enteros negativos como los enteros positivos, se relacionan con su cuadrado que siempre es positivo.
3. FUNCIONES: Son relaciones especiales en que cada elemento del dominio tiene una y sola una imagen en el Codominio
Caso: Sean los conjuntos A = {1, 2 } y B = {2, 3 } y la relación de A en B R4 = {(1, 2), (1, 3), (2, 3)} Gráficamente: A 1 2 B 2 3
Esta relación de A en B no es función porque el elemento 1 no tiene una y sólo una imagen. De hecho el elemento 1 tienen dos imágenes, el elemento 2 y el elemento 3, ya que existen los pares (1,2) y (1,3).
Ejercicio: Defina 3 relaciones en las cuales no se tenga una única imagen para un elemento del conjunto Inicio.
Caso: Sean los conjuntos H = {a, b, c } y J = {1, 2} y la relación R5 = {(a, 1), (b, 2)} Esta relación de H en J no es función porque no se cumple que “... cada elemento del dominio ...”, debido a que el elemento c no tiene imagen definida.
Gráficamente: H a b c J 1 2
Ejercicio: Defina 3 relaciones en las cuales no se tenga que todo el dominio participe en ellas.
Caso: Sean los conjuntos X = {i, j, k} y W = {a, b, c, d} y la relación de X en Y R6 = {(i, a), (j, b), (k, c)} Gráficamente: X i j k W a b c d
Esta relación sí es función, donde: Dominio = {i, j, k}
Codominio = {a, b, c, d} Rango = {a, b, c}
CLASIFICACIÓN DE FUNCIONES
1. FUNCIONES UNO A UNO O INYECTIVAS: son las funciones en las que cada elemento del rango es imagen de sólo un elemento del dominio
Caso: Sean los conjuntos A = {1, 2, 3} y B = {4, 5, 6} y la función R7 = {(1, 4), (2,4), (3, 5)}
Esta función de A en B no es Inyectiva porque el elemento 4 es imagen de 1 y de 2 a la vez. Gráficamente: A 1 2 3 B 4 5 6
Caso: Con los mismos conjuntos del Caso anterior y la función
R8 = {(1, 4), (2, 6), (3, 5)}, se tiene una función inyectiva. Gráficamente: A 1 2 3 B 4 5 6
2. FUNCIONES SOBRE O SUPRAYECTIVAS: Son aquellas funciones donde el codominio coincide con el rango.
Caso: Sean los conjuntos A = {1, 2, 3} y B = {a, b, c} y la relación R9 = {(1, a), (2, b), (3, b)} Gráficamente: A 1 2 3 B a b c
Esta función de A en B no es suprayectiva porque el Codominio = {a, b, c}, mientras que el Rango = {a, b}, ya que el elemento c no es imagen.
Caso: Sean los conjuntos A = {1, 2, 3} y B = {a, b} y la relación R10 = {(1, a), (2, b), (3, b)} Gráficamente: A 1 2 3 B a b
Esta función de A en B sí es suprayectiva ya que el Codominio y el Rango son iguales. Ejercicio: Definir 3 funciones suprayectivas y una que no lo sea.
3. FUNCIONES BIYECTIVAS: son las funciones que son Inyectivas y Suprayectivas a la vez.
Caso: Sean los conjuntos A = {a, e, i} y B = {1, 2, 3} y la relación R11 = {(1, i), (2, e), (3, a)} Gráficamente: A a e i B 1 2 3
Se trata de una función de B en A que es biyectiva.
Nótese que en una función Biyectiva, la cardinalidad del Dominio debe ser igual a la cardinalidad del Codominio, que a su vez, coincide con el Rango.
Ejercicio: Definir:
a) 3 funciones biyectivas.
b) Una función inyectiva y no suprayectiva. c) Una función suprayectiva y no inyectiva d) Una función no inyectiva y no suprayectiva
Bibliografía Recomendada para el Capítulo:
Un lenguaje es un conjunto de palabras y métodos para combinar palabras, que es usado y entendido por un extenso grupo de personas2
Mientras un Lenguaje Natural como español, inglés, francés, etc. es primero hablado y luego estructurado gramaticalmente, un Lenguaje de Programación, primero debe ser definido en sus partes que lo componen y posteriormente cada elemento (oraciones, frases, etc.) debe ser revisado en su sintaxis, antes de ser o no aceptado por dicho lenguaje.
Una gramática o gramática estructurada por frases, se define como la cuádrupla siguiente:
1. T = es el conjunto finito de elementos Terminales, siendo éstos aquellos símbolos que están autodefinidos.
2. NT = es el conjunto finito de símbolos No Terminales, siendo éstos aquellos símbolos que se definen en función de otros No Terminales o de Terminales, o de una combinación de ambos
3. S = es el elemento Inicial (Start), generalmente un No Terminal desde donde se comienza el análisis de la cadena que se quiere comprobar si es generada o no por la gramática.
4. P = es el conjunto finito de Producciones, donde se establece una relación A Æß, entre No Terminales y Terminales.
Por lo tanto G = { T, NT, S, P}
Una gramática genera una cadena si al empezar desde el símbolo de inicio (S), se pueden aplicar las producciones (P) de modo que se llegue a solamente símbolos terminales (T). Entonces se dice que tal cadena es generada por la gramática.
Las producciones de una gramática pueden ser descritas en función de:
a) Notación BNF (Backus Naur Form), donde los No Terminales se encierran entre < y >, y están definidos después del símbolo ::= Una vertical ( | ) indica una opción diferente a la que la precede, correspondiendo a un operador o (or).
Caso: la notación <V0> ::= s t <V1> | s t <V0> <V1> indica que el No Terminal V0 es una Terminal s, seguida de una Terminal t, seguida de otro No Terminal V1; o V0 es una Terminal s, seguida de una Terminal t, seguida del No Terminal V0, seguida del No Terminal V1. V1 es un No Terminal que también debe estar definido3. b) Gráfica o Diagrama de Sintaxis donde los Terminales están encerrados en Círculos y
los No Terminales están encerrados en Cuadros. Las flechas indican el sentido de la ruta que debe seguirse para analizar el tipo de cadenas generadas.
2
Webster´s New Collegiate Dictionary
3
Caso: la notación <V0> ::= s t <V1> | s t <V0> <V1> dada en BNF se representa gráficamente por: <V0> V1 s t t V0 V1 s
c) Reglas de Escritura donde las diferentes opciones para definir los No Terminales, están descritas de forma separada. Una flecha indica que empieza la definición.
Caso: la notación <V0> ::= s t <V1> | s t <V0> <V1> dada en BNF se representa a través de reglas de escritura como:
<V0> Æ s t <V1> <V0> Æ s t <V0> <V1>
Una Gramática Regular es aquella cuyas producciones son de la forma A Æ ß y cumplen con:
|A| <= |ß| la longitud de A es menor o igual a la longitud de ß donde A consiste solamente de un No Terminal y
ß es de la forma aB (terminal seguido de un no terminal), o de la forma a (terminal),
o de la cadena vacía.
Una Gramática Regular produce un Lenguaje Regular. Un lenguaje L es Regular si y sólo si existe un Autómata Finito que acepta únicamente las mismas cadenas que el lenguaje L. La importancia de las gramáticas regulares radica en que permiten representar los diagramas de sintaxis de los lenguajes de programación.
Caso: Sea la gramática G1 definida por:
T = { x, y, z}, NT = {V0, V1}, S = V0 y las Producciones: V0 Æ x V0 V0 Æ y V1 V1 Æ y V1 V1 Æ z
Nótese que estas producciones están escritas de modo que la gramática es regular. Estas producciones se representan en BNF (Backus Naur Form), de la siguiente manera:
<V0> :: = x <V0> | y <V1> <V1> :: = y <V1> | z
Nótese que en BNF los Terminales se escriben tal como son, los No Terminales están encerrados entre < y >, y la barra vertical | significa otra opción y se lee como o
Estas producciones también pueden representarse como Diagramas de Sintaxis (en forma gráfica). Cuando se puede dibujar un Diagrama de Sintaxis, entonces la gramática es regular.
x y z
<V0>
El lenguaje producido por esta gramática es de la forma:
x
ny
mz
, con n >= 0 y m > 0Donde x n significa x x x x x ....x n veces. Esto no es la representación de un producto, sino la notación para la concatenación de x con x, n veces.
Nótese que la notación
x
ny
ncon n >= 1
implica que debe haber el mismo número n de letras x y de letras y, y esto sólo puede ser verificado si se cuenta con algún tipo de proceso o de almacenamiento que permita "contar" o "recordar" cuántas letras x se tenían antes de contar las letras y.Un Árbol de Derivación o Árbol de Sintaxis es una estructura que sirve para comprobar si una oración dada pertenece o no al lenguaje definido por la Gramática. Este árbol permite separar la cadena en sus componentes (parsear) de manera que, partiendo del Símbolo Inicial, se apliquen sucesivamente las Producciones hasta que se llegue a establecer una Producción válida.
Caso: Se analizará el Caso de la cadena
x
y
2z,
para ver si esta cadena es o no aceptada por la gramática G1, definida antes.
xy
2z = xyyz
V0 = x
<V0>
V0
=
x
y
<V1>
V0 = x y
y <V1>
V0 = x y y
z
Por lo tanto la cadena sí es aceptada por G1.
Caso: Obtener los diagramas de sintaxis para obtener cadenas del tipo
x
n con n >= 1. Para mayor facilidad, considere que es necesario tener en cuenta los valores de los exponentesx
Los valores posibles de n son 1, 2, 3, 4 ....Cuando X se encuentra sobre la flecha principal, como en este caso,
se “ve” la obligatoriedad de X; esto es, por lo menos debe
de haber una.
Ejemplo 1: Obtener los diagramas de sintaxis para obtener cadenas del tipo indicado. Para mayor facilidad, considere que es necesario tener en cuenta los valores de los exponentes (n, m)
a.
(a
2)
n n >= 1b.
x
ny
m n >= 0 y m>= 1 c.(a b
2)
m m >= 1Caso: Vea la diferencia entre: a.
y
x Ambos diagramas muestran que hay dos ciclos, uno para las X y otro para las Y. En
el primero la aparición de las X (a lo menos una) es obligatoria mientras que en
el segundo, es opcional (puede no haber). En ambos, la aparición de las Y
(a lo menos una), es obligatoria. y y x b.
Ejemplo 2: Explique la diferencia entre: a. y y x y y y x b.
Ejemplo 4: ¿Cuál es la diferencia entre
a
nb
n con n >= 1 ya
nb
m con n, m >= 1 ? Establezca cadenas válidas para cada caso y realice el diagrama de sintaxis para el segundo caso, para su mayor comprensión.Ejemplo 5: ¿Cuál es la diferencia entre
a
nb
m con n, m >= 1 ya
nb
m con n >= 1, m >= 0 ? Establezca cadenas válidas para cada caso y realice el diagrama de sintaxis para mayor comprensión.Caso: Sea la expresión
x
ny
m con n >= 2 y m >= 2 y par Para los valores de los exponentes, se tiene:n = 2, 3, 4, 5 ... m = 2, 4, 6, 8 ...
Su diagrama de sintaxis es el siguiente:
x y y
x
Una forma fácil de obtener las producciones, es separar el diagrama en partes donde se identifiquen los ciclos. A estas partes se les pondrá el nombre de los No Terminales que se requieran.
Se indicará el nombre de todo el diagrama como <V0>, por lo que:
x y y
x
V1 V2 V3
<V0> :: = <V1> <V2> <V3> <V0> está formado por <V1>, seguido por <V2>, seguido por <V3>
<V1> :: = x <V1> es x
<V2> ::= x | x <V2> <V2> es x o es x seguida de <V2>. Nótese la recursividad en la definición, cuyo punto de salida siempre es x
<V3> ::= yy | yy <V3> <V3> es yy o es yy seguida de <V3>. Nótese la recursividad en la definición, cuyo punto de salida siempre es yy
Nótese que la <V3> no está definido de manera regular. Otro modo de escribir esta producción, para que se presente como regular es:
<V4> ::= y | y <V3> <V4> es y, o es y seguida de <V3>. Nótese la definición circular entre <V3> y <V4>, donde la salida es y indicada en <V4>
Ejemplo 6: Sea la gramática G2 definida por: T = {a}, NT = {V0}, S = V0
y las Producciones: V0 Æ a a V0 V0 Æ a a
Nótese que esta gramática, no está escrita como gramática regular. Pero como hay un diagrama de sintaxis que la representa, entonces la gramática puede ser escrita como regular, con las producciones siguientes:
V0 Æ a V1 V1 Æ a V1 Æ a V0
El Diagrama de Sintaxis correspondiente es:
a a
<V0>
a) Describa las producciones en BNF
b) Describa el lenguaje producido por esta gramática
c) Dibuje un árbol de derivación para comprobar si la oración a8 pertenece al lenguaje
Ejemplo 7: Sea la gramática G3 definida por: T = {a, b}, NT = {V0}, S = V0 y las Producciones:
V0 Æ a a V0 V0 Æ a
V0 Æ b
El lenguaje producido por esta gramática es de la forma: L = {
a
2 m + 1 oa
2 nb
, con m , n >= 0 } (Recuerde que el cero es un número par)a) Describa las producciones en BNF y de modo que la gramática sea regular b) Describa las producciones como Diagramas de Sintaxis (en forma gráfica) c) Dibuje un árbol de derivación para comprobar si la oración a8 pertenece al
Ejemplo 8: Sea la gramática G5 definida por: T = {a, +, (, )}, NT = {V0, V1, V2}, S = V0 y las Producciones: V0 Æ (V0) V0 Æ a + V1 V1 Æ a + V2 V2 Æ a + V2 V2 Æ a
Las producciones en BNF son:
<V0> :: = ( <V0> ) | a + <V1> <V1> :: = a + <V2>
<V2> :: = a | a + <V2>
Esta gramática no es regular y el lenguaje que se genera a partir de ella, tampoco es regular. Las cadenas generadas no pueden ser explicadas a través de un diagrama de sintaxis.
Dibuje un árbol de derivación para comprobar si la siguiente oración pertenece al lenguaje
( ( a + a + a + a + a ) ) Ejemplo 9: Sea la gramática G4 definida por:
T = {x, y, z}, NT = {V0}, S = V0 y las Producciones:
V0 Æ x V0 V0 V0 Æ y V0 V0 Æ z
Dibuje un árbol de derivación para comprobar si la oración xxyyzz pertenece al lenguaje
Esta gramática no es regular y el lenguaje que se genera a partir de ella, tampoco es regular. Las cadenas generadas no pueden ser explicadas a través de un diagrama de sintaxis.
Ejemplo 10: Construya una gramática regular y el diagrama de sintaxis correspondiente, de forma tal que se obtenga el lenguaje indicado en cada caso:
a)
L = {a
nb
m| n>= 1, m >= 0}
b)
L = {a
nb
m| n>= 1, m >= 3}
c)
L = {a
nb
m| n>= 2, m no negativo y par}
Ejemplo 11: Sea la gramática G1, donde:
Terminales = {x, y, z} No Terminales = {A, B, S}, Inicial = S Y las Producciones:
<S> ::= x <A> | x <A> ::= y <B> | x <B> ::= z <A> | z
Su Diagrama de Sintaxis puede representarse por:
z y
x x
Comprobar si cada una de las siguientes cadenas, es aceptada o no, usando un árbol de derivación: a) xxzxz b) xyzyz c) xyzxz d) xxyzy e) xyzyx
Ejemplo 12: Sea la gramática G2, donde:
Terminales = {a, b, c}, No Terminales = {V, W}, Inicial = V Y las Producciones:
<V> ::= a <W> <W> ::= b b <W> | c
Su Diagrama de Sintaxis puede representarse por:
b b
c a
Comprobar si cada una de las siguientes cadenas, es aceptada o no, usando un árbol de derivación: a) aabc b) abbbc c) aabbc d) abbbbcc e) abbbc
Ejemplo 13: Sea la gramática G3, donde:
Y las Producciones:
<V0> ::=<V1> <V2> <V1> ::= a b | a b <V1> <V2> ::= c | c <V3> <V3> ::= d | d <V3>
Su Diagrama de Sintaxis puede representarse por:
a b c
d
Comprobar si cada una de las siguientes cadenas, es aceptada o no, usando un árbol de derivación: a) accdd b) abc c) abddd d) acdd e) abccddd
Ejemplo 14: Sea la gramática G4, donde:
Terminales = {a, b, c, d}, No Terminales = {W, V1, V2}, Inicial = W Y las Producciones:
<W> ::= a <V1> | b <V1> <V1> ::= c <V0> | c <V0> ::= d <V0> | d
Su Diagrama de Sintaxis puede representarse por:
a b
c
d
Comprobar si cada una de las siguientes cadenas, es aceptada o no, usando un árbol de derivación: a) ac b) bc c) acdd d) bcd e) abcd
Ejemplo 15: Sea la gramática G5, donde:
Terminales = {a, b, c, d}, No Terminales = {W, V1, V0}, Inicial = W Y las Producciones:
<W> ::= a b <V1> <V1> ::= c | <V0> c <V0> ::= d | d <V0>
Estas Producciones no están escritas de modo que correspondan a una Gramática Regular, pero hay un diagrama de sintaxis que lo representa
Las producciones que correspondan a una Gramática Regular son: <W> ::= a <V1>
<V1> ::= b <V2> <V2> ::= d <V2> | c
Su Diagrama de Sintaxis puede representarse por:
a b c
d
Comprobar si cada una de las siguientes cadenas, es aceptada o no: a) ccd
b) bdc c) abc d) abccddd
Ejemplo 16: Sea la gramática G6, donde:
Terminales = {a, b, c, d}, No Terminales = {W, V1, V2}, Inicial = W Y las Producciones, que no están escritas de forma regular, son:
<W> ::= a b | a b <V1>
<V1> ::= d | d <V1> | d <V2> <V1> <V2> ::= c | d
Las Producciones escritas de modo que correspondan a una Gramática Regular son: <W> ::= a <V0>
<V0> ::= b | b <V1>
<V1> ::= d | d <V1> | d <V3> <V3> ::= c <V1> | d <V1>
Hacer el diagrama de sintaxis y comprobar si cada una de las siguientes cadenas, es aceptada o no, usando un árbol de derivación:
a) cd b) adc c) abddcd
d) abcdc e) abdcc
Ejemplo 17: Sea la gramática G7, donde: Terminales = {0, 1, 2 ... 9,a, b, c ... z}
No Terminales = { dígito, letra, identificador} donde <Dígito> ::= 0 | 1 | 2 | ... | 9
<Letra> ::= a | b | c | ... | z Inicial = identificador
Producciones:
<identificador> ::= <letra> | <identificador> <letra> | <identificador> <dígito>
Hacer el diagrama de sintaxis y comprobar si cada una de las siguientes cadenas, es aceptada o no, usando un árbol de derivación:
a) b11 b) sueldo c) 2a6 d) %año e) cuota venta
Ejemplo 18: Obtener la gramática que permita generar enteros y reales, sabiendo que un número entero puede tener cualquiera de las siguientes formas:
a) 12 b) 123E4
Y un número real puede tener cualquiera de las siguientes formas: a) 0.123
b) 12.3 c) 123E–2 d) 123.6E+5 e) 123.5E-2
Una Gramática Ambigua es aquella que para una misma sentencia, produce más de un Arbol de Sintaxis o de Derivación.
Caso: Sean las producciones siguientes que corresponden a la siguiente gramática: <expresión> ::= i | <expresión> - <expresión> | <expresión> / <expresión> donde / indica la división
Al parsear la cadena: i - i / i, se podría obtener: <expresión>
<expresión> - <expresión>
i - <expresión> / <expresión>
i - i / i
que corresponde a la resta de i menos el cociente de i / i
Y también se podría obtener:
<expresión>
<expresión> / <expresión>
<expresión> - <expresión> / i
i - i / i
que corresponde al cociente de la resta de i menos i , entre i
De este modo se obtienen dos árboles de sintaxis diferentes, ambos correctos. Sin embargo, es necesario considerar que aritméticamente la prioridad de la división, siempre es mayor que la prioridad de la resta, por lo que:
i - i / i = i – (i / i)
Ejemplo 19: Siguiendo el ejemplo anterior, parsear las siguientes cadenas: a) i / i - i
b) i - i - i / i c) i / i - i / i
Ejemplo 20: Sean las producciones siguientes que corresponden a la siguiente gramática: <expresión> ::= i | <expresión> + <expresión> | <expresión> * <expresión>
Parsear las siguientes cadenas: a) i + i * i
b) i * i + i c) i + i + i * i d) i * i + i * I
Nótese que con estas producciones no queda claro si expresiones como las indicadas en a) y b), son sumas o productos; por esto, es que se dice ambigua.
Ejemplo 21: Sean las producciones siguientes que corresponden a la siguiente gramática: <expresión> ::= i | <expresión> + <expresión> | <expresión> - <expresión>
Parsear las siguientes cadenas: a) i - i + i
b) i + i - i c) i - i - i + i d) i + i - i + i
Ejemplo 22: Obtener la gramática que incluya las prioridades de los operadores aritméticos, de forma tal que la multiplicación y la división tengan mayor prioridad que la suma y la resta. La multiplicación y la división tienen la misma prioridad entre ellas, y se ejecutan de izquierda a derecha, según la que se encuentre primero en la expresión. La suma y la resta tienen la misma prioridad entre ellas, y se ejecutan de izquierda a derecha, según la que se encuentre primero en la expresión.
Se definirá una Expresión Regular como aquella expresión que representa al conjunto de cadenas aceptadas por una gramática regular.
Ejemplo 23:
Analice, comprenda y aprenda las siguientes producciones: a) <w> :: = a b b a <w> Expresión Regular = a b a b <w> b) <W> :: = a b | a b <W> Expresión Regular =
(a b)
n , Con n >= 1c) <W> :: = a | a <W> a <w> Expresión Regular =
a
n , con n >= 1 a b <w> <W> :: = a | b Expresión Regular = a o b c b b a <w> d) <V0> :: = a <W> <W> :: = b b <W> | c Expresión Regular =a (b b)
nc ,
Con n >= 0 a c b <w> e) <W> :: = a | b | <V0> <V0> :: = c | c <V0> Expresión Regular =a
ob
oc
n,
con n >= 1 f) <W> :: = a b <V1> | a b <V0> <V1> <V0> :: = c | c <V0> <V1> :: = d | d <V1>Expresión Regular =
a b c
nd
m,
con n >= 0, m >= 1 <w>c
d b
h) <w> :: = a <V1> | b <V1> <V1> :: = c | c <V0> <V0> :: = d | d<V0> <w> a b c d
Expresión Regular = (
a
ob) c d
n,
con n >= 0 i)<w> :: = a b | a b <V1> <V1> :: = d | d <V1> | d <V2> <V1> <V2> :: = c | d a b c d d <w>
Existen procesos que sólo dependen de los datos de entrada; esto es, no “saben” en qué estado se encuentran, de manera que no consideran este hecho. Otros procesos sin embargo, sí “recuerdan” el estado en que se encuentran, de modo que consideran tanto dicho estado, como los datos que están entrando en un momento determinado. A estos últimos procesos se les puede llamar “con memoria” (porque recuerdan donde están). Las Máquinas de Estado Finito son modelos abstractos de equipos con memoria interna, aunque ésta sea muy primitiva. Estas máquinas tienen:
a) Un conjunto finito de Símbolos de Entrada (SE) b) Un conjunto finito de Símbolos de Salida. (SS) c) Un conjunto finito de estados (E)
d) Un función de estado siguiente f : (E x SE) ÆE e) Una función salida g : (E x SE) ÆSS
f) Un estado inicial que pertenece a E
Los Autómatas de Estado Finito son Máquinas Teóricas que permiten hacer reconocimientos de patrones (lexicográfico, sintáctico y semántico), de manera que se pueda determinar si estos patrones puedan o no ser aceptados por dichas máquinas. Así, un Autómata de Estado Finito, es una clase especial de máquina que guarda relación con un lenguaje en particular. Un “conjunto finito de estados” implica un número determinado de estados bien definidos o “situaciones” donde se puede estar.
Un Diagrama de Transiciones es una representación gráfica de lo que sucede cuando se inicia en un estado determinado (llamado estado inicial) y se recibe como dato de entrada un elemento. Si este elemento pertenece a un conjunto de símbolos de entrada, se continúa con el proceso; de lo contrario, el proceso se detiene y se tiene una no aceptación. Si el proceso continúa se toma en cuenta dónde se encuentra (en qué estado está), qué recibe (el elemento a analizar) y se pasa a otro estado definido o se mantiene en el mismo estado donde se encontraba. Esto se repite para cada elemento que se recibe hasta llegar a un estado final (también llamado estado de aceptación) y cuando esto sucede se dice que la oración o cadena formada por todos los símbolos analizados, es aceptada por la máquina. Si no se llega a un estado de aceptación, se dice que la cadena no es aceptada por la máquina.
Un Diagrama de Transición, también llamado Diagrama de Estados o Red de Transiciones, es una gráfica formada por Círculos que representan los Estados, que se conectan a través de arcos rotulados. Los Estados indican la posición actual en que se encuentra el análisis y deben tener nombres (letras o números) para identificarlos. Los rótulos de los arcos generalmente representan el símbolo leído desde la cadena analizada. Cada gráfica debe tener sólo un Estado Inicial (por donde se inicia) y uno o más Estados Finales o de Aceptación (donde se termina o se acepta). Los estados finales se representan con un doble círculo. Un estado final puede coincidir con un estado inicial.
Dado un Estado de Transición se desea analizar si una cadena dada, es o no aceptada por dicho estado. Una cadena es aceptada o se dice válida, cuando se parte desde el estado de inicio y a través de los arcos, se llega a un estado final.
Caso: Sea el siguiente estado de transición: 3 dígito letra letra, dígito 2 1
Donde se tiene que 1 es el Estado Inicial (flecha inicial) y 3 es el Estado Final (doble círculo)
Los rótulos sobre los arcos indican que:
Estando en el estado 1, si se lee una letra, se pasa al estado 3 Estando en el estado 1, si se lee un dígito , se pasa al estado 2
Estando en el estado 3, si se lee una letra o un dígito, se queda en el estado 3 No hay definición de qué pasa si estando en el estado 2, se lee una letra o un dígito. Las cadenas aceptadas son del tipo: a23, abc1, edad, sueldo, etc.
Las cadenas no aceptadas son del tipo:
123b si empieza con un dígito, llega al estado 2 y luego no puede continuar
sueldo total cuando encuentre el espacio, no puede continuar. 5% el símbolo de % no es ni letra ni dígito
Caso: Sea el siguiente diagrama, considerando que los símbolos de entrada o Alfabeto, son a y b. El estado inicial es S. El estado de aceptación es W. Analizar si la cadena aaa es aceptada o no. S W Z a a b b b
En este caso, el diagrama de transición indica lo siguiente: a) Inicio en el estado S
b) Estando en S, llega una a. Como a es símbolo de entrada, paso al estado W c) Estando en W, llega una a (la segunda) y permanezco en el estado W d) Estando en W, llega una a (la tercera) y permanezco en el estado W e) Como W es estado de aceptación, la cadena aaa es aceptada.
Una Tabla de Transiciones es otra forma de definir un Diagrama de Transiciones, donde se establece una matriz cuyas columnas tienen los elementos del alfabeto que se pueden leer, y los renglones tienen los estados existentes. En este caso, es necesario indicar el estado inicial y el conjunto de estados finales. Cuando en alguna celda de la matriz se encuentra un Ø, significa que no hay un par definido, en el producto cartesiano de E x A Caso: Sea la siguiente Tabla de Transiciones, donde el estado inicial es S1 y el estado final
es {S3}
a b
S1 S1 S2
S2 S3 Ø
S3 S3 S1
Esta tabla también puede ser representada como una relación de E x A Æ 2E , donde 2E es el conjunto potencia de E (S1, a ) Æ S1 (S1, b) Æ S2 (S2, a) Æ S3 (S2, b) Æ Ø (S3, a) Æ S3 (S3, b) Æ S1
A partir de dicha tabla, se puede construir el Diagrama de Transiciones correspondiente: S1 S2 S3 a a a b b
Caso: El siguiente Diagrama de Transiciones acepta cadenas de símbolos del alfabeto A={0,1} y donde se cumple la condición de que haya un número par de ceros
S1 S2 S3
1
0 0
1
Nótese que como no se indica nada acerca de los 1, se pueden encontrar cuantos 1 sean necesarios, pero en cuanto se halla un 0, sigue necesariamente otro 0, cumpliéndose la condición pedida.
Caso: El siguiente Diagrama de Transiciones acepta cadenas de símbolos del alfabeto A={0,1} y donde se cumple la condición de que cada 0 esté seguido por un 1
S1 S2 S3
1
1 0
1
Ejemplo 1: Construir para cada caso, un Diagrama de Transiciones que acepte cadenas de símbolos del alfabeto dado y donde se cumpla la condición indicada.
Alfabeto Condición
a) {a,b,c} Cada “b” debe estar seguida de, por lo menos dos letras “a”
b) {a,b,c} Cada cadena debe ser de la forma “abc”, cuantas veces se quiera, pero a lo menos una vez.
Caso: También pueden tenerse situaciones como la siguiente:
En cuyo caso se indicará:
S1 S2
1
1
(S1, 1) = {S1, S2}
y se leerá: estando en el estado S1, encuentro un 1 y puedo quedarme en el estado S1 o pasar al estado S2. Esto es una ambigüedad, porque no se sabe cuál camino seguir. Ejemplo 2: Indique qué cadenas se pueden representar con los siguientes diagramas de
transición, sabiendo que Dígito = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} a. C B A 0, 2, 4, 6, 8 0, 2, 4, 6, 8 dígito Dígito - {0} C B A 0, 5 0, 5 dígito Dígito - {0} b.
Ejemplo 3: ¿Se podrían representar los múltiplos de 3 a través de un diagrama de transición?, ¿y de 6?, ¿y de 8? ¿y de 9? Explique cada caso.
Ejemplo 4: Considerando que A es el alfabeto, E es el conjunto de estados, F es el conjunto de estados de aceptación o finales, y que S es el estado inicial, dibuje el Diagrama de Transición correspondiente a: a) A = {a,b} E = {S0,S1,S2} F = {S0} S = S0 a b S0 vacío {S1, S2} S1 {S2} {S0,S1} S2 {S0} vacío b) A = {a,b} E = {S0,S1,S2} F = {S0,S1} S = S0 a b S0 {S1} {S0,S2} S1 vacío {S2} S2 {S1} vacío c) A = {a,b} E = {S0,S1,S2,S3} F = {S1} S = S1 a b S0 vacío {S3} S1 {S1,S2} {S3} S2 vacío {S0,S1,S3} S3 vacío vacío d) A = {a,b,c} E = {S0,S1,S2} F = {S0,S2} S = S0 a b c S0 {S1} vacío vacío S1 {S0} {S2} {S0,S2} S2 {S0,S1,S2} {S0} {S0} e) A = {a,b,c} E = {S0,S1,S2,S3 } F = {S0,S3} S = S0 a b c S0 {S1} {S0,S1,S3} vacío S1 {S2,S3} vacío vacío S2 vacío {S0,S3} {S1,S2} S3 vacío vacío {S0}
Los Autómatas Finitos Determinísticos (AFD) permiten reconocer cadenas que pertenecen a los Lenguajes Regulares, los cuales son generados por las Gramáticas Regulares. Esto es, si existe un AF que permite reconocer una cadena, entonces existe una gramática que puede ser expresada como Gramática Regular y que genera dicha cadena. Un Autómata Finito Determinístico (AFD) está definido por la siguiente quíntupla:
1. E = es el conjunto finito de estados 2. A = es el alfabeto de la máquina
3. S = es el estado inicial, un elemento de E
4. Z = es un conjunto de estados finales o de aceptación, es un subconjunto de E
5. M = es la función de E x A Æ 2E , donde 2E es el conjunto potencia de E. Es decir, AFD = {E, A, S, Z, M}
Caso: Dado el siguiente diagrama de transición de un AFD:
S dígito F letra letra, dígito Se tiene que:
E = es el conjunto finito de estados = {S, F} A = es el alfabeto de la máquina = {letra, dígito} S = es el estado inicial, un elemento de E = S
Z = es un conjunto de estados finales o de aceptación = {F}
M = es la función de E x A Æ 2E (2E es el conjunto potencia de E), donde: { (S, letra) = F, (S, dígito) = S, (F, letra) = F, (F, dígito) = F }
Nótese que los pares (S, letra), (S, dígito), etc. pertenecen a E x A.
Las cadenas aceptadas por este AFD constan de dígitos y letras en cualquier combinación, pero a lo menos deben tener una letra.
Caso: Sea el siguiente Diagrama de Transición. Verifique si se trata o no de un AFD
S y
x 1
x y
Verifique que las cadenas aceptadas son una combinación de x e y, pero si hay x, éstas deben estar en número par. Escriba este enunciado de manera formal (notación matemática). Escriba la expresión para representar este tipo de cadenas. Cuando el estado Inicial coincide con el estado Final, se acepta la Cadena vacía, representada por
λ
.La quíntupla asociada al AF es: • E = {S, 1} • A = {x, y] • S = s • Z = {S} • M: es función de E x A Æ 2E x y S 1 S 1 S 1 Por lo tanto se trata de un AFD
El diagrama de sintaxis es:
y
y
x x
La expresión del Lenguaje generado es:
L = { ( y
n( x y
mx )
p)
kcon n ,m, p, k >= 0}
La gramática que genera este lenguaje es: T = { x, y} NT = { V0, V1, V2, V3} S = V0 P = { <V0> :: = λ | <V1> <V2> | <V1> | <V2> | <V1> <V2> <V0> | <V1> <V0> | <V2> <V0> <V1> :: = y | y <V1> <V2> :: = x <V3> <V3> :: = x | <V1> x }
Ejemplo 1: Sea el siguiente Diagrama de Transición.
a, b b 4 a b a 3 a b 2 1
Su diagrama de sintaxis es:
b
a
b
a b a
a. Verifique si se trata o no de un AFD (encuentre la quíntupla que lo definiría) b. Encuentre la expresión del lenguaje generado
Ejemplo 2: Sea el siguiente Diagrama de Transición.
D C F
b a a, b
b a
La expresión del lenguaje generado es:
L = {b
na
mb (a
rb
p)
kn, r, p, k >= 0; m >= 1}
a. Verifique si se trata o no de un AFD (encuentre la quíntupla que lo definiría) b. Dibuje su diagrama de sintaxis
c. Encuentre la gramática que genera dicho lenguaje Ejemplo 3: Sea el siguiente Diagrama de Transición.
S1 S2 S3 a a b b b a
Para verificar si se trata o no de un AFD, hay que encontrar la quíntupla que lo definiría. • E = {S1, S2, S3} • A = {a, b} • S = S3 • Z = {S1] • M: es función de E x A Æ 2E a b S1 S1 S2 S2 S2 S1 S3 S1 S2 Por lo tanto se trata de un AFD
a. Dibuje su diagrama de sintaxis
b. Encuentre la expresión del lenguaje generado
c. Las siguientes expresiones ¿representan cadenas aceptadas?. Explique cada caso. •
a
nb a
m con n, m >= 0•
a
nb a
m con n >= 1 y m >= 0 •b ( b b )
nb
con n >= 1•
b ( b b )
nb
con n >= 0d. Encuentre la gramática que genera dicho lenguaje
Ejemplo 4: Para cada uno de los siguientes Diagramas de Transición. a. Complételo con otro color, de modo que sea un AFD. b. Defina la quíntupla.
c. Halle 3 expresiones que representen cadenas no válidas. d. Halle la expresión de cadenas válidas.
S0 S2 S1 y x x 4.1. 1 2 x 3 y x 4.2.
D a C b F b 4.3. 1 2 y x x y x y 3 4.4. 2 y 1 x y x 4.5. 4.6. 1 x y
x, z 1 x, y y 2 z 4.7. x, y x, y 3 2 y x 1 4.8.
Ejemplo 5: Dibuje el autómata correspondiente a lo siguiente: Estado inicial = R
Estado final = {U}
Estando en R, con una b sigo en R Estando en R, con una a, paso a S Estando en S, con una b, paso a T Estando en S, con una a, sigo en S Estando en T, con una a, paso a U Estando en U, con una a, quedo en U Estando en U, con una b, paso a T
Indique si es o no un AFD, y en Caso que no lo sea, complete la definición del mismo
¿Cuál es la expresión que representa las cadenas válidas? Escriba la expresión como enunciado.
Los AFD no tienen una "memoria" que permita recordar los símbolos analizados antes del símbolo actual, por lo tanto las cadenas del tipo
a
nb
no cadenas que incluyan paréntesis, no pueden ser analizadas a través de estos autómatas. Pero las palabras reservadas de los lenguajes, los nombres de datos y los símbolos de los operadores, sí podrán ser reconocidos por los AFD.Un Autómata Finito No Determinístico (AFN) está definido por la siguiente quíntupla: 1. E = es el conjunto finito de estados
2. A = es el alfabeto de la máquina
3. S = es el estado inicial, un elemento de E
4. Z = es un conjunto de estados finales o de aceptación, es un sub conjunto de E
5. M = es el mapeo (no una función) de E x A Æ 2E , donde 2E es el conjunto potencia de E.
Es decir, AFN = {E, A, S, Z, M}
Lo que hace que el AFN sea No Determinístico es que hay una ambigüedad o una no determinación acerca de qué camino tomar en algún estado con un elemento del alfabeto. Basta que haya una sola ambigüedad, para que se tenga la no determinación. Esta no determinación también se tiene cuando no hay un par definido con respecto a un estado y el símbolo leído; esto ocurre porque no hay una función, sino simplemente un mapeo. La diferencia entonces entre un AFN y un AFD es que el primero tiene un mapeo y el segundo, una función. Para transformar un AFN en un AFD, se requiere convertir el mapeo en función.
Cuando se tiene un AFN, es necesario considerar que si se quiere hacer una simulación en la computadora de un lenguaje en particular, es necesario tener todos los elementos que hagan del mapeo, una función; esto es, se deben tener cada uno de los estados asociados con un elemento del alfabeto, para indicar sólo un camino bien determinado, que es posible tomar. De ahí surge la necesidad de encontrar un AFD equivalente al AFN que se tiene; esto es, que el nuevo AFD encontrado acepte el mismo lenguaje que el AFN original. Caso: La notación
M (S, a) = { S1, S2}
nos indica que hay una relación que hace que, estando en el estado S y si se lee una a, se pueda ir al estado S1 o al estado S2, siendo ambos caminos válidos. Esto es una Ambigüedad
Esta misma notación puede ser representada por una Tabla de Transiciones o Tabla de Estados, como la siguiente:
Alfabeto
Estados a
S {S1, S2}
Y también por el Diagrama de Transición siguiente:
S1 S2
a
Caso: Sea el AFN indicado. Encuentre su tabla de transiciones. Indique en cada caso, dónde se halla la ambigüedad (puede haber varias ambigüedades).
b
La quíntupla de este AFN está dada por: • E = { C, D, F} • A = {a, b} • S = F • Z = {D} • M: es relación de E x A Æ 2E { (F, a) = F (F, b) = C (C, a) = {C, D} (D, b) = D }
El lenguaje producido por este AFN es del tipo
L = {a
nb a
mb
icon n, i >= 0 y m >= 1}
La gramática está definida por: T = {a, b} NT = {V0, V1, V2} S = V0 P = <V0> ::= ba | <V1> ba | <V1> b <V1> a | <V0> <V2> <V1> ::= a | a <V1> <V2> ::= b | b <V2> Su diagrama de sintaxis es:
<V0> a a C b F D a <V0> a a b a b
Ejemplo 1: Dada la siguiente tabla de estados de un AFN
a b
S1 {S1,S2,S3} Ø
S2 Ø {S1}
S3 Ø {S2}
La quíntupla de este AFN está dada por: • E = { S1, S2, S3}
• A = {a, b} • S = S3 • Z = {S1}
• M: es relación de E x A Æ 2E mostrada en la tabla de transición a) Explique dónde se encuentra la No Determinación o la ambigüedad b) Dibuje el Diagrama de Transición
c) Dibuje el Diagrama de Sintaxis
d) Encuentre la expresión general del lenguaje generado e) Encuentre la gramática que genera el lenguaje
Ejemplo 2: Analice el siguiente AFN. Note que donde hay ambigüedad, según el camino que se tome, se encuentra un entero o un real.
dígito dígito 5 4 3 2 1 dígito
.
dígito dígito dígitoa) Dibuje la tabla de Transición b) Dibuje el Diagrama de Sintaxis
c) Encuentre la expresión general del lenguaje generado d) Encuentre la gramática que genera el lenguaje
Ejemplo 3: Hallar la quíntupla que define al AFN indicado. a 4 1 b b b a 2 3 a b
Su Diagrama de Sintaxis está dado por:
a a b
b a b
b
a) Dibuje la tabla de transiciones
b) Encuentre la expresión general del lenguaje generado c) Encuentre la gramática que genera el lenguaje
Ejemplo 4: Hallar la quíntupla que define al AFN indicado.
2 1 x a x x
La expresión general del lenguaje generado es:
a) Dibuje la tabla de transiciones b) Dibuje el Diagrama de Sintaxis
c) Encuentre la gramática que genera el lenguaje Ejemplo 5: Hallar la quíntupla que define al AFN indicado.
S1 S2 a S3
a, b b
a
a) Dibuje la tabla de transiciones b) Dibuje el Diagrama de Sintaxis
c) Encuentre la expresión general del lenguaje generado d) Encuentre la gramática que genera el lenguaje
Ejemplo 6: Sea el Diagrama de Transición indicado.
a) Explique dónde se encuentra la No Determinación o la ambigüedad 1
a S3
a, b
b
b) Hallar la quíntupla que define al AFN c) Encontrar su tabla de transiciones d) Dibuje el Diagrama de Sintaxis
e) Encuentre la expresión general del lenguaje generado f) Encuentre la gramática que genera el lenguaje
Ejemplo 7: Sea el Diagrama de Transición indicado.
y x y 2 1 y
a) Explique dónde se encuentra la No Determinación o la ambigüedad b) Hallar la quíntupla que define al AFN
c) Encontrar su tabla de transiciones d) Dibuje el Diagrama de Sintaxis
e) Encuentre la expresión general del lenguaje generado f) Encuentre la gramática que genera el lenguaje
Ejemplo 8: Exprese una característica de las cadenas aceptadas por el siguiente AFN:
a, b b a, b a C B A
Ejemplo 9: Exprese una característica de las cadenas aceptadas por el siguiente AFN: a, b b a, b b W Z R a, b
Ejemplo 10: Exprese una característica de las cadenas aceptadas por el siguiente AFN: a
a a
a, b
Ejemplo 11: Exprese una característica de las cadenas aceptadas por el siguiente AFN:
b
b b
a, b a, b
Ejemplo 12: Exprese una característica de las cadenas aceptadas por el siguiente AFN:
y x, y
x
Árboles de Derivación:
A través de los Árboles de Derivación se puede saber si una cadena es aceptada o no por un AFN. En este análisis se puede tener uno de varios casos:
1. Que se llegue al final de la cadena y no se haya podido pasar a un estado de aceptación. Esto es un error y la cadena no es aceptada.
2. Que se llegue a un estado de aceptación sin haber terminado la cadena y no se pueda seguir en dicho estado porque no existe un bucle que lo permita. Esto es un error y la cadena no es aceptada.
3. Que se encuentre en un estado en el cual no está definido qué hacer con el elemento encontrado. Esto es un error y la cadena no es aceptada.
4. Que se haya terminado la cadena y se encuentre en un estado de aceptación. La cadena sí es aceptada por el AFN.
Caso: Sea la cadena aaabb que se desea analizar con el siguiente AFN: a a b 2 3 1 b
Su árbol de derivación es el siguiente:
1 Estando en 1 se encuentra una a. Se puede pasar al estado 2 o 1, a quedarse en 1. Continuando se llega a:
2 1, b Error1. 2 Error2 1, a 2, b 1, a 2, b 3 La cadena sí es aceptada 3, b Error3 2, a Error1 1, a 2, a Error1
Error1: Estando en el estado 2, no está definido qué se hace al encontrar el elemento hallado. La cadena no es aceptada.
Error2: Se acabó la cadena y no se llegó al estado de aceptación. La cadena no es aceptada.
Error3: Se llegó al estado de aceptación, pero la cadena no ha terminado y no hay bucle para permanecer en 3. La cadena no es aceptada.
Ejemplo 13: Haga los Árboles de Derivaciones correspondientes para dos cadenas por cada uno de los AFN dados en los ejemplos del 1 al 12.
AFD asociados a AFN:
De cada AFN se puede derivar un AFD que le corresponda. Para ello se considera lo siguiente:
1. El conjunto original de estados E que se tiene en el AFN, se mantendrá en el nuevo AFD, pero habrá más estados; de hecho, puede ser el conjunto potencia completo. De todos estos estados, habrá algunos de ellos que nunca se alcancen, por lo que podrán no ser considerados.
3. El estado inicial S será el mismo que en el AFN.
4. El conjunto de los estados de aceptación, serán los mismos que en el AFN original, pero se incrementará con todos los nuevos estados, que incluyan a los estados de aceptación originales.
Caso: Sea el AFN que se muestra en la figura:
D C F
x y
x x
Definido por:
1. E = {D, C, F} es el conjunto finito de estados 2. A = {x, y} es el alfabeto de la máquina
3. S = D es el estado inicial, un elemento de E 4. Z = {F} es un conjunto de estados finales o de aceptación 5. M = está definido por:
M (D, x) = {C, D} M (C, x) = {F}
M (C, y) = {C} es el mapeo (no una función) de E x A Æ 2E , donde 2E es el conjunto potencia de E.
El AFD que se quiere construir a partir del AFN está definido por:
1. E = {Ø, {D}, {C}, {F}, {C, D}, {C, F}, {D, F}, {C, D, F}} es un conjunto finito de estados, que corresponde al conjunto potencia de E
2. A = {x, y} es el alfabeto de la máquina
3. S = D es el estado inicial, un elemento de E
4. Z = { {F}, {C, F}, {D, F}, {C, D, F}} es un conjunto de estados finales; todos contienen a {F}
5. M’ = está definido por:
M’ (Ø, x) = Ø M’ ((C, D), x) = {C, D, F}4 M’ (Ø, y) = Ø M’ ((C, D), y) = {C} M’ (C, x) = F M’ ((C, F), x) = {F} M’ (C, y) = {C} M’ ((C, F, D), x) = {C, D, F} M’ (D, x) = {C, D} M’ ((C, F), y) = {C} M’ (D, y) = Ø M’ ((D, F), x) = {C, D} M’ (F, x) = Ø M’ ((D, F), y) = Ø M’ (F, y) = Ø M’ ((C, F, D), y) = {C} 4
Para visualizar los nuevos estados, vea por ejemplo a cuáles estados se pasa estando en C o en D, habiendo hallado una x, y así encontrará ((C, D), x)
Tal como se muestra utilizando un Diagrama de Transición. D C C, D, F C, D C, F F Ø D, F x x x x x x, y x, y x y y y y y y
Pero los estados {D, F} y {C, F} nunca serán alcanzados (ninguna flecha llega a ellos), por lo que el Diagrama de Transición final queda como:
D C C, D, F C, D F Ø x, y x, y x x x x y y y y
Nótese que tampoco llegan flechas al estado D, pero como éste es el Inicio, se conserva como tal. Así se ha construido un AFD equivalente al AFN original, es decir que ambos aceptan el mismo lenguaje.
Por lo tanto el nuevo AFD es:
1. E = {Ø, {D}, {C}, {F}, {C, D}, {C, D, F}} 2. A = {x, y}
3. S = D
5. M’ = está definido por: M’ (Ø, x) = Ø M’ (F, x) = Ø M’ (Ø, y) = Ø M’ (F, y) = Ø M’ (C, x) = F M’ ((C, D), x) = {C, D, F}5 M’ (C, y) = {C} M’ ((C, D), y) = {C} M’ (D, x) = {C, D} M’ ((C, F, D), x) = {C, D, F} M’ (D, y) = Ø M’ ((C, F, D), y) = {C}
Otro modo de realizar este AFD correspondiente al AFN dado, es a través de la Tabla de Transiciones.
Caso: Sea el AFN siguiente:
S1 S2 S3 a b a a b b
La Tabla de Transiciones correspondiente al AFN, incluye los nuevos estados, los cuales se originan a partir de la parte superior de la tabla:
a b S1 S1, S2, S3 Ø S2 Ø S1 S3 Ø S2, S3 S1, S2, S3 S1, S2, S3 S1, S2, S3 S2, S3 Ø S1, S2, S3 Ø Ø Ø 5
Para visualizar los nuevos estados, vea por ejemplo a cuáles estados se pasa estando en C o en D, habiendo hallado una x, y así encontrará ((C, D), x)
Gráficamente, corresponde al diagrama siguiente: S1 S2 S3 S1, S2, S3 Ø S2, S3 a a, b a b b a a a, b b b
Como los estados S1 y S2 nunca se alcanzan y ninguno es inicial, el diagrama final del AFD queda como sigue:
S3 S1, S2, S3 Ø S2, S3 a a b b a, b a, b
La tupla correspondiente a este AFD es:
1. E = {Ø, {S3}, {S2, S3}, {S1, S2, S3}} 2. A = {a, b}
3. S = S3
5. M’ = está definido por:
M’ (Ø, a) = Ø M’ ((S2, S3), a) = Ø
M’ (Ø, b) = Ø M’ ((S2, S3), b) = {S1, S2, S3} M’ (S3, a) = Ø M’ ((S1, S2, S3), a) = {S1, S2, S3} M’ (S3, b) = {S2, S3} M’ ((S1, S2, S3), b) = {S1, S2, S3} Ejemplo 1: Dado el siguiente AFN, encontrar su AFD correspondiente:
S0 S2 S1 y y x
Ejemplo 2: Dada la siguiente tabla de estados de un AFN
a B
S1 {S1,S2,S3} Ø
S2 Ø {S1}
S3 Ø {S2}
Donde S3 es el estado inicial y S1 el estado de aceptación
a) Explique dónde se encuentra la No Determinación o ambigüedad b) Dibuje el Diagrama de Transición
c) Dibuje el diagrama de transición del AFD correspondiente. Ejemplo 3: Dada la siguiente tabla de estados de un AFN
A B
S1 {S1,S2,S3} Ø
S2 S2 S1
S3 Ø S1
Donde S3 es el estado inicial y S1 el estado de aceptación
a) Explique dónde se encuentra la No Determinación o ambigüedad b) Dibuje el Diagrama de Transición
Ejemplo 4: Diseñe autómatas de estado finito no determinístico que acepten las cadenas no nulas sobre el alfabeto {a,b} (cuando sea necesario defina los elementos de la quíntupla que se requieran) y que tengan la propiedad que se expresa:
a) Comiencen con abb o con ba b) Terminen en abb o en ba c) Contengan abb o ba
d) Toda b se encuentre entre dos a e) No contengan abba o bbb
Un Autómata Push Down o Máquina de Pila (APD) es una máquina teórica definida como una séxtupla:
1. E = Conjunto finito de estados 2. A = Alfabeto
3. SP = Conjunto finito de Símbolos de Pila 4. T = Conjunto finito de Transiciones 5. S = Estado inicial, elemento de E
6. EF = Conjunto finito de Estados Finales o de Aceptación. Si EF es vacío, significa que el APD será por Pila Vacía
Es decir APD = {E, A, SP. T, S, EF}
Una Pila es una estructura abstracta de datos que funciona según el principio “El Último que Entra es el Primero que Sale”, también conocido como LIFO por sus siglas correspondientes a Last In First Out. Es un tipo de datos abstracto porque no está implementado en los lenguajes comerciales, por lo que se requiere hacer una simulación de ella, en caso de que se requiera utilizar.
Una pila tiene un solo extremo por donde se mete y se saca la información. Cuenta además con un Apuntador que indica dónde se puede guardar la información o dónde se encuentra la información que se puede extraer. Por su estructura, la información sólo se guarda “encima” de la información ya existente, y sólo puede sacarse la información que esté sobre la demás. Los errores posibles en una pila son tratar de sacar información de una pila vacía, o queder meter información en una pila llena.
Esta pila actúa como un almacenamiento temporal de los símbolos que estén formando una cadena sobre la cual se quiera saber si es aceptada o no por el APD en cuestión. De dicha pila también se saca la información. Los elementos de pila (SP) forman un conjunto que contiene algunos o todos los símbolos del alfabeto y otros símbolos que tienen un carácter lógico, como una marca específica en la pila.
Las operaciones que se pueden realizar en un APD son:
1. Leer un símbolo de entrada. Éste es un símbolo que pertenece a A y forma parte de una cadena a analizar
2. Sacar un símbolo de la pila. Sólo puede ser el último elemento insertado en ella y puede tratarse ya sea que un símbolo del alfabeto o de otro símbolo especial perteneciente a SP.
3. Meter un símbolo en la pila y puede tratarse ya sea que un símbolo del alfabeto o de otro símbolo especial perteneciente a SP.
4. Pasar a otro estado que pertenece a E.
Una Transición es una manera que expresar qué se hace en el APD según varios aspectos a considerar. La nomenclatura utilizada es la siguiente:
1. T = {EA, SL, SS; EN, SP} donde
2. EA = es el Estado Actual donde nos encontramos para hacer el análisis de la cadena a examinar.
3. SL = es el Símbolo que se Lee en ese momento y que puede pertenecer a la cadena a examinar. Si no hay lectura se dice que el símbolo leído es vacío ( λ ).
4. SS = es el Símbolo que se Saca de la pila. Si no se saca nada de la pila se dice que el símbolo extraído es vacío ( λ ).
5. EN = es el Estado Nuevo donde se pasa o que puede ser el mismo que el estado actual. Según el caso, se dice “y paso al estado ...”, o se dice “y quedo en el mismo estado”, respectivamente.
6. SP = es el Símbolo que se mete a la Pila, que siguiendo los casos anteriores, puede ser vacío ( λ ).
En las tuplas (a, b; c):
• el primer símbolo a es lo que se lee; (a, b; c)
Se lee Se mete Se saca de de cadena a la pila la pila • el segundo símbolo b, es lo que se
saca de la pila,
• y el tercer símbolo c, es lo que se mete a la pila.
Siempre se conserva el mismo orden. Estas tuplas forman parte de los Diagramas de Transición de los APD.
Por ejemplo, la notación (P, λ, λ; Q, λ) significa:
P Q
λ, λ; λ • Estoy en el estado P,
• no leo de la cadena de entrada, • no saco de la pila,
• paso al estado Q y • no meto nada en la pila.
Mientras que la notación (P, λ, S; Q, λ) significa:
P Q
λ, S; λ • Estoy en el estado P,
• no leo de la cadena de entrada, • saco S de la pila,
• paso al estado Q y • no meto nada en la pila.
Caso: Sean x, y elementos del alfabeto que se pueden leer, estando en un estado. λ es el símbolo de vacío.
Analice, entienda y aprenda las siguientes notaciones:
x, y; λ
p 1. Por cada x que leo,
me quedo en el mismo estado p, no saco nada de la pila e
inserto una x en la pila
Expresiones equivalentes: (p, x, λ ; p, x) F(p, x, λ) = (p, x)
y, x; λ
p 2. Por cada y que leo
me quedo en el mismo estado p,
saco la x de la pila y no meto nada en la pila Expresiones equivalentes: (p, y, x ; p, λ) F(p, y, x) = (p, λ) λ, x; λ p Expresiones equivalentes: (p, λ, x ; p, λ) F(p, λ, x) = (p, λ) 3. Sin leer ,
me quedo en el mismo estado p, saco la x de la pila y
no inserto nada en la pila.
.
λ, # ; λ q p
4. Sin leer, en el estado p
paso al estado de aceptación q, saco la marca # de la pila y no inserto nada en la pila
Expresiones equivalentes: (p, λ, # ; q, λ) F(p, λ, #) = (q, λ)