You are on page 1of 127

Maquinas de Estado Finito

Teora de Autmatas
Gramticas Y Lenguajes
Formales

Lingstica :
lOrigen de la Teora de los Lenguajes Formales.
lCampo bastante alejado de la informtica.
Elementos
A.- FONTICA: Estudia el conjunto de sonidos de una lengua.
B.- FONOLOGA: Estudia la funcin y el valor de los FONEMAS
C.- SEMNTICA: Estudia el significado de los lingsticos.
lD.- MORFOSINTAXIS O GRAMTICA: Estudia las
formas, clases, reglas y relaciones que rigen la
combinacin entre signos lingsticos. E.- LEXICOLOGA:
Estudia el vocabulario de una lengua.






Gramticas Y Lenguajes
Formales

Avram Noam Chomsky (1928-): Desarroll el primer trabajo que teoras
formales sobre gramticas y lenguajes
Despus de las primeras publicaciones de Chomsky, el concepto de
Gramtica Formal adquiri gran importancia para la especificacin de
lenguajes de programacin; concretamente, se defini con sus teoras la
sintaxis del lenguaje ALGOL 60 (con ligeras modificaciones sobre su
versin primitiva), usndose una gramtica libre de contexto.
La Teora de Lenguajes Formales es de gran utilidad para el trabajo en
otros campos de la Informtica por ejemplo en Informtica Terica,
Inteligencia Artificial, Procesamiento de lenguajes naturales (comprensin,
generacin, y traduccin) y Reconocimiento del Habla.
La Teora de los Lenguajes y Gramticas Formales tiene una relacin
directa con la Teora de Autmatas, siendo posible establecer entre ambas
una correspondencia denominada en Algebra isomorfismo.





Tcmod01.d
oc
Gramticas Y Lenguajes
Formales

TEORA DE LOS LENGUAJES FORMALES: Estudio de los Lenguajes
Formales. Una rama importante de esta teora se ocupa de la descripcin finita
de Lenguajes infinitos. Esta representacin adopta la forma de un mecanismo
abstracto para generar o reconocer cualquier cadena del Lenguaje (llamada
Gramtica). Esta rama se aplica a la sintaxis de los Lenguajes de
programacin (en cuanto son distintos de su semntica, que requiere
elementos de trabajo bastante diferentes). As, el conjunto de todos los
programas vlidos de Pascal o de C, puede considerarse como un Lenguaje
Formal sobre el alfabeto de smbolos de Pascal, o de C respectivamente.
LENGUAJE FORMAL: Lenguaje con reglas explcitas y precisas para su
sintaxis y semntica. Como ejemplo se pueden citar los lenguajes de
programacin y tambin lgica como el clculo de predicados
GRAMTICA FORMAL: Es un esquema generativo para la representacin
finita de los lenguajes, es decir, un solo modelo dinmico para generar frases
o cadenas de un lenguaje. Es la manera principal de especificar un Lenguaje
Formal aunque sea infinito por medios finitos.





Tcmod01.d
oc
Gramticas Y Lenguajes
Formales
LENGUAJE FORMAL: Conjunto de PALABRAS formadas por
ciertas reglas.
GRAMTICA FORMAL: Conjunto de REGLAS empleadas para
formar las palabras del Lenguaje Formal.
Todo Lenguaje Formal, siempre estar vinculado a una
Gramtica Formal, que especificar el mecanismo de
produccin de las palabras que lo conforman.


LENGUAJE FORMAL: Sea un conjunto finito de elementos
llamado Alfabeto; un Lenguaje Formal L definido sobre es un
subconjunto de * (el conjunto de todos los arreglos o cadenas
posibles de formar con los elementos de ), y determinado por las
reglas de una Gramtica Formal.

Tcmod01.d
oc
Gramticas Y Lenguajes
Formales
Ejemplo : Disear un Lenguaje Formal, a partir de ciertas reglas expresadas
textualmente y con el alfabeto = { x, y, z }.
n = {s s es toda cadena de longitud n, que se pueda formar con los smbolos de
}. En este caso, n debe tomar valores especficos de nmeros naturales, como 0, 1, 2,
3, etc.
* Todas las cadenas incluyendo la vaca
+ Todas las cadenas excluyendo la vaca
o = { } <= Cadena vaca, de longitud 0
1 = = { x, y, z }
2 = { xx, xy, xz, yx, yy, yz, zx, zy, zz }
3 = { xxx, xxy, xxz, xyx, xyy, xyz, xzx, xzy, xzz, yxx, yxy, yxz, ... , zzx, zzy, zzz }
4 = { xxxx, xxxy, xxxz, xxyx, xxyy, xxyz, xxzx, xxzy, xxzz, ... , zzzx, zzzy, zzzz }

Tcmod01.d
oc
Gramticas Y Lenguajes
Formales
Determinar finalmente el Lenguaje Formal, en caso
de que las reglas gramaticales (en forma natural o
textual, no formal) fuesen, por ejemplo:
l La cadena es de longitud menor o igual a
tres.
l La cadena finaliza con x con z.
l La cadena no inicia con y.

El Lenguaje Formal resultante sera el siguiente:
L = { x, z, xx, xz, zx, zz, xxx, xxz, xyx, xyz, xzx, xzz, zxx, zxz,
zyx, zyz, zzx, zzz }.

Tcmod01.d
oc
Gramticas Y Lenguajes
Formales
CONCEPTOS IMPORTANTES:
lLos elementos a e se llaman Smbolos del Alfabeto .
lLos elementos s e n se llaman Palabras, Cadenas o
Arreglos sobre .
lLa longitud de una cadena se expresa como |s| y consiste en
la cantidad de smbolos que la forman (no la cantidad de
caracteres).
NOMENCLATURA SIMPLIFICADA PARA CADENAS.
laaaaaaaabb = a8b2
l xxxyyzxxzzz = x3y2zx2z3,
l xyzyzyzyyyx = xy(zy)3y2x =x(yz)3y3x,
l a0 = b0 = ... = z0 =





Tcmod01.d
oc
Gramticas Y Lenguajes
Formales
CONCEPTO: Sea S = uvw una cadena cualquiera,
entonces se tiene que:
a) u es llamado prefijo.
b) v es llamado infijo.
c) w es llamado sufijo o posfijo.
Ejemplo: sea S = COSMOS;
lPrefijo: , C, CO, COS, COSM, COSMO, COSMOS
lSufijo: , S, OS, MOS, SMOS, OSMOS, COSMOS
lInfijo: , C,O,S,M,CO, OS, SM, MO, OS, COS,
OSM, SMO, MOS, COSM, OSMO, SMOS, COSMO,
OSMOS, COSMOS.

Tcmod01.d
oc
OPERACIONES SOBRE
LENGUAJES
Puesto que los Lenguajes Formales son conjuntos, se les pueden aplicar
todas las operaciones de los mismos, tales como unin, concatenacin,
resta o complemento, por ejemplo; sin embargo solamente son de utilidad
para casos prcticos (como operaciones binarias) la unin y la
concatenacin, las cuales se definen respectivamente de la siguiente
manera:
L M = { s | s e L v s e M }
L - M = LM = { lm | l e L, m e M }
EJEMPLO:
Sean L1 = { , a, ac, bca }, L2 = { , b, cb, ab }, evaluar:
a) L1 L2 = { , a, ac, bca, b, cb, ab }
b) L1 - L2 = { , b, cb, ab, a, ab, acb, aab, ac, acb, accb, acab, bca, bcab,
bcacb, bcaab }

OPERACIONES SOBRE
LENGUAJES
Ln = { s | s es toda cadena que se pueda formar concatenando n palabras del
Lenguaje L (pudiendo repetirse tales cadenas)}
Y la frmula que nos permite encontrar todas las cadenas que conforman al
resultado:
{ } si n = 0
Ln = Ya que se trata de una Rel. de
Recurrencia.
L - Ln-1 si n > 0


EJEMPLO:
Dado L = { a, ac, ba, cba }, evaluar L0, L1, L2 y L3.
L0 = { }
L1 = L - L0 = L = { a, ac, ba, cba }
L2 = L - L1 = { aa, aac, aba, acba, aca, acac, acba, accba, baa, baac, baba,
bacba, cbaa, cbaac, cbaba, cbacba }
L3 = L - L2 = { aaa, aaac, aaba, aacba, aaca, aacac, aacba,
acaa, acaac, acaba, acacba, acaca, acacac,
baaa, baaac, baaba, baacba, baaca, baacac, .
cbaaa, cbaaac, cbaaba, cbaacba, cbaaca, ... }
OPERACIONES SOBRE
LENGUAJES
Mientras que todas las cadenas de un determinado En son de la misma
longitud, las de un mismo Ln son generalmente de diferentes tamaos.

A partir de los valores de Ln, surgen las siguientes variantes de L:

L* = Ln | n e 0 = L0 L1 L2 L3 ... ; se llama Cerradura de
Kleene de L.

L+ = Ln | n e = L1 L2 L3 L4 ... ; se llama Cerradura
Positiva de L.
DEFINICIN FORMAL DE
GRAMTICA
Una gramtica es una cudrupla :
G = ( VT , VN , S , P )
donde :
VT = {conjunto finito de smbolos terminales}
VN = {conjunto finito de smbolos no terminales}
S es el smbolo inicial y pertenece a VN.
P = {conjunto de producciones o de reglas de derivacin}
Todas las cadenas del lenguaje definido por la gramtica estn
formados con smbolos del vocabulario terminal VT. El vocabulario
terminal se define por enumeracin de los smbolos terminales.
DEFINICIN FORMAL DE
GRAMTICA
El vocabulario no terminal VN es el conjunto de smbolos
introducidos como elementos auxiliares para la definicin de la
gramtica, y que no figuran en las sentencias del lenguaje. El
vocabulario no terminal se define por enumeracin de los smbolos
no terminales.
La interseccin entre el vocabulario terminal y no terminal es el
conjunto vacio
{VN} {VT} = {}
La unin entre el vocabulario terminal y no terminal es el
vocabulario :
{VN} {VT} = {V}

DEFINICIN FORMAL DE
GRAMTICA
En ocasiones es importante distinguir si un determinado
vocabulario incluye o no la cadena vaca, indicndose
respectivamente con superndice + o superndice *, tal como se
muestra a continuacin :
V+ = V {}
V* = V + {}

El smbolo inicial S es un smbolo no terminal a partir del cual se
aplican las reglas de la gramtica para obtener las distintas
cadenas del lenguaje. Las producciones P son las reglas que se
aplican desde el smbolo inicial para obtener las cadenas del
lenguaje. El conjunto de producciones P se define por medio de la
enumeracin de las distintas producciones, en forma de reglas o
por medio de un metalenguaje por ejemplo BNF (Backus Naur
Form) o EBNF (Extended Backus Naur Form).
DEFINICIN FORMAL DE
GRAMTICA
EJEMPLO:
Disear una Gramtica Formal cualquiera (en este caso sin alguna
especificacin concreta) y determinar algunas cadenas del
Lenguaje que genera:
G = ( VT , VN , S , P )
donde :
VT = { 0,1 }
VN = { A, B, C, D }
S { A }
P = = { A 0DA, A BD1, A C0,
B 1C1, B 11,
C 10A1, C 010,
C1 A,
D C0, D 1, D C }

DEFINICIN FORMAL DE
GRAMTICA
Como ejemplo de cadenas s e L(G) podramos producir las siguientes:
A 0DA 01A 01C0 010100 , que es lo mismo que
(01)2 02.
A BD1 B11 1C111 1010111 , que es lo mismo que
(10)2 13.
En donde la flecha doble ( ) indica que se ha utilizado una regla; el empleo
de las mismas permite ir transformando lo que inicialmente es un smbolo
inicial en una cadena terminada, conteniendo nicamente smbolos terminales.

Al producir la cadena se recomienda subrayar lo que constituye el lado
izquierdo de la composicin empleada, y que se transformar en lo que indica
el lado derecho en el siguiente paso. Por ejemplo, al producir la primera de las
cadenas, aparece en el tercer paso subrayada la A; es tal smbolo el que se
transforma en el siguiente paso en C0. Esto permite al momento de revisar,
saber ms fcilmente qu regla ha sido empleada.

DEFINICIN FORMAL DE
GRAMTICA
EJEMPLO: Comprobar que una Gramtica con:
P = { A 11 | 1001 | A0 | AA }, produce las cadenas que
representan los nmeros entre 3 y 18 y que sean divisibles entre 3
(pero todos en binario). A es el smbolo inicial.


A 11 // 3 en binario.
A A0 110 // 6 en binario.
A 1001 // 9 en binario.
A A0 A00 1100 //12 en binario.
A AA A11 1111 //15 en binario.
A A0 10010 // 18 en binario.
Produce esta Gramtica los siguientes cinco mltiplos de 3 en
binario?, Comprubelo
DEFINICIN FORMAL DE
GRAMTICA
REQUERIMIENTOS IMPORTANTES PARA DISEAR
COMPOSICIONES VLIDAS:

Las reglas de produccin debern:
a) Estar formadas exclusivamente con los elementos de
N T.
b) Tener en su lado izquierdo al menos un smbolo no
terminal.

Existen dos criterios distintos para relacionar al Alfabeto E con los
elementos definidos en la Gramtica Formal G:
N T Alfabeto de la Gramtica : EG.(Smbolos empleados en las
reglas).
T Alfabeto de el Lenguaje : EL. (Smbolos que forman las
palabras).

DEFINICIN FORMAL DE
GRAMTICA
EJEMPLO:Explicar por qu razn en la definicin del diseo de
las composiciones se dice que stas son de la forma ((N T)* - T*
) X (N T)*.

El lado izquierdo de las composiciones deber estar contenida en ((N T)* - T* ).
Por otra parte, el lado derecho de las mismas deber ser una cadena de (N T)*.
Por ejemplo:
Suponer que se disea una Gramtica con N = { X, Y } y con T = { a, b, c }. Determinar los
valores posibles de las cadenas que pudieran tenerse en cada uno de los dos lados de una
composicin vlida para esta Gramtica.

N T = { X, Y, a, b, c }
(N T)* = , X, Y, a, b, c, XX, XY, Xa, ..., cc, XXX, ... , ccc, ...(posible lado derecho)
T* = , a, b, c, aa, ab, ac, ba, ..., cc, aaa, ..., ccc, aaaa, ...
(N T)* - T* = X, Y, XX, XY, Xa, Xb, Xc, Ya, ... (posible lado izquierdo)

NOTA: (N T)* - T* contiene todas las cadenas formadas con los elementos de N T, pero
conteniendo al menos un elemento de N.

GRAMTICA MAL ESTRUCTURADA
En ocasiones, las reglas de produccin para una Gramtica Formal se
disean en forma correcta, pero con ciertos errores de Lgica que
surgen al integrarse todas ellas en un conjunto P.
EJEMPLO:
Describir los errores que hacen de la siguiente una Gramtica mal
estructurada.
G= (T, N, S, P )
N = { A, B, C, D }, T = { 0,1 }, o0 = { A }
P = { A B1, A BC, A 0A,
C CA, C 11A,
DAC 01, D 11, D }
No existe regla alguna que especifique lo que produce
B.
Ninguna regla produce D.
Verificar que no haya reglas intiles (nunca utilizadas),
como es el caso de la combinacin DAC, que
nunca se presentar al derivar.

Recomendacin : todo smbolo no
terminal aparezca por lo menos una vez
en cada lado de al menos una regla de
produccin (y en composiciones
distintas); la excepcin del smbolo
inicial, que puede no aparecer al lado
derecho.

Otros Conceptos
DERIVACIN : Es la accin, partiendo del smbolo inicial y hasta llegar a una
cadena con terminales solamente, de sustituir en una palabra no terminal una
subcadena por su equivalente segn las reglas de produccin; se expresa: A B.

COMPOSICIN O REGLA DE PRODUCCIN : Se expresa como A B, donde A
e (N T)* - T* y B e (N T)*, y en ellas se especifica qu es lo que se puede
sustituir al construir una cadena de un Lenguaje.

Dada una Gramtica G puede construirse un Lenguaje L(G), utilizando
composiciones para derivar en las cadenas que constituyen el Lenguaje.
L(G) = { s|s e T* . o0 * s}

Una Gramtica genera en la mayora de los casos un Lenguaje con un nmero
infinito de cadenas, pero todas ellas de la misma estructura gramatical. Este
principio es muy importante para justificar el siguiente tema, en el que se vincular
a una Gramtica Formal con el Lenguaje Formal que produce.

CARACTERIZACIN DE UNA GRAMTICA
Consiste en expresar las caractersticas del Lenguaje producido por una Gramtica
preferentemente por medio de una expresin regular, o bien, por medio de
enunciados en Lenguaje natural si lo anterior no es posible.
EJEMPLO:
Caracterizar la Gramtica G = ({a, b}, {R, S}, {R}, {R bR, R aS, S bS, S
b})
R bR
bbR
bbbR
:
bm R | m e o
bm a S
bm ab S
bm abb S
:
bm abn S | n e o
bm abn b
L (G) = { bm abn | m e o , n e } = { b*ab+ }

Ejercicios
EJEMPLOS: Caracterizar las Gramticas con :
P = { S AC, A aAb | ab, C cC | c } y o0 = { S } y especificar si
produce un Lenguaje finito o infinito.


Sean N = { S, A, B }, T = { a, b }, o0 = { S }. Caracterizar el Lenguaje
generado por la Gramtica con P = ( S AB, A aAb | , B bBa | }.

L = { ambmcn | m, n c }.


S A - B // Regla empleada: S AB.
aAb bBa

amAbm bnBan| m, n c 0 // Reglas empleadas: A aAb y B bBa.
ambm bnan // Reglas empleadas: A y
B .


L = { am bm+n an | m, n c 0 }.
Ejercicios
EJEMPLOS: Disear una Gramtica que genere el Lenguaje :
L = { xmynzm | m, n c 0}.
lDefinamos un smbolo inicial A
lObservamos que la cantidad de x y z es similar, es decir la misma
composicin las produce.
lLas y se obtienen de manera separada, ya que su cantidad es independiente
que la de x y z.
lSe propone iniciar con la regla A xAz. . La recursividad permitir la
asignacin de una, ninguna o muchas veces la aparicin de tales smbolos
lLa siguiente regla es A B, para evitar que se vuelvan a producir x y z
adems de evitar que se revuelvan con las y.
lse agrega la regla recursiva B By , o bien la regla B yB. Con ello,
aparecern las y que sean necesarias.
lFinalmente B para eliminar el no terminal y concluir la cadena que se
vaya a producir.
lP = { A xAz, A B, B By, B } con o0 = { A }.



Gramticas Equivalentes
Dos Gramticas G1 y G2 se llaman equivalentes, en smbolos G1 ~ G2, si L(G1) =
L(G2), es decir, si producen exactamente el mismo Lenguaje a pesar de ser
diferentes.
Tendrn los mismos smbolos terminales, y muy probablemente el mismo smbolo
inicial. Sin embargo, las composiciones seran diferentes, y muy posiblemente,
tambin el conjunto de los smbolos no terminales.

Por ejemplo, son equivalentes las tres siguientes Gramticas:
P = { A xA, A Ay, A xy }
P = { A xA, A xB, B By, B y }
P = { A BC, B xB, B x, C Cy, C y }
Ya que todas ellas producen al mismo Lenguaje L(G) = { x+y+ }.

Nota : Una Gramtica debe producir el mismo Lenguaje, un Lenguaje
puede ser generado por distintas Gramticas. Esta afirmacin
concuerda con las caractersticas de una funcin, recordando que L = f
(G).
GRAMTICAS EQUIVALENTES
Dos Gramticas G1 y G2 se llaman equivalentes, en smbolos G1
~ G2, si L(G1) = L(G2), es decir, si producen exactamente el
mismo Lenguaje a pesar de ser diferentes.
Si dos Gramticas son equivalentes, entonces tendrn los mismos
smbolos terminales, y muy probablemente el mismo smbolo
inicial.

P = { A xA, A Ay, A xy }
P = { A xA, A xB, B By, B y }
P = { A BC, B xB, B x, C Cy, C y }
Ya que todas ellas producen al mismo Lenguaje L(G) = { x+y+ }.

JERARQUA DE CHOMSKY
Clasificacin en cuatro clases o subtipos de Lenguajes Formales
(Noam Chomsky en 1959).

JERARQUA DE CHOMSKY
El nombre de Jerarqua se debe a que los cuatro tipos no son
disjuntos, sino que se jerarquizan en subconjuntos, como se
observa en el siguiente Diagrama de Venn
Si una Gramtica es de un
determinado tipo, segn la Jerarqua
anterior, tambin se podra decir que
es de alguno de los tipos anteriores;
por ejemplo, una de tipo 2 sera
tambin de tipo 0 y 1. Sin embargo, el
criterio que se seguir es que se la
llamar solamente por el tipo ms
selecto que alcance, en el entendido
de que tambin cumplir con los
criterios de los tipos anteriores.

GRAMTICA DE CHOMSKY
(TIPO 0)
No existen restricciones en las reglas de produccin
Composiciones elaboradas en forma correcta.
Cualquier Gramtica, debe ser por lo menos de tipo 0
EJEMPLO:
Disear una Gramtica de Chomsky, en este caso sin especificaciones.
G= (N, T, P, o0 )
N = { A, B, C, D } T = { 0, 1, 2 } o0 = { A }

P = { A B02 | D01 | 0, AB BA | D, C 0A |1B2A |1,
D A0 | B02 | 2 |, 0B A, B CA }
GRAMTICA DE CHOMSKY
(TIPO 1)
Toda composicin es de la forma :
o A | o o | donde: o, | e (N T)*; A e N; o e (N T)+.
Se interpreta como que el prefijo derecho sea igual que el
izquierdo, que el sufijo derecho sea igual que el izquierdo, que
el infijo izquierdo sea un no terminal, y que el infijo derecho
sea cualquier cadena con excepcin de .
EJEMPLO:
Disear una Gramtica Sensible al Contexto, en este caso sin
especificaciones.
G= (N, T, P, o0 )
N = { S, A, B, C, D, E } T = { a, b, c }
o0 = { S }
P = { S aAB | aB, A aAC | aC,
B Dc, D b,
CD CE, CE DE,
DE Dc, Cc Dcc }
GRAMTICA DE CHOMSKY
(TIPO 1)
Existe una caracterstica no deseable en este tipo de gramtica, la indecibilidad
S aAB aaACB aaACDc aaACbc aaaCCbc ?
Al intentar producir una cadena de L(G) se lleg a un paso de la derivacin en
donde ya no se poda continuar, por no existir una regla adecuada y que se pudiera
aplicar en ese momento. Podra pensarse que la Gramtica est mal estructurada,
pero no es as. De hecho, C s aparece al lado izquierdo, no slo en una regla, sino
en tres, aunque siempre acompaada de otro smbolo.
A pesar de que en el caso anterior no se obtuvo cadena alguna, stas s se pueden
obtener con otras derivaciones posibles, resultando inclusive el siguiente Lenguaje:
L(G) = { ambncm | m, n e } , el cual es un Lenguaje sensible al contexto.

GRAMTICA DE CHOMSKY
(TIPO 1)
Si existe indecibilidad en esta Gramtica, es lgico suponer que
tambin existir y con mayor razn en la de Chomsky (0) . Por lo
cual ambas son muy poco usuales en aplicaciones
computacionales
Dado que | o A | | s | o o | |, una caracterstica de las
derivaciones en una Gramtica sensible al contexto, es que la
longitud de la cadena nunca se decrementa al derivar.

El nombre de sensible ( o dependiente ) al contexto le resulta de
que, para cambiar A por o (que es en s lo nico que cambia
cuando se deriva) depende necesariamente de la presencia de o y
|, flanqueando a la A.
GRAMTICA LIBRE O INDEPENDIENTE DE
CONTEXTO (TIPO 2)
Si toda derivacin es de la forma A o donde A e N y o e (N
T)+. El lado izquierdo de las composiciones es un nico smbolo
no terminal y el derecho podr ser cualquier combinacin de
Terminales y No Terminales, excepto .

EJEMPLO:
Disear una Gramtica Libre de Contexto, en este caso sin
especificaciones:
G= ( N, T, P, o0 )
N = { E, F, G, H } T = { q, r, s } o0 = { E }

P = { E FGs | rE | GF | H,
F Hq | r,
G Ers | Fq | sE | s,
H GEs | sG | q }

GRAMTICA LIBRE O INDEPENDIENTE DE
CONTEXTO (TIPO 2)
En una Gramtica de este tipo nunca se presenta el caso de una
derivacin que no se pueda concluir, es decir, nunca se presenta
un caso de indecibilidad.

En este caso, para derivar un no terminal, no se requiere de la
presencia de smbolo alguno a un lado, es decir, no depende del
contexto.

Este tipo es muy importante en las aplicaciones
computacionales, ya que es el que se emplea para definir la
sintaxis de los lenguajes de programacin como C o Pascal.
GRAMTICA REGULAR (TIPO 3)
Si toda composicin es de una de las formas, o bien A o, o bien A
o B; donde A, B e N y o e T. El lado izquierdo est formado por un
smbolo no terminal, y el derecho por un terminal, o un terminal seguido de
no terminal.

Al derivar para producir una cadena, aparece un solo smbolo no terminal
a la vez y quedando siempre hasta el final de la cadena que se est
obteniendo (hasta la derecha); la cadena se va formando smbolo a
smbolo terminal de izquierda a derecha. Obsrvese la regularidad que
manifiesta y que le signific el nombre.

Ejemplo de Gramtica Regular:
G= (N, T, P, o0 )
N = { A, B, C, D, E } T = { x, y, z } o0 = { A }
P = { A xA | yC | x, B xC | xD | yE | x,
C yA | xC | yE, D xA | xB,
E yB | yE | y }

GRAMTICA REGULAR (TIPO 3)
Una cadena producida por esta Gramtica podra ser:
A xA xyC xyyE xyyyE xyyyyE xyyyyyB
xyyyyyx.

Como ya se haba dicho, las cadenas se construyen smbolo por
smbolo y de izquierda a derecha en una forma muy sencilla. El no
terminal siempre aparece como sufijo.

Ntese que siempre debe aparecer el Smbolo Terminal antes que
el No terminal, en la parte derecha de las reglas. No es vlido que
una regla sea, por ejemplo A Ax.

Este tipo es el que se emplea para definir la estructura lxica
de los tokens en los lenguajes de programacin como C o
Pascal.
Otras Gramticas
Gramtica Lineal : a la que cada produccin contiene a
lo sumo, un no terminal en el lado derecho de las reglas :
Ejemplo de Gramtica lineal derecha:
P = {S aS | abT | abcT | abcd,
T S | cS | bcT | abc | abcd }.

Gramticas Con Lambda O Decidibles:
Son aquellas en las cuales e L(G). Debe existir una
derivacin que nos lleve a la cadena vaca partiendo del
smbolo inicial.
Una Gramtica sin reglas lambda no puede ser decidible.
Una con reglas lambda, puede ser o no ser decidible,
segn la estructura de las composiciones.

P = { A , ... } Con Reglas S
decidible.
Ejemplo
P = { A B, B , ... } Con Reglas S
decidible.
P = { A Bx, B , ... } Con Reglas No
decidible

JERARQUA DE OPERADORES DE
LENGUAJES
Si una expresin compuesta ( tal como L1 * - L2 - L3 L4*)
contiene varias indicaciones de operaciones vlidas con
Lenguajes, stas se efectuarn en el siguiente orden:
a) Parntesis b) Superndices c) Concatenacin d)
Unin.

Ejercicios
Determinar en cada inciso: qu tipo de Gramtica se tiene?,
expresar si es o no decidible y caracterizarla.
lG = ({ S, A }, { 0, 1 }, { S 0A, A 10A | } , {S}).
lG = ( { S }, { 0, 1 }, { S S01 | 0 }, { S } ).
lG = ( { C, P, S }, { x, y, z }, ( C PCS | yC | , P x, S z
}, { C } ).


Ejercicios
P = {S A | AAB, Aa ABa, A aa, AB ABB, Bb ABb, B b}
lDe qu tipo es, segn la Jerarqua de Chomsky?
lDemostrar que a2b2a2b es una cadena de L (G).
lEs decidible? Por qu?
lDeterminar, si es posible, una cadena de L(G) tal que |s| = 6 por
derivacin a la derecha.

P = {S bS | aA | b, A aS | bA | a} con smbolo inicial S
lQu cantidad de a y de b pueden tener las cadenas de L (G)?
lEs una Gramtica decidible? Por qu?
lDe qu tipo es, segn la Jerarqua de Chomsky?
lEncontrar, si es posible, una cadena de longitud 6 por derivacin a la
derecha y otra por la izquierda.
S bS bbS bbaA bbabA bbabbA bbbabba .

FORMA NORMAL DE
CHOMSKY (CNF)
Se presenta cuando el lado derecho en todas las reglas de
produccin de una Gramtica Libre de Contexto consiste en un
smbolo terminal o exactamente dos no terminales.
EJEMPLO: Gramticas equivalentes, una de ellas en CNF.
P1 = { S xSy, S xy }
P2 = { S XM, S XY, M SY, X x, Y y }
Se ve claramente que L (G1)= { xn yn | n e } = L (G2)
G1 ~ G2 .
G2 est en Forma Normal de Chomsky.
TEOREMA : Si G es una Gramtica Libre de Contexto, entonces
existe otra Gramtica libre de contexto G expresada en CNF tal
que G ~ G.


PROCEDIMIENTO PARA TRANSFORMAR
UNA GRAMTICA A LA CNF
PASO 1 ) Se transforman las combinaciones de terminales y no terminales, o bien
donde haya ms de un terminal al lado derecho de las composiciones. Para cada
Terminal a e P, se define un no terminal especfico A, y la regla A a con lo que
se sustituye cada ocurrencia de a por A.
SabMa Sxy





PASO 2 ) Se transforman las reglas en las que en el lado derecho hay ms de dos
no terminales. Se hace de la siguiente manera: La regla N N1 N2 N3 ... Nt se
sustituye por el encadenamiento de t-1 reglas:
N N1 R1 R1 N2 R2 R2 N3 R3 ... Rt-2 Nt-1 Nt




S ABMA
A a
B b
SXY
Xx
Yy
PROCEDIMIENTO PARA TRANSFORMAR
UNA GRAMTICA A LA CNF
PASO 2 ) Se transforman las reglas en las que en el lado derecho
hay ms de dos no terminales. Se hace de la siguiente manera:
La regla N N1 N2 N3 ... Nt se sustituye por el encadenamiento
de t-1 reglas:
N N1 R1 R1 N2 R2 R2 N3 R3 ... Rt-2
Nt-1 Nt

SABMA SXAU







SAU
UBV
VMA
AXI
IAU
PROCEDIMIENTO PARA TRANSFORMAR
UNA GRAMTICA A LA CNF
PASO 3 ) Se transforman las reglas que contengan a la derecha
un solo smbolo no terminal. Se hace de la siguiente manera:
Dadas las reglas:N t N t-1 N t-1 N t-2 .N 2 N
1

Si N 1 A, entonces N t A
Si N 1 AB, entonces N t AB
y se eliminan las composiciones innecesarias.

EJEMPLO:
AB, BR, R0 es sustituida por: A0







PROCEDIMIENTO PARA TRANSFORMAR
UNA GRAMTICA A LA CNF
EJEMPLO: Convertir la siguiente Gramtica Libre de Contexto, a
otra equivalente, en su Forma Normal de Chomsky (CNF):
P = { S zS | AB | C, C BA | xA | yz,
A CE | CDE | zD, D xyz,
B ABA | E, E EE | zB }.
PASO 1:
P = { S ZS | AB | C, C BA | XA | YZ,
A CE | CDE | ZD, D XYZ,
B ABA | E, E EE | ZB,
X x, Y y, Z z }.








PROCEDIMIENTO PARA TRANSFORMAR
UNA GRAMTICA A LA CNF
PASO 2:
P = { S ZS | AB | C, C BA
| XA | YZ,
A CE | CM | ZD, D XN,
B A | E, E EE | ZB,
X x, Y y, Z
z,
M DE, N YZ, BA}.

PASO 3:
P = { S ZS | AB | BA | XA | YZ, C BA | XA |
YZ,
A CE | CM | ZD, D XN,
B A | EE | ZB, E EE | ZB,
X x, Y y, Z
z,
M DE, N YZ, BA}.






Ejercicio
EJEMPLO:
Convertir la siguiente Gramtica Libre de Contexto a su CNF:
P = { A xy | Bx | xExz, D xx | yB | xE,
B zC | DE | C, E FA | yCy | A,
C DC | xyF | FA | y, F AC | BB }.

FORMA (NORMAL) DE BACKUS -
NAUR (BNF)
Primera notacin formal cuyo empleo se ha
generalizado para describir la sintaxis de un
lenguaje de programacin (John Backus, 1960).
Fortran, Pascal, C, C++ y Algol pueden
representarse en BNF.
Se adopt de inmediato para describir Algol 60.
Despus se supo que Panini haba usado una
notacin similar a la BNF entre 400 y 200 A.C. para
describir las complejas reglas de la Gramtica del
snscrito.


LA BNF ES, EN ESENCIA, UN CAMBIO DE
NOMENCLATURA
Tres criterios para modificar el aspecto que presenta la Gramtica como la
conocemos.
l1. Smbolos no terminales: Se delimitan con < >.
l2. Composiciones: Se sustituye la flecha por ::=.
l3. Composiciones mltiples: Se pueden agrupar con | (o), cuando varias
reglas
tienen el mismo valor en el lado izquierdo.

EJEMPLO:
G = ( {R, S}, {a, b}, {R bR, R aS, S bS, S b} , {R} )
G = ( { <R>, <S>}, {a, b}, { <R> ::= b<R> | a<S>, <S> ::= b<S> | b} , {<R>} )

Resuelve
Mostrar que la cadena s = -318 e L(G), donde
G = ( N, T, P, o0 ) con los siguientes:
N = { <entero>, <entero c/signo>, <entero s/signo>, <dgito> }
T = { +, -, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
P = { <entero> ::= <entero c/signo> | <entero s/signo>,
<entero c/signo> ::= + <entero s/signo> | - <entero s/signo>,
<entero s/signo> ::= <dgito> | <dgito> <entero s/signo>,
<dgito> ::= 0 |1 |2 |3 |4 |5 |6 |7 |8 |9 }
o0 = { <entero> } //Indica lo que produce la Gramtica.
Maquinas de Estado Finito
Herramienta muy til para especificar aspectos
relacionados con tiempo real, dominios reactivos o
autnomos, computacin reactiva, protocolos,
circuitos, arquitecturas de software, etc.
Modelo que posee sintaxis y semntica formales y
que sirve para representar aspectos dinmicos que
no se expresan en otros diagramas.

Sintaxis
Son una tupla donde:
lS ={ s1, s2,.... sm}: es un conjunto finito de nodos.
l : es un alfabeto finito de etiquetas.
lA: es un conjunto finito de aristas etiquetadas que unen
nodos.
lsk S : es el estado inicial.
Vale la pena destacar que formalmente la
mquina de estado es la tupla anterior y no el
dibujo. Este es tan slo una representacin
grfica de la mquina de estado para tener una
ms sencilla y rpida visualizacin de su
contenido.
Semntica
Los nodos representan los posibles estados de
aquello que se desea modelar. Las etiquetas
representan eventos que provocan un cambio. Las
aristas determinan de qu manera cada estado,
dado un evento, deriva en otro estado.
Trazas Rutas
El conjunto de posibles trazas correspondientes a
una mquina de estado finitos, se puede definir en
trmino de grafos, cmo el conjunto de todos los
caminos (de ejes) alcanzables desde el estado
inicial.
{a, b, a} correspondiente a 1, 2, 3, 1
{b, a} correspondiente a 1, 3, 1
{a, b, a, b, a} correspondiente a 1, 2, 3,
1, 3, 1
{b, a, a, b, a} correspondiente a 1, 3, 1,
2, 3, 1
{b, a, b, a, ... , b, a} 1, 3, 1, 3, , 1, 3
Deadlock
Formalmente hablando, una FSM
, tiene deadlock, si existe algn nodo s S , tal que
no existen un evento e y un nodo t S tal que (s,e, t
) A. En otras palabras, si existe algn nodo que
no posea salida para ningn evento.
Semntica del deadlock
La existencia de deadlock no necesariamente
habla de un mal modelado. Ms adelante veremos
que puede ser un efecto no deseado de la
composicin de FSMs.
FSM
Ejemplo. Modelar el siguiente problema con un
FSM
lFuncionamiento de un Horno de Microondas bajo
las siguientes condiciones.
lEl horno microondas posee una puerta.
lSi la puerta est cerrada, entonces puede estar o no en
funcionamiento (segn se prenda o apague).
lEstando prendido no es posible abrir la puerta del horno
sin antes apagarlo.
lTambin asumamos lo siguiente: en cualquier momento es
posible establecer el modo de coccin.

Respuesta
Composicin de un FSM
Una FSM puede descomponerse en varias FSMs
ms simples. Sin embargo no es trivial hacerlo, y
hay que tener mucho cuidado de que la
composicin de las maquinas sencillas represente
exactamente a la FSM descompuesta y no a una
parecida.
Sintaxis de la composicin
La composicin de FSMs se realiza a travs de la
sincronizacin de etiquetas.
Ejemplo de Paralelizacin Autmatas Finitos
Determinsticos y No
Determinsticos
Autmatas finitos
determinsticos:
l1. Un conjunto finito de
estados y un conjunto de
transiciones de estado a
estado, que se dan sobre
smbolos de entrada
tomados de un alfabeto S .
l2. Para cada smbolo de
entrada existe
exactamente una
transicin a partir de cada
estado (posiblemente de
regreso al mismo estado).
l3. Un estado, por lo
general denotado como q0
es el estado inicial, en el
que el autmata
comienza.
l4. Algunos estados (tal
vez ninguno) estn
designados como final o
de aceptacin. Un
autmata finito
determinstico es una tupla
(Q, S , , q0, F) donde:
Q es un conjunto finito de estados.
S un alfabeto de entrada finito.
q0 Q , el estado inicial.
F Q el conjunto de estados finales o
de aceptacin.

Autmatas Finitos
Determinsticos y No
Determinsticos
es la funcin d : Q x S Q que determina el nico
estado siguiente para el par (q1, s )
correspondiente al estado actual q1 y la entrada s .
DFA de sus siglas en ingls Deterministic Finite
Automaton. Usaremos M = (Q, S , q0, F, ).
Autmatas Finitos
Determinsticos y No
Determinsticos
AUTMATAS FINITOS NO DETERMINSTICOS:
lUn autmata finito no determinstico es una quinta
tupla ( Q, S , q0, , F) en donde Q, S , q0 y F
(estados, entradas, estado inicial y estados finales)
poseen el mismo significado que para un DFA, pero
en este caso es una transformacin de Q x S a 2Q,
puesto que es una relacin para todo par (q, s )
compuesto por el estado actual y el smbolo de la
entrada, (q, s ), es una coleccin de cero o ms
estados [es decir, (q, s ) Q]. Esto indica que, para
todo estado q1 se pueden tener cero o ms
alternativas a elegir como estado siguiente, todas
para el mismo smbolo de entrada.
Autmatas Finitos
Determinsticos y No
Determinsticos Autmatas Finitos
Determinsticos y No
Determinsticos Autmatas Finitos
Determinsticos y No
Determinsticos Autmatas Finitos
Determinsticos y No
Determinsticos Autmatas Finitos
Determinsticos y No
Determinsticos Autmatas Finitos
Determinsticos y No
Determinsticos
Equivalencia entre AFND y AFD
Teorema:
Sea L un lenguaje aceptado por un AFND. Entonces existe un AFD
que acepta el mismo lenguaje L. Es decir, L(AFND) = L(AFD)
Algoritmo para obtener AFD a partir de AFND:
Dado el autmata finito no determinstico MND = <END, A, oND,
e0ND, FND>, se define el autmata finito determinstico
correspondiente
MD= <ED, A, oD, e0D, FD> como sigue:
ED = P(END) (conjunto potencia de END).
Cada elemento de ED se representa como [e1, e2, ..., ei]
donde e1, e2, ..., ei e END.
[e1, e2, ..., ei] es un nico estado de MD

Autmatas Finitos
Determinsticos y No
Determinsticos
Algoritmo para obtener AFD a partir de AFND:
A: alfabeto de entrada
e0D = [e0ND] (estado inicial)
FD: conjunto de todos los estados de ED que contienen al menos
un estado final de MND.
oD: ED x A ED, se define como

oD([e1, e2, ..., ei], a) = [el, em, ..., ek] sii

oND({e1, e2, ..., ei}, a) = oG ({e1, e2, ..., ei}, a) = {el, em, ..., ek},

oG (C, a) = o (p, a) y oG (C, a) = C (C: conj. de estados)
p e C
oD aplicada a un elemento [e1, e2, ..., ei] de ED se calcula
aplicando oND a cada estado de END que est en [e1, e2, ..., ei].




Ejemplo
M={{q0,q1,q2},{0,1}, , q0,
{q2}}
Esta
do
0 1
q0 {q0,q1} {q0}
q1 q2
q2
Ahora el nuevo conjunto de estados de M es 2Q por lo tanto 23
=8 :
Q={{},{q0},{q1},{q2},{q0,q1},{q0,q2}, {q1,q2},{q0,q1,q2}}
De los cuales el conjunto F, sern todos aquellos subconjuntos
que contengan al menos un estado final de M.
F= {{q2},{q0,q2},{q1,q2},{q0,q1,q2}}
La funcin de transicin es :
oG (C, a) = o (p, a) y oG (C, a) = C (C: conj. de estados)
p e C
Ejemplo
M={{q0,q1,q2},{0,1}, , q0,
{q2}}
Esta
do
0 1
q0 {q0,q1} {q0}
q1 q2
q2
oG (C, a) = o (p, a) y oG (C, a) = C (C: conj. de estados)
p e C

oG ({q0}, 0)= {q0,q1}, oG ({q0}, 1)= {q0}
oG ({q1}, 0)= , oG ({q1}, 1)= {q2}
oG ({q2}, 0)= , oG ({q2}, 1)=
oG ({q0,q1}, 0)= {q0,q1} U , oG ({q0,q1}, 1)= {q0} U {q2}
oG ({q0,q2}, 0)= {q0,q1} U , oG ({q0,q2}, 1)= {q0} U
oG ({q1,q2}, 0)= U , oG ({q1,q2}, 1)= {q2} U
oG ({q0,q1,q2}, 0)= {q0,q1} U U , oG ({q0,q1,q2}, 1)= {q0} U {q2} U

Ejemplo
M={{{q0},{q1},{q2},{q0,q1},{q0,q2}, {q1,q2},{q0,q1,q2}},{0,1}, , q0, {{q2}, {q0,q2},
{q1,q2},{q0,q1,q2}}
Estado 0 1
{q0} {q0,q1} {q0}
{q1} {q2}
{q2}
{q0,q1} {q0,q1} {q0,q2}
{q0,q2} {q0,q1} {q0}
{q1,q2} {q2}
{q0,q1,q2
}
{q0,q1} {q0,q2}
Ejemplo
M={{{q0},{q0,q1},{q0,q2}},{0,1}, , q0, { {q0,q2}}
Estado 0 1
{q0} {q0,q1} {q0}
{q1} {q2}
{q2}
{q0,q1} {q0,q1} {q0,q2}
{q0,q2} {q0,q1} {q0}
{q1,q2} {q2}
{q0,q1,q2
}
{q0,q1} {q0,q2}
Eliminando estados aislados, los cuales son aquellos a los que no se
puede llegar partiendo del estado inicial. Nos queda:
Minimizacin de un AFD
Teorema
Para cada AFD existe un AFD con cantidad mnima de estados que acepta
el mismo lenguaje.
Algoritmo para minimizar un AFD
(divide al conjunto de estados del AFD en clases de estados equivalentes)


Dado un AFD = <Q, , o, q0, F>, dos estados p, q e E son
equivalentes s y slo s para toda cadena x e *,
o* (p,x) e F o* (q,x) e F o* (p,x) e F o* (q,x) e F
(Si las transiciones desde p con la cadena x llegan a un estado final, las de q con esa
misma cadena x tambin tienen que llegar, lo mismo si no se llega a un estado final)

Minimizacin de un AFD
Algoritmo para minimizar un AFD
1) Eliminar los estados no alcanzables desde el estado inicial.
2) Eliminar los estados desde los que no es posible alcanzar un estado final.
3) Construir una particin H0 del conjunto de estados, que consiste en dos
grupos: estados finales y estados no finales.
4) Sea K = 0.
5) Definir HK+1 de la siguiente manera:
para cada grupo G de una particin HK, dividir a G en subgrupos tales que
dos estados s y t estn en el mismo grupo s y slo s para todo smbolo a
del alfabeto de entrada, los estados s y t van al mismo grupo de HK.
6) K = K + 1.
7) Si HK = HK-1 volver al paso 5. En caso contrario, terminar.
Minimizacin de un AFD








={a,b} // Alfabeto de entrada


Ejemplo
Minimizacin de un AFD
q0 = A // Estado de inicio
F = {E} // Estados de aceptacin
Q = {A,B,C,D,E} // Estados del autmata
Estado Entradas
a b
A B C
B B D
C B C
D B E
E B C
Minimizacin de un AFD
El primer paso del algoritmo es la construccin de la particin inicial del
conjunto Q
del AFD. Esta particin consta de dos grupos :
G1 = {E} // Estados de aceptacin; conjunto F del AFD
G2 = {A,B,C,D} // Otros estados Q-F
Podemos denotar la particin inicial de la siguiente manera :
= { (E) , (ABCD) }
2o. Paso. Obtener una nueva particin nueva
El grupo G1 = (E) no es posible particionarlo y es obvio debido a que tiene un solo
estado
Ah, en nueva se aade G1. nueva = { (E) }.
Veamos ahora el grupo G2 = (ABCD).
Transiciones con smbolo a de los estados en G2. :
En todos los estados su transicin es hacia el estado B, y este estado
forma parte del
grupo, por lo tanto, NO HAY PARTICIN POSIBLE.

Minimizacin de un AFD
lTransiciones con el smbolo b de los estados en G2 :




lEn este caso, los estados A, B y C transicionan hacia un estado perteneciente
al grupo G2,pero el estado D tiene una transicin a un estado E que no forma
parte de este grupo G2. Por lo tanto SI HAY PARTICIN y sta es :
G21 = (ABC) G22 = (D)
Agregamos estos nuevos grupos a nueva :
nueva = { (E) , (ABC) , (D) }
La nueva particin ahora tiene 3 grupos : G1 = (E), G2 = (ABC) y G3 = (D). Los
grupos iniciales de P = { (E), (ABCD) } han sido analizados, por lo tanto debemos
seguir con la etapa (3) del algoritmo de particin.
Minimizacin de un AFD
Paso 3. Comparamos nueva con :
{ (E) , (ABC) , (D) } = { (E), (ABCD) } ? No son iguales

Por lo tanto el paso (3) dice que debemos repetir la etapa (2), pero ahora
con :
= nueva
Ahora Con = { (E), (ABC), (D) }, el grupo que puede aceptar ser
particionado es : (ABC). Analicemos las transiciones de los estados de
este grupo para cada smbolo en la entrada:
Transiciones para a Transiciones para b
Minimizacin de un AFD
lEntonces, la particin de (ABC) es : (AC) y (B). Estos nuevos subgrupos son
aadidos a nueva , en lugar del grupo (ABC) :
l nueva = { (E), (AC), (B), (D) }
lEnseguida probamos el paso (3) y vemos que : nueva Por lo tanto,
repetimos el paso (2), con := nueva .
l = {(E), (AC), (B), (D)} es el valor para la particin que se somete al paso (2).
El nico grupo que puede particionarse es (AC). Analicemos pues, sus
transiciones :

lTransiciones para a Transiciones para b

Minimizacin de un AFD
= nueva , por lo tanto nos vamos al paso 4.
En el paso (4), de P = {(E), (AC), (B), (D)} seleccionamos de cada grupo,
un estado representativo. Es claro, que los estados representativos para
los grupos (E), (B) y (D) son los mismos estados que componen a cada
grupo. Pero en el grupo (AC) si debemos escoger a uno de los estados
sea A, o bien C, como un estado representativo
Lo que queda por realizar es obtener la tabla de transicin del nuevo AFD
mnimo. Los renglones de dicha tabla sern los estados representativos.
Las transiciones son obtenidas del autmata
Estados Entradas
a b
A B A
B B D
D B E
E B A
Autmatas Finitos con
Transiciones en Vaco
Autmata que tiene transiciones en la cadena vaca, es decir, sin leer su
entrada. Este modelo es llamado un Autmata Finito (no determinstico)
con transiciones en vaco (AFND-)

El siguiente es un diagrama de transicin para un AFND-
que acepta el lenguaje consistente en cadenas con
cualquier cantidad de 0's, seguidos de cualquier cantidad
de 1's, seguidos de cualquier cantidad de 2's.

Como siempre, un AFND- acepta una cadena w, si y solo
si hay un camino con etiqueta w desde el estado inicial a
alguno de los estados finales.

Por supuesto que los arcos con etiqueta pueden aparecer
en ese
camino, aun cuando las no se ven en la cadena w.

Autmatas Finitos con
Transiciones en Vaco
La cadena 002 pertenece al autmata?, si es
as cual seria el camino que recorrera? q0q0q0q1q2q
2
Los arcos tienen etiquetas 0, 0, , , 2, respectivamente. Por
lo tanto, la cadena 002 es aceptado por ese autmata.

Autmatas Finitos con
Transiciones en Vaco
Formalmente, un autmata finito no determinstico con transiciones en
vacio es una quntupla:(Q,, q0, F).
con Q, , q0 y F como en el caso de los AFND y la
funcin de transicin va de
es decir

La idea es que (q, a) contiene a todos los estados a
los cuales hay una transicin con etiqueta a desde q, ya
sea que a es un smbolo del alfabeto o .

Tabla de la funcin de transicin del autmata
en cuestin
Autmatas Finitos con
Transiciones en Vaco
Es conveniente extender la funcin de transicin a una nueva funcin
de tal forma que (q,w) contenga todos los estados a los que se puede
llegar desde q
por caminos con etiqueta w; sin descartar la posible inclusin entre
estos de arcos con
etiqueta .
Para definir , es importante calcular el conjunto de todos los estados
alcanzables desde algn estado q, utilizando solo transiciones .
Utilizaremos el trmino CERRADURA ( CLAUSURA) q) para denotar al
conjunto de estados p tales que existe una trayectoria de q a p con
etiqueta .
En el AFND- anterior, se tiene:
CERRADURA (q0)={q0 ,q1,q2}
CERRADURA (q1)={q1,q2}
CERRADURA (q2)={q2}
Es natural extender la CERRADURA vaca a un conjunto de estados
como sigue:
CERRADURA (p)




Autmatas Finitos con
Transiciones en Vaco
Es posible definir la funcin de transicin extendida a cadenas, :
l(q, )=CERRADURA (q)
lPara todo w en * y a en , (q,wa)=CERRADURA (p), en donde p=[p| para
algn r en (q,w), p est (r, a) }.
es conveniente extender y a conjuntos de estados, a travs de:
l(R, a)=q en R (q, a) y
l(R,w)= q en R (q,w)
para conjunto de estados en R.
Ntese que a diferencia de los casos anteriores, (q,a)no es necesariamente igual a
(q, a), ya que el primero incluye los estados alcanzables desde q por caminos con
etiqueta a (incluyendo posiblemente arcos con etiqueta ), mientras que el segundo
incluye solo aquellos estados alcanzables desde q por un arco con etiqueta a.
Similarmente, (q, ) es distinto de (q, ). Por lo tanto, si se esta hablando de un AFND-
es necesario distinguir entre y .



Autmatas Finitos con
Transiciones en Vaco
Definimos L(M), el lenguaje aceptado por un AFND- , M = (Q,, q0, F)
como {w|,w) contiene un estado en F}.
Ejemplo. Siguiendo con el autmata anterior, considere la cadena 01
, ) CERRADURA (q0)={q0 ,q1,q2}
Por tanto
, ) =CERRADURA ((, ) ,0))
=CERRADURA (({q0 ,q1,q2},0))
=CERRADURA ((q0 ,0) (q1,0) (q2,0))
=CERRADURA (q0 } )
=CERRADURA (q0 })={q0 ,q1,q2}
entonces
, )= CERRADURA ((, ) ,1))
= CERRADURA (({q0 ,q1,q2},1))
= CERRADURA (q1 })={q1,q2}













Equivalencia de AFND con y sin
movimientos
Teorema 2. Sea L un lenguaje aceptado por un autmata finito no
determinstico con transiciones en vaco. Existe un autmata finito no
determinstico que acepta L.
Equivalencia de AFND con y sin
movimientos
Equivalencia de AFND con y sin
movimientos
Expresiones Regulares
Los lenguajes aceptados por los autmatas finitos son fcilmente
descritos por expresiones simples llamadas expresiones regulares
quienes les dan el nombre de conjuntos regulares a dichos lenguajes.
lSea una coleccin finita de smbolos. Este conjunto de smbolos se denomina
alfabeto y los elementos letras
lUna palabra sobre es una cadena de longitud finita de elementos de .
lLa cadena vaca o cadena nula, denotada por , es una cadena que no
contiene smbolos.
lEl conjunto de todas las palabras sobre se denota . es una palabra en
cualquier alfabeto .
lUn lenguaje sobre es un subconjunto de . Si denota el conjunto de los
lenguajes sobre se tiene que = {L : L }.




que {} es el conjunto que
contiene exactamente una
cadena, de hecho, la cadena
vaca.


|U |es la longitud de U
donde
U
| | = 0
| Ua|= |U |+1



Expresiones Regulares
Concatenacin
loperacin sobre . Para u, v la concatenacin de u
y v se denota uv y se define a travs de la funcin uv : {1, 2, . .
. , |u| + |v|}
As la palabra uv es la palabra que se obtiene escribiendo
las letras de u y luego las letras de v. Si u = u1u2 uk y v =
v1v2 vs entonces uv = u1u2 ukv1v2 vs
donde ui, vj
.


Expresiones Regulares
Expresiones Regulares
Expresiones Regulares
Lenguajes y Expresiones Regulares

En aritmtica, usamos las operaciones + y para construir
expresiones tales como
(4 + 1) 5
De manera similar, usamos operaciones regulares para construir
expresiones que describen lenguajes, las cuales se denominan
expresiones regulares. Un ejemplo es:
(0 1)0
El valor de la expresin aritmtica es 25. El valor de una expresin
regular es un lenguaje. En este caso el lenguaje consiste en todas las
palabras que empiezan con 1 o 0 seguido por cualquier nmero (finito) de
0 s. Otro ejemplo de una expresin regular es (0 1) Empieza con el
lenguaje (0 1) y se aplica la operacin * . El valor de esta expresin son
todas las palabras posibles de 0 s y 1s.


Expresiones Regulares
Para un alfabeto dado, los lenguajes regulares constituyen el menor
conjunto de lenguajes sobre que es cerrado respecto a las operaciones
de concatenacin, la cerradura de Kleene y la unin de lenguajes y
adems contiene el lenguaje ? y los lenguajes unitarios {a} para a .

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

1. y {} son lenguajes regulares
2. Para toda a , {a} es un lenguaje regular.
3. Si L y M son lenguajes regulares, entonces LM, LM, L son lenguajes
regulares.
4. Ningn otro lenguaje sobre es regular.





Expresiones Regulares
Ejemplo 4 Dado = {a, b}, las siguientes afirmaciones son verdaderas:
y {} son lenguajes regulares.
{a} y {b} son lenguajes regulares.
{a, b} es un lenguaje regular.
{ab} es regular.
{ai|i 0} es regular.
Podemos simplificar la representacin de un lenguaje regular por medio
de una abreviatura llamada expresin regular. Convenimos en escribir a
en lugar del lenguaje unitario {a}. Por tanto:
a b denota {a, b} = {a} {b}
ab denota {ab}
a denota {a}
a+ denota {a}+

Expresiones Regulares
Adems se establece un orden en los operadores, primero la clausura
de Kleene (*), luego la concatenacin y por ltimo la unin. En algunos
casos esto simplifica la expresin. Por ejemplo, una expresin {a}
({b}{c}), se reduce a la expresin regular a bc. De este modo, si se
realiza la unin previa a la concatenacin, se deben usar parntesis; as (a
b)c indica que se realiza la unin de {a} y {b} y el resultado se concatena
con {c} a la derecha. Si escribimos a bc debe ser ledo: se concatena {b}
y {c} en ese orden y el resultado se une con {a}.
Expresiones Regulares
Definicin Formal de una Expresin Regular

Definicin 5 Definimos las expresiones regulares de
manera recursiva:

1. y son expresiones regulares.
2. a es una expresin regular para toda a .
3. Si r y s son expresiones regulares, entonces r s, rs,
r son expresiones regulares.
4. Ninguna otra secuencia de smbolos es una
expresin regular.

Ejemplo c(a bc) sobre = {a, b, c}




ninguna
subcadena ac
Expresiones Regulares
Cuando sea necesario distinguir entre una expresin regular r y el
lenguaje denotado por la misma, usaremos L(r) para identificar dicho
lenguaje. As, si se afirma w r, esto significa que w L(r). Si r y s son
expresiones sobre el mismo alfabeto y si L(r) = L(s), entonces se dice que
r y s son equivalentes. en el caso que r y s sean equivalentes se puede
escribir r = s. tambin se puede usar r s en el caso que L(r) L(s).


En la definicin de la cerradura estrella se obtiene que = {}, y en
trminos de expresiones regulares se tiene que = .

Existen expresiones regulares que denotan el mismo lenguaje. Por
ejemplo (ab) y (ab)b denotan el mismo lenguaje: el lenguaje de
todas las palabras con 0 o ms a s y b s, que son la palabra vaca o las
que tienen una b al final. De este modo (ab) = (a b)b. Se pueden
simplificar expresiones regulares reemplazndolas por otras equivalentes
pero menos complejas. Existen muchas equivalencias en relacin a
expresiones regulares.
Expresiones Regulares
Expresiones Regulares
Ejercicio 3
1. Verificar, aplicando la definicin de lenguaje regular, que los siguientes
son lenguajes regulares sobre = {a, b}:
(a) {ai | i > 0}.
(b) {ai | i > n} para un n 0 fijado.
(c) {w | w termina con a}.
(d) {w | w tiene un nmero par de aes}.

AUTMATA FINITO EQUIVALENTE A UNA
EXPRESIN REGULAR
DADA.
Para todo lenguaje expresado por una expresin regular, r, existe un
autmata finito, M, tal que L(r) = L(M).
Dada una expresin regular existe siempre un autmata cuyo lenguaje es
el denotado por la expresin regular, es decir que L(ER)L(AF). La
demostracin es constructiva, el autmata obtenido es con - transiciones
y normalmente tiene muchos estados.
La construccin se hace por recurrencia sobre el nmero k de operadores
de la expresin regular y demostrando que dada una expresin regular
cualquiera siempre existe un AF, con slo un estado final, cuyo lenguaje
es el dado por la expresin regular.
lSi k=0 la expresin regular slo puede ser de uno de los tres siguientes tipos:
li) r = , un AF cuyo lenguaje sea r es

lii) r = un AF cuyo lenguaje sea r es

liii) r = a, un AF cuyo lenguaje sea r es

AUTMATA FINITO EQUIVALENTE A UNA
EXPRESIN REGULAR
DADA.
por hiptesis de recurrencia, que si la expresin regular contiene un
nmero menor o igual a k de operadores, existe un AF con un solo estado
final para el lenguaje denotado por la expresin regular.
Sea r una expresin regular con k+1 operadores. La construccin del AF
la haremos segn cual sea el ltimo operador que interviene en r.
lSi el ltimo operador es la concatenacin entonces podemos escribir r
= r1r2 , donde r1 y r2 tienen menos de k+1 operadores. Entonces, por
hiptesis de induccin, existen dos AF, M1y M2 tales que L(M1) = r1 y
L(M2) = r2.








AUTMATA FINITO EQUIVALENTE A UNA
EXPRESIN REGULAR
DADA.
lSi el ltimo operador de r es una unin r = r1+r2, un autmata que
acepta L(r) ser







lSi el ltimo operador de r es un cierre de Kleene r = (r1)* un autmata
que acepta L(r) ser:

AUTMATA FINITO EQUIVALENTE A UNA
EXPRESIN REGULAR
DADA.
lSi el ltimo operador de r es una clausura positiva r=(r1)+ un
autmata que acepta L(r) ser:
AUTMATA FINITO EQUIVALENTE A UNA
EXPRESIN REGULAR
DADA.
Ejemplo: Sea ={0,1} y sea r = 0*+1+0 y queremos construir un autmata
cuyo lenguaje sea exactamente el definido por la expresin regular r. El
ltimo operador que interviene es la suma
AUTMATA FINITO EQUIVALENTE A UNA
EXPRESIN REGULAR
DADA.
EXPRESIN REGULAR EQUIVALENTE A UN AUTMATA
FINITO
DADO.
Suponemos que M es un autmata finito dado, sin transiciones .
Buscamos una expresin regular r tal que L(M) = r.
Para cada estado qQ definimos
Es decir el conjunto de todas las palabras que desde q alcanzan
algn estado final.
Escribiendo de manera ms explicita xq, para cada estado del
autmata dado. Observemos que
i) xq si y slo si qF
ii) Si r(q,a) y wxr entonces awxq o lo que es lo mismo si
r(q,a) entonces axr xq.
EXPRESIN REGULAR EQUIVALENTE A UN AUTMATA
FINITO
DADO.
ecuacin lineal del estado q







Cuando tengamos una ecuacin del tipo
xq =Axq+B


Entonces podemos escribir
xq = A*B
resolviendo el sistema usando las propiedades de las
operaciones con lenguajes hasta despejar x L(M) q =0 .

donde las sumas
representan uniones
como en las
expresiones
regulares.
Donde A es el conjunto de todas
las palabras que partiendo de q
llegan de nuevo a q y B es el
conjunto de todas las palabras
que van de q a un estado final
sin volver a pasar por q.
EXPRESIN REGULAR EQUIVALENTE A UN AUTMATA
FINITO
DADO.
Sea M={{p,q,r,s}, {0,1}, ,p,{q,s}}
0 1
p q,r
*q q q,s
r s
*s p
Xp=0Xq+0Xr
Xq=0Xq+1Xq+1Xs+
Xr=1Xs
Xs=0Xp+
Xr=1(0Xp+)=10Xp+1
Xq=(0+1)Xq+1(0Xp+)+=(0+1) xq +10 xp
+1+
= (0+1)*(10 xp +1+ )
xp = 0(0+1)*(10 xp +1+ )+0(10 xp +1)
= 0(0+1)*(10 xp +1+ )+010 xp +01)
= [0(0+1)*10+010] xp +0(0+1)*(1+ )+01
= [0(0+1)*10+010]*[0(0+1)*(1+ )+01]
Xr=1(0Xp+)=10Xp+1
Xq=(0+1)Xq+1(0Xp+)+=(0+1) xq +10 xp +1+
= (0+1)*(10 xp +1+ )
xp = 0(0+1)*(10 xp +1+ )+0(10 xp +1)
= 0(0+1)*(10 xp +1+ )+010 xp +01)
0(0+1)*10xp+0(0+1)*1+0(0+1)* +010xp+01
Xp(0(0+1)*10+010)+0(0+1)*(1+ )+01

= [0(0+1)*10+010] xp +0(0+1)*(1+ )+01
= [0(0+1)*10+010]*[0(0+1)*(1+ )+01]
Autmata de Pila
Un Autmata de Pila es aquella mquina que reconoce lenguajes generados por gramticas libres de contexto
Lenguajes independientes de contexto Autmata de Pila
Autmata a Pila no determinista no puede reducirse a otro determinista.
Un Autmata a Pila es esencialmente un AFN con una pila de datos.
A diferencia de los AF, la pila proporciona a los AP la capacidad de recordar una cantidad infinita de informacin.
Los AP reconocen todos los lenguajes independientes de contexto y solo estos
Autmata de Pila
se puede ver como un dispositivo que dispone de:
Autmata de Pila
lEn cada momento, el estado siguiente depende del estado anterior, del smbolo de entrada y del smbolo que se encuentra en la cima de la pila
Funcionamiento de un AP
Dependiente de la entrada: se lee un smbolo de la cinta (avanza la cinta una posicin), y en funcin del smbolo ledo, del estado en que se encuentre el AP en el momento de la lectura y del elemento situado en la cima de la pila, pasar otro estado.

Independiente de la entrada: aqu el cambio de estado depende solo del contenido de la pila y del estado en que se encuentre la mquina. Ni se lee ni se avanza la cinta.
Funcionamiento de un AP
Aceptacin de la cadena :
lPor vaciado de la pila: La lectura de la cadena escrita en la cinta lleva al autmata a vaciar su pila cuando es aceptada la palabra.
lPor estados finales: La lectura de la cadena lleva al AP a un estado que se encuentra dentro del conjunto de estados finales sin importar el estado de la pila.

Definicin formal de AP
AP = (, , Q, Z, q0 , f, F )
donde:
l = alfabeto de la Pila
l = alfabeto de entrada
lQ = conjunto finito de estados
lZ = Simbolo inicial de la Pila
lq0 = estado inicial
lf = es la funcin de transicin
lf : Q { } P (Q )
l(q, a, Ai ) {(p1 , Z1 ), . . . (pk , Zk )}
lF = conjunto de estados finales F Q
Ejemplo
Ejemplo : queremos construir un AP que acepte cadenas del lenguaje
L = {0n1n | n 0}
Donde : L puede ser generado por una GLC entonces necesitamos
encontrar un AP que lo reconozca
G = ({0, 1}, {S}, S, {(S ::= 0S1| )}
Alfabeto de entrada = {0, 1}
Alfabeto de la pila ={C, Z}
Q = {q0 , q1 }
El AP funciona por vaciado de pila no es necesario definir F . Por tanto F = .
funcin de transicin se definir como:
f (q0 , 0, Z) = (q0 , CZ)
f (q0 , 0, C) = (q0 , CC)
f (q0 , 1, C) = (q1 , )
f (q1 , 1, C) = (q1 , )
f (q1 , , Z) = (q1 , )

You might also like