You are on page 1of 104

Teora de Autmatas y Lenguajes Formales

Pgina 1




C O N T E N I D O

PRLOGO 3
COMENTARIOS PRELIMINARES 4
CAPTULO 1: GRAMTICAS Y LENGUAJES FORMALES 5
CONCEPTOS INTRODUCTORIOS 5
CONCEPTOS IMPORTANTES 8
NOMENCLATURA SIMPLIFICADA PARA CADENAS 8
PREFIJOS, INFIJOS Y POSFIJOS (SUFIJOS) 9
CONCATENACIN DE CADENAS 9
OPERACIONES SOBRE LENGUAJES 10
JERARQUA DE OPERADORES DE LENGUAJES 12
DESCRIPCIN FORMAL DE LA GRAMTICA FORMAL 12
GRAMTICA MAL ESTRUCTURADA 14
CARACTERIZACIN DE UNA GRAMTICA 15
DISEO DE GRAMTICAS FORMALES 18
GRAMTICAS EQUIVALENTES 19
GRAMTICAS CON LAMBDA O DECIDIBLES 19
JERARQUA DE CHOMSKY 20
GRAMTICA DE CHOMSKY O SIN RESTRICCIONES (TIPO 0) 21
GRAMTICA SENSIBLE AL CONTEXTO (TIPO 1) 22
GRAMTICA LIBRE O INDEPENDIENTE DE CONTEXTO (TIPO 2) 23
GRAMTICA REGULAR (TIPO 3) 23
DERIVACIN POR LA IZQUIERDA Y POR LA DERECHA 25
COMENTARIO FINAL SOBRE LOS TIPOS DE GRAMTICAS 25
PROBLEMAS ADICIONALES 25
FORMA NORMAL DE CHOMSKY (CNF) 27
PROCEDIMIENTO PARA TRANSFORMAR UNA GRAMTICA A LA CNF 28
CAPTULO 2: LAS GRAMTICAS FORMALES EN LA COMPUTACIN 31
FORMA NORMAL DE BACKUS - NAUR (BNF) 31
RBOLES DE DERIVACIN 34
GRAMTICAS AMBIGUAS Y UNVOCAS 35
REGLAS DE LENGUAJES DE PROGRAMACIN PARA OPERADORES
ASOCIATIVOS POR DERECHA E IZQUIERDA 39
APLICACIN DE LOS ANALIZADORES DE LENGUAJES 40
TEORA DE COMPILADORES 41
CASO DE ESTUDIO 43
Teora de Autmatas y Lenguajes Formales
Pgina 2


CAPTULO 3: MQUINAS DE ESTADO FINITO 46
DEFINICIN FORMAL 46
DESCRIPCIN DE LA MQUINA DE ESTADO FINITO 46
EJEMPLOS DE APLICACIONES DE MQUINAS DE ESTADO FINITO 47
DIAGRAMA DE TRANSICIN DE UNA MQUINA DE ESTADO FINITO 48
TABLA DE TRANSICIN DE LA MQUINA DE ESTADO FINITO 49
EJEMPLO: CONTADOR SNCRONO DE 3 BITS 53
CONCEPTOS ADICIONALES 56
CAPTULO 4: AUTMATAS DE ESTADO FINITO 57
CONCEPTOS GENERALES 57
DEFINICIN FORMAL DE AUTMATA DE ESTADO FINITO 60
CRITERIOS IMPORTANTES EN EL DISEO DE UN AUTMATA FINITO 61
AUTMATAS EQUIVALENTES 62
IMPLEMENTACIN DE UN AUTMATA FINITO 63
APLICACIONES DE LOS AUTMATAS DE ESTADO FINITO 69
SIMULACIN DE UN MODELO DEL MUNDO REAL
(MQUINA PARA VENTA DE REFRESCOS) 69
APLICACIONES EN CIRCUITOS DIGITALES SECUENCIALES
(RECONOCEDOR DE IMPARIDAD DE PULSOS) 71
APLICACIONES EN INTELIGENCIA ARTIFICIAL
(ESPACIOS DE ESTADOS) 72
APLICACIONES EN INTELIGENCIA ARTIFICIAL
(REDES NEURONALES) 73
AUTMATA FINITO DETERMINISTA (AFD) 75
AUTMATA FINITO NO DETERMINISTA (AFND) 75
RELACIN ENTRE AUTMATAS Y GRAMTICAS 76
CONVERSIN DE UN AFND EN UN AFD 79
AUTMATAS PARA EXPRESIONES REGULARES 80
COMENTARIOS ADICIONALES 83
CAPTULO 5: AUTMATAS DE PILA 84
DESCRIPCIN GENERAL 84
DEFINICIN FORMAL DEL AUTMATA DE PILA 85
DISEO DE AUTMATAS DE PILA 85
REPRESENTACIN ALTERNA DE UN AUTMATA DE PILA 87
APNDICES 88
1. PROGRAMA VIGENTE DE LA ASIGNATURA CC209
(TEORA DE LA COMPUTACIN) 89
2. PROBLEMAS PROPUESTOS PARA RESOLVER EN CLASE 97


Teora de Autmatas y Lenguajes Formales
Pgina 3




PRLOGO
Un problema que se le presenta a un docente durante su prctica cotidiana es el hecho de
tener que enfrentar los imprevistos que pueden surgir durante el transcurso de un ciclo
regular y que le puede causar el incumplimiento para sus estudiantes de los objetivos
previstos en el programa oficial de la asignatura.
En ocasiones los docentes asisten a sesiones de trabajo convocados por sus
academias, acuden a cumplir con comisiones que les son asignadas, sufren de
enfermedades imprevistas o de diversas eventualidades. Adems existen sucesos
inesperados como ocurri en el ao 2009 cuando la sociedad mexicana fue afectada por el
embate de la epidemia de una enfermedad que se denomin AH1N1 y que ocasion la
suspensin de actividades durante algunas semanas en las instituciones educativas, adems
de otras organizaciones y empresas que resintieron los efectos.
Esos hechos llevan a un profesor a elaborar el presente texto oficial y elaborado a la
medida para el curso de Teora de la Computacin que se imparte en el Centro Universitario
de Ciencias Exactas e Ingenieras de la Universidad de Guadalajara. Cubre los temas que se
estudian en las clases ordinarias de manera terica y contiene varios problemas resueltos,
para que el alumno con las bases adquiridas resuelva otros que aparecen propuestos en un
apndice al final del documento. No abarca los ltimos dos mdulos del programa vigente
debido a que el estudiante hace una investigacin final sobre los contenidos de ambos temas
como parte de los productos de fin de ciclo escolar.
Un factor muy importante a considerar cuando se redacta este documento es el hecho
de que la poblacin estudiantil que cursa esta asignatura es muy heterognea, pues hay
alumnos que son demasiado competentes en el anlisis lgico, mientras que otros tienen
mayor dificultad para entender los conceptos relacionados con esa habilidad, siendo ms
frecuente este ltimo caso. Por esa razn se ha decidido dar un enfoque bsico a los
conceptos tratados y se ha explicado todo asunto con lujo de detalles.
De igual forma se determina que la manera como se desarrollan los temas ser ms
orientada a los alumnos de las carreras de Tecnologas de la Informacin (Ingeniera en
Computacin y Licenciatura en Informtica), pues representan la mayora de quienes cursan
la asignatura. Los alumnos de Licenciatura en Matemticas son la minora y eso hace que la
forma como se imparten los conocimientos no sea tan formal y abstracta, por lo que se
excluyen las demostraciones de ese tipo. No obstante, todos los alumnos observarn que
este curso est totalmente encuadrado en el rea del conocimiento de las Matemticas
Computacionales y que corresponde a las ciencias aplicadas, lo cual se demostrar con la
elaboracin de proyectos finales de implementacin de programas basados en los modelos
del curso.
Esperamos que el presente trabajo cumpla con el objetivo de apoyar al alumno de la
asignatura de Teora de la Computacin y que sea amigable en su lectura y comprensin.



Teora de Autmatas y Lenguajes Formales
Pgina 4



Texto para el curso impartido en el CUCEI de
la Universidad de Guadalajara
TEORA DE LA COMPUTACIN (CC209)
AUTOR: MTRO. GMEZ ANDRADE ABELARDO
e-mail: abelardo.gomez@red.cucei.udg.mx

ATENCIN: Se recomienda al alumno que lea detenidamente el programa de la materia
incluido en el primer apndice de este documento, ya que contiene informacin
adicional demasiado importante, tal como los criterios de evaluacin. Es mejor
detenerse unos minutos y aclarar dudas en este momento, que tener problemas de
interpretacin al final del curso (y reprobarlo!!!).

COMENTARIOS PRELIMINARES
Aunque la asignatura de Matemticas Discretas aparezca como nico prerrequisito de este
curso, hay que advertir al alumno de que requiere tener un dominio sobre los temas que
aprendi en algunos cursos anteriores o simultneos, destacando sobre todo, en materias
como Lgica y Conjuntos, Introduccin a la Computacin, Introduccin a la Programacin
Estructurada (curso y taller), Estructura de Datos o Sistemas Digitales.
Tambin es importante comentar que los conceptos que se habrn de adquirir en esta
asignatura, le sern de utilidad al cursar materias, tanto de las que es prerrequisito como
Compiladores o Anlisis y Diseo de Algoritmos, como de otras que no estn incluidas en la
Seriacin.
Es necesario que el profesor de la asignatura les aclare a los alumnos que diversos
conceptos se deben impartir bajo un criterio exclusivamente matemtico, sin que se vea en
ese momento cmo se aplicarn computacionalmente. Se debe pedir paciencia al estudiante,
y aclararle que sin conocer el fundamento matemtico, no podr interpretar el significado de
lo que se estar estudiando. El compromiso para el docente es hacer que el alumno lo pueda
descubrir al avanzar en el ciclo escolar.
Se recomienda hacer una sesin introductoria en la que se hable de los siguientes
temas y se interacte con los alumnos acerca de sus experiencias previas:
1. Relacin de las Matemticas con las Ciencias Computacionales.
2. Problemtica de la enseanza de la Matemtica.
3. Los modelos matemticos como una representacin de la realidad.
4. Simulacin y su importancia.
5. Cul es, en realidad, el cmputo avanzado?
6. Es posible ser un profesional de la computacin sin dominar las matemticas?
Teora de Autmatas y Lenguajes Formales
Pgina 5




CAPTULO 1
GRAMTICAS Y LENGUAJES FORMALES

CONCEPTOS INTRODUCTORIOS
Considrense las siguientes definiciones iniciales como punto de partida para especificar los
conceptos que habrn de estudiarse en este primer captulo. Los trminos son un poco
abstractos y no debe preocuparse el lector si en este momento le parece que no es claro lo
que se pretende expresar con ellos. Al avanzar en el curso se irn entendiendo mejor.
TEORA DE LOS LENGUAJES FORMALES: Estudio de los Lenguajes con una
fundamentacin matemtica. 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 Java o de C, puede considerarse como un Lenguaje Formal sobre
el Alfabeto de smbolos de cada uno de esos mismos Lenguajes de programacin.
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. As, los Lenguajes Formales se distinguen de los naturales
tales como el castellano, cuyas reglas a medida que evolucionan con el uso dejan de ser una
definicin completa o precisa de la sintaxis del Lenguaje y mucho menos de su semntica.
GRAMTICA FORMAL: Es un esquema generativo para la representacin finita de los
Lenguajes, es decir, un solo modelo dinmico para generar palabras o cadenas de un
Lenguaje. Es la manera principal de especificar un Lenguaje Formal aunque sea infinito por
medios finitos. Los Lenguajes pueden ser finitos o infinitos. El deseo de formalizar los
Lenguajes naturales fue lo que llev a Noam Chomsky a la iniciacin de este tema en 1956.
Los conceptos anteriores son tomados de diccionarios de computacin o de textos
formales y expresan los conocimientos principales que se desarrollarn a lo largo de este
captulo. Sin embargo, se debe de iniciar a partir de definiciones ms elementales, que
posteriormente se irn complementando. Partiremos as de los conceptos iniciales bsicos:
LENGUAJE FORMAL: Conjunto de PALABRAS, producidas en base a las reglas que
conforman una Gramtica Formal.
GRAMTICA FORMAL: Conjunto de REGLAS, empleadas para generar las palabras de
un Lenguaje Formal.
Todo Lenguaje Formal estar vinculado siempre a una Gramtica Formal, que
especificar el mecanismo de produccin de las palabras que lo conforman.
No existe un solo caso de un Lenguaje Formal que no sea producido por una
Gramtica Formal.

Teora de Autmatas y Lenguajes Formales
Pgina 6



Se le llamar Lenguaje natural a todo aquel que empleamos los seres vivos para
comunicarnos, destacando como ejemplo muy evidente el de cualquier idioma o dialecto. Sin
embargo, se reconoce que este mecanismo no es til para comunicarnos con una
computadora, robot o Agente en general, por su caracterstica de presentar muchas
ambigedades, que dichos equipos no pueden interpretar correctamente; sin embargo, sirven
como modelo para la definicin de los Lenguajes Formales.
Se tomar ahora una definicin ms explcita, que permitir entender cmo se
construye un Lenguaje Formal.
LENGUAJE FORMAL: Sea un conjunto finito de elementos llamado Alfabeto Formal; 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
cadenas que cumplen con las reglas definidas por una Gramtica Formal.
Se est mencionando un concepto ya conocido en trminos naturales, que es el
ALFABETO. En un enfoque FORMAL, se considera que debe ser el conjunto finito de
smbolos (no letras, ni caracteres necesariamente) que se emplean para formar las
palabras.
En trminos naturales, un lingista podra decir que slo las letras pueden ser parte
del Alfabeto del castellano, pero en trminos formales tambin podran tenerse otros
smbolos; por ejemplo, como SR-71 es una palabra vlida del castellano (es el nombre de un
avin), entonces se considera que S, R, -, 7 y 1 son smbolos de nuestro Alfabeto, desde el
punto de vista formal.
Ejemplos de posibles Alfabetos Formales vlidos son:
E = { a, b, c, ch, d, e, f, g, h, etc. } En idioma castellano.
E = { .-, -..., -.-., ----, -.., ., ..-., --., ...., .., etc. } En cdigo Morse.
E = { . , - } En cdigo Morse.
E = { x | x es un caracter del cdigo ASCII }
E = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
E = { 0, 1 } Para formar cadenas de bits.
E = { +, -, *, /, % }
E = { a, e, i, o, u }
Obsrvese que un smbolo de un Alfabeto podra estar formado por ms de un
carcter, como en el caso de la ch. Desde el punto de vista formal, dicha combinacin de
letras puede ser considerada perfectamente como un nico smbolo, sobre todo tomando en
cuenta que representa un solo fonema y no una combinacin de stos.
En trminos computacionales, el Alfabeto del Lenguaje Formal integrado por los
identificadores vlidos en C estar formado por las letras, los dgitos y el guin bajo (_); el de
los nmeros enteros por los dgitos y los dos signos. Cul sera el Alfabeto de los nmeros
flotantes? Y el de los enteros hexadecimales sin signo, tanto en Lenguaje C como en
ensamblador? Y el de otros componentes lxicos comunes?

Teora de Autmatas y Lenguajes Formales
Pgina 7


EJEMPLO:
Disear un Lenguaje Formal, a partir de ciertas reglas expresadas textualmente en castellano
y con = { x, y, z }. Las reglas se propondrn un poco ms adelante, una vez que se definan
todas las cadenas posibles de formar con los smbolos del Alfabeto. Se insiste en que el
Lenguaje que se disear no sirve para algo til, sino slo para conocer un ejemplo concreto.
Es importante aclarar que por esta nica ocasin se har algo que es incorrecto, ya
que en realidad para disear un Lenguaje Formal, se deber emplear una Gramtica Formal
y no una natural, expresada en trminos del castellano.
Para resolver este problema nos basaremos en la definicin mencionada prrafos
atrs, pero antes de evaluar * se har una introduccin a un nuevo concepto previo, que
evitar divagar acerca de cules son todas las cadenas posibles de formar con los elementos
del Alfabeto, puesto que son infinitas en su cantidad.

n
= {s s es toda cadena de longitud n y que se pueda formar con los smbolos de }.
En este caso n debe tomar un valor especfico de entre los nmeros naturales, como
0, 1, 2, 3, 4, 5, 6, etc.

o
= { } // Cadena vaca, de longitud 0. Puede ser representada tambin como c A.

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 }
... ... , etc.
Por lgica, se deduce la forma de relacionar los valores de las
n
para obtener *:
* = U
n
| n e
0
, es decir, * =
0
U
1
U
2
U
3
U ...
* se llama conjunto de todas las palabras posibles de formar sobre .
Adems, existe una variante muy parecida, pero que excluye a la cadena vaca :

+
= U
n
| n e , es decir,
+
=
1
U
2
U
3
U
4
U ...

+
se llama conjunto de todas las palabras posibles no vacas sobre .
La forma de relacionar los dos conjuntos es: * =
+
U { }.
Conviene aclarar que
0
= { 0, 1, 2, 3, 4, ... }, mientras que = { 1, 2, 3, 4, 5, ... }.
En este caso se consideran los dos criterios aceptados para los nmeros naturales, segn el
autor consultado. Algunos consideran al cero como nmero natural por conveniencia, pero
otros no debido a que este nmero histricamente no fue descubierto junto con los dems
valores aceptados en este conjunto.
Determinar finalmente las palabras del Lenguaje Formal, en caso de que las reglas
gramaticales (en forma natural o textual) fuesen, por ejemplo:
La cadena es de longitud menor o igual a tres.
La cadena finaliza con x con z.
La cadena no inicia con y.
Teora de Autmatas y Lenguajes Formales
Pgina 8


Se debe recalcar que en este caso se est empleando una Gramtica natural (no
Formal) para no intentar asimilar tantos conceptos innovadores en forma simultnea.
Posteriormente se analizar el concepto del Lenguaje Formal producido por una Gramtica
Formal, como debe ser. Habr que recalcar que si no existen reglas gramaticales, no puede
ser generado el Lenguaje.
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 }.
En la respuesta se observa que cada cadena definida cumple con la totalidad de las
reglas sealadas. stas fueron determinadas en forma totalmente arbitraria, solamente para
que el alumno conociera la estructura de un Lenguaje Formal, aunque sea completamente
intil para su aplicacin.
Si hubieran sido otras las reglas gramaticales, el Lenguaje pudo haber sido, por
ejemplo:
L = { , x, xy, yx, xz, zz, xyz, yyz, zxx, xxxx, xxyz, xyxz, zxyzx, zzzzyyz, ... }

CONCEPTOS IMPORTANTES
Los elementos a e se llaman Smbolos del Alfabeto .
Los elementos s e
n
se llaman Palabras, Cadenas o Arreglos sobre .
La longitud de una cadena se expresa como | s | y consiste en la cantidad de smbolos
que la forman (no la cantidad de caracteres).
La cadena de longitud cero se llama cadena vaca y se la puede representar de
diversas formas a elegir, destacando como las ms comunes , A c. Es el elemento neutro
en aritmtica de cadenas y tiene mucha importancia en casos prcticos, aunque no recibe
privilegios especiales y se la considera como a cualquier otra palabra.
Ntese que las cadenas de * se forman de la concatenacin de ninguno, uno o
muchos smbolos del Alfabeto (pudiendo repetirse los mismos). Para el caso de
+
se tiene
la concatenacin de uno o muchos smbolos. Si el superndice es n, entonces aparece esa
misma cantidad de smbolos tomados del Alfabeto indicado en cada palabra del conjunto.
Los Lenguajes Formales pueden ser finitos o infinitos, segn sea la cantidad de
cadenas que contengan, aunque la gran mayora son infinitos. El que se obtuvo en el
ejemplo anterior result finito porque se estableci una longitud mxima para las palabras.
Los Lenguajes Formales se comportan siempre en la forma ms parecida
posible a los naturales, al tratar de ser un modelo que representa a estos ltimos. Sin
embargo sern muy diferentes en los casos en que convenga, por la aplicacin que se
les va a dar en trminos de la programacin y no de la comunicacin humana.

NOMENCLATURA SIMPLIFICADA PARA CADENAS
Permite compactar la representacin de las palabras con la indicacin de un pequeo
nmero como superndice, que indica cuntas veces aparece o un smbolo o una secuencia
de los mismos (indicada entre parntesis). Por ejemplo:
Teora de Autmatas y Lenguajes Formales
Pgina 9


aaaaaaaabb = a
8
b
2

xxxyyzxxzzz = x
3
y
2
zx
2
z
3
,
xyzyzyzyyyx = xy(zy)
3
y
2
x = x(yz)
3
y
3
x,
a
0
= b
0
= ... = z
0
=
El orden en el que aparecen los smbolos s es importante. Por ejemplo ab = ba.
Ntese que esta representacin para cadenas para nada es compatible con los conceptos
desde el enfoque algebraico, ya que por ejemplo (ab)
3
no representa a la palabra a
3
b
3
.
En general, cualquier superndice (como n, +, *) afecta al smbolo inmediato anterior
nicamente, a menos que se encuentre una subcadena entre parntesis, en cuyo caso
afecta a toda ella como si fuera un solo smbolo.

PREFIJOS, INFIJOS Y POSFIJOS (SUFIJOS)
Considrese S = uvw una cadena cualquiera. Entonces se tiene que para cualquier valor
posible de u, v, w:
a) u es llamado prefijo.
b) v es llamado infijo.
c) w es llamado sufijo o posfijo.
Aplicado a un ejemplo, sea la cadena s = COSMOS; entonces determinamos todos
sus posibles prefijos, sufijos e infijos:
Prefijo: , C, CO, COS, COSM, COSMO, COSMOS
Sufijo: , S, OS, MOS, SMOS, OSMOS, COSMOS
Infijo: , C,O,S,M,CO, OS, SM, MO, OS, COS, OSM, SMO, MOS, COSM, OSMO,
SMOS, COSMO, OSMOS, COSMOS.
Un prefijo es cualquier subcadena posible, incluso la vaca, que va al inicio de la
cadena completa, mientras que el posfijo es similar, pero va al final. Observar como el infijo
es la subdivisin ms flexible, ya que puede ser, de hecho, cualquier subcadena posible, que
est ubicada en cualquier posicin de la cadena completa.
En los Lenguajes naturales, un prefijo, infijo o posfijo deber tener un significado por s
mismo; por ejemplo inter s es prefijo, pero internac no lo es. En los Lenguajes Formales no
se considera as, y ah no importa si tiene o no significado la subcadena.

CONCATENACIN DE CADENAS
Si u = u
1
u
2
u
3
... u
m
y v = v
1
v
2
v
3
... v
n
son cadenas de un Lenguaje Formal, entonces u - v =
u v = u
1
u
2
... u
m
v
1
v
2
... v
n
y se la llama la concatenacin de u con v.
Por ejemplo: Si u = dino y v = saurio, entonces uv = dinosaurio.
Las cadenas a concatenar pertenecern necesariamente al mismo conjunto E*. El
operador - se puede omitir en la expresin.
Teora de Autmatas y Lenguajes Formales
Pgina 10


La concatenacin de cadenas no es una multiplicacin, aunque lo parezca en su
notacin; de hecho la operacin es no conmutativa (uv vu) mientras que esta segunda
operacin s lo sera.

OPERACIONES SOBRE LENGUAJES
Puesto que los Lenguajes Formales son conjuntos, se les pueden aplicar todas las
operaciones de los mismos, tales como unin, interseccin, concatenacin, resta o
complemento, por ejemplo; sin embargo como operaciones binarias solamente son de
utilidad la unin y la concatenacin para casos prcticos, las cuales se definen
respectivamente de la siguiente manera:
L M = { s | s e L v s e M } // Como se aprendi en cursos previos.
L - M = L M = { lm | l e L, m e M } // Producto cartesiano de palabras.

EJEMPLO:
Sean L
1
= { , a, ac, bca }, L
2
= { , b, cb, ab }, evaluar:
a) L
1
U L
2
= { , a, ac, bca, b, cb, ab }
b) L
1
- L
2
= { , b, cb, ab, a, ab, acb, aab, ac, acb, accb, acab, bca, bcab, bcacb,
bcaab }
Se muestra tachada la cadena ab, al surgir por segunda vez en el inciso b), para
indicar que aparecera nuevamente, pero como ya se haba obtenido previamente, se deber
omitir en su segunda aparicin.
La unin se puede utilizar cuando las palabras de un Lenguaje tienen diferentes
estructuras, mismas que no se pueden representar por una nica expresin formal. Por
cierto, se le llama de esta forma a las expresiones que se manejan en este curso, las cuales
no contienen mayoritariamente operadores aritmticos o lgicos, sino superndices, uniones
o concatenaciones.
En el caso de la concatenacin de Lenguajes, se aplica esa misma operacin a cada
una de las palabras del primer Lenguaje contra cada una de las del segundo, respetando el
orden de las palabras concatenadas.
No confundir las dos operaciones anteriores ya que son muy diferentes entre s.
Adems, se tienen las operaciones unarias o unitarias. En este caso se consideran las
variantes de L, en forma muy similar a las que se tienen con los Alfabetos . Considrese
primeramente la descripcin del contenido de los L
n
de la siguiente forma:
L
n
= {s | s es toda cadena que se pueda formar concatenando n palabras del Lenguaje
L (pudiendo repetirse las cadenas utilizadas)}
La frmula que permite encontrar todas las cadenas que conforman al resultado es:
{ } si n = 0
L
n
= Ya que se trata de una Relacin de Recurrencia.
L - L
n-1
si n > 0
Teora de Autmatas y Lenguajes Formales
Pgina 11



EJEMPLO:
Dado L = { a, ac, ba, cba }, evaluar L
0
, L
1
, L
2
y L
3
.
L
0
= { } // Por definicin.
L
1
= L - L
0
= L = { a, ac, ba, cba }
L
2
= L - L
1
= { aa, aac, aba, acba, aca, acac, acba, accba, baa, baac, baba,
bacba, cbaa, cbaac, cbaba, cbacba }
L
3
= L - L
2
= { aaa, aaac, aaba, aacba, aaca, aacac, aacba...
acaa, acaac, acaba, acacba, acaca, acacac, ...
baaa, baaac, baaba, baacba, baaca, baacac...
cbaaa, cbaaac, cbaaba, cbaacba, cbaaca, ... ... }
... ... ... ... ... y as sucesivamente.
Al considerar que estos clculos no son complicados en lo ms mnimo, sino
solamente laboriosos, se han omitido algunas cadenas y se han dejado puntos suspensivos
en su lugar.
Los ltimos puntos suspensivos indican que pueden ser evaluados ms elementos de
la serie de L
n
, tales como L
4
, L
5
, L
6
, etctera.
Mientras que todas las cadenas de un determinado E
n
son de la misma longitud, las de
un mismo L
n
son generalmente de diferentes tamaos.
A partir de los valores de L
n
, surgen las siguientes variantes de L:
L* = U L
n
| n e
0
= L
0
U L
1
U L
2
U L
3
... ; se lo llama Cerradura de Kleene de L.
L
+
= U L
n
| n e = L
1
U L
2
U L
3
U L
4
... ; se lo llama Cerradura Positiva de L.
Ntese la similaridad operativa y conceptual que existe con los operadores n, +, * al
aplicarse a Alfabetos o a los Lenguajes.
Si hacemos una comparacin de L
*
con L
+
, se observa que pueden presentarse dos
casos:
L* = L
+
si e L , ya que est incluida inclusive en L
1
.
L* = L
+
U { } si e L , ya que nunca aparecer en los L
n
con n>0.

EJEMPLO:
Qu caractersticas tienen las cadenas de L = { 1, 10 }
*
?
Ntese que el operador asterisco aparece afuera de las llaves; eso indica que tal
operador afectar a las dos cadenas contenidas ah. El Lenguaje deber constituirse con
concatenaciones de una, ninguna o muchas veces la combinacin de 1 y/o 10. De manera
comparativa se podra simplificar la comprensin del problema, haciendo la analoga con la
construccin de palabras, por un beb, uniendo bloques marcados con 1 y/o 10.
Teora de Autmatas y Lenguajes Formales
Pgina 12


Al hacer tales combinaciones, se notar que las cadenas formadas, iniciarn con 1
necesariamente (excepto la cadena vaca). Adems, nunca podr haber 0 consecutivos en
alguna palabra de este Lenguaje, ya que este se puede presentar solo despus de un 1.
Por cierto, ese mismo Lenguaje puede ser expresado como L = { (1, 10)
*
}, pero no
como L = { 1
*
, (10)
*
} ya que son expresiones que contienen palabras muy diferentes. En este
segundo Lenguaje, se tendran cadenas formadas por 1 exclusivamente o por nicamente
secuencias de 10, ms no por combinaciones de ambos elementos.

JERARQUA DE OPERADORES DE LENGUAJES
Si una expresin formal compuesta, tal como L
1
* - L
2
- L
3
L
4
*, contiene varias indicaciones
de operaciones vlidas con Lenguajes Formales, stas se efectuarn jerarquizadas en el
siguiente orden:
1) Parntesis 2) Superndices 3) Concatenacin 4) Unin.
As pues, para evaluar una expresin como {a, b} {b} - {a, c} se debe concatenar
primero y posteriormente hacer la unin, de manera que el resultado sera { a, b, ba, bc }.
Se considera la asociatividad por la izquierda cuando se presentan varias operaciones
similares en una misma expresin.

DESCRIPCIN FORMAL DE LA GRAMTICA FORMAL
Hasta el momento se han empleado reglas gramaticales, pero expresadas de manera
natural. Ha sido necesario para no introducir tantos elementos nuevos simultneamente. A
continuacin se plantear la definicin formal de la Gramtica, para despus ir analizndola
con ms detalle.
A la Gramtica Formal tambin se la conoce como Sistema de Estructuracin de
Frases y consiste en el siguiente cuarteto ordenado o 4-tupla:
1) Un conjunto finito N de smbolos no terminales.
2) Un conjunto finito T de smbolos terminales, en donde N T = C.
3) Un subconjunto finito P de ((N T)* - T*) (N T)* llamado conjunto de
composiciones o reglas de produccin.
4) Un smbolo inicial o
0
e N, tambin conocido como smbolo distinguido.
Se expresa en forma sinttica como el cuarteto ordenado G = ( N, T, P, o
0
). Es muy
importante aclarar que esta nomenclatura, al igual que en algunos otros casos de los temas
tratados en este curso, se pueden tener algunas diferencias segn el autor de la referencia
que se consulta, ya sea de manera impresa o en internet.
El conjunto P es el ms importante en la definicin de una Gramtica, ya que es
el que contiene propiamente las reglas gramaticales para producir las palabras; dichas
reglas consisten en toda una serie de composiciones (que son posibles sustituciones
de una subcadena por otra), disponibles para utilizarse en el orden que se desee, y las
veces que se requieran, de forma que el smbolo inicial se convierta en una palabra
completa conteniendo nicamente smbolos terminales.
Teora de Autmatas y Lenguajes Formales
Pgina 13


Las composiciones no son substituciones bidireccionales.
Ningn smbolo puede ser terminal y no terminal a la vez. El smbolo inicial deber
estar incluido tambin en el conjunto N y ser nico.
Se acostumbra utilizar las primeras letras maysculas para designar los no terminales
cuando tales smbolos no sern los terminales, pero es slo costumbre y no una regla. Los
terminales son aquellos que van a formar las palabras del Lenguaje.

EJEMPLO:
Disear una Gramtica Formal cualquiera (en este caso sin alguna especificacin concreta) y
determinar algunas cadenas del Lenguaje que genera, considerando G = ( N, T, P, o
0
).
N = { A, B, C, D } T = { 0,1 } o
0
= { A }
P = { A 0DA, A BD1, A C0,
B 1C1, B 11,
C 10A1, C 010, C1 A,
D C0, D 1, D1 10 }
Como ejemplo de cadenas s e L(G) podramos producir las siguientes:
A 0DA 01A 01C0 010100 , que es lo mismo que (01)
2
0
2
.
A BD1 B11 1C111 1010111 , que es lo mismo que (10)
2
1
3
.
A BD1 1C1D1 110A11D1 110C011D1 110010011D1 11001001110,
que es lo mismo que 1 (10
2
)
2
1
3
0.
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.

EJEMPLO:
Comprobar que una Gramtica con P = { A 11 | 1001 | A0 | AA } produce las cadenas que
representan los primeros seis enteros positivos mayores que 0 y que sean divisibles entre 3,
pero todos ellos en notacin binaria. El smbolo inicial evidentemente es A.
A 11 // 3 en binario.
A A0 110 // 6 en binario.
A 1001 // 9 en binario.
A A0 A00 1100 // 12 en binario.
Teora de Autmatas y Lenguajes Formales
Pgina 14


A AA A11 1111 // 15 en binario.
A A0 10010 // 18 en binario.
Produce esta misma Gramtica los siguientes cinco mltiplos de 3 en binario?

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 : E
G
(Smbolos empleados en las reglas).
T Alfabeto del Lenguaje : E
L
(Smbolos que forman las palabras).

EJEMPLO:
Explicar por qu razn en la definicin del diseo de las composiciones se dice que stas
son de la forma ((N T)* - T*) (N T)*.
- El lado izquierdo de las composiciones deber estar contenido en ((N T)* - T*).
- Por otra parte, el lado derecho de las mismas deber ser una cadena de (N T)*.
Considerar los criterios anteriores en un 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
con al menos un elemento del conjunto N.

GRAMTICA MAL ESTRUCTURADA
En ocasiones, cada una de las reglas de produccin para una Gramtica Formal se disea
en forma correcta, pero con ciertos errores de Lgica que surgen al integrarse todas ellas
en un conjunto P. Entonces se presentan deficiencias evidentes que resaltan al analizar la
Gramtica en su totalidad.

Teora de Autmatas y Lenguajes Formales
Pgina 15


EJEMPLO:
Describir los errores que hacen de la siguiente una Gramtica mal estructurada.
G= (N, T, P, o
0
)
N = { A, B, C, D } T = { 0,1 } o
0
= { A }
P = { A B1, A BC, A 0A, C CA, C 11A, DAC 01, D 11, D }
Aunque la anterior parece ser una Gramtica vlida, de acuerdo a los criterios
sealados en el tema anterior, se aprecian tres errores muy evidentes:
- 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 que
contiene la combinacin DAC, que nunca se presentar al derivar.
Todo smbolo no terminal debe aparecer por lo menos una vez en cada lado de al
menos una de las reglas de produccin (y en composiciones distintas); la excepcin es el
smbolo inicial, que puede no aparecer al lado derecho.
Puede haber una infinidad de motivos por los que la Gramtica est mal estructurada.
La mejor manera de detectar cundo se presenta este problema, ser con el conocimiento de
la forma correcta de construirlas y empleando el sentido comn y la lgica.

CONCEPTOS IMPORTANTES PARA REPASAR
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* . o
0
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.
DERIVACIN: Es la accin de sustituir en una palabra que contiene smbolos no terminales
una subcadena por su equivalente segn las reglas de produccin partiendo del smbolo
inicial y hasta llegar a una cadena con terminales solamente; se expresa como 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.

CARACTERIZACIN DE UNA GRAMTICA
Consiste en expresar las caractersticas del Lenguaje producido por una Gramtica
preferentemente por medio de una expresin formal, o bien, por medio de enunciados en
Lenguaje natural si lo anterior no es posible. No existen mtodos generales para caracterizar
los Lenguajes pero se debe tener en cuenta el orden en el que se aplicaran las
composiciones y cuntas veces se usara cada una de ellas. La caracterizacin es una
derivacin general, que abarca todas las posibles derivaciones en particular.
Teora de Autmatas y Lenguajes Formales
Pgina 16


En muchos casos es vlido y hasta recomendable el obtener la caracterizacin,
basados en la observacin y sin tener que llevarla a cabo en una forma muy
estructurada, paso a paso. El alumno obtendr con la prctica y por medio de su
razonamiento, una buena capacidad de anlisis para caracterizar por la simple
observacin de la Gramtica, lo cual es algo deseable pues en este curso se pueden
mejorar esas habilidades, muy importantes para el futuro profesionista.

EJEMPLO:
Caracterizar la Gramtica G = ( {R, S}, {a, b}, {R bR, R aS, S bS, S b} , {R} )
R bR
bbR
bbbR

b
*
R
b
*
a S
b
*
ab S
b
*
abb S

b
*
ab
*
S
b
*
ab
*
b = b
*
ab
+
, o lo que es lo mismo, b
m
ab
n
| m e
o
, n e .
L(G) = { b
*
ab
+
} = { b
m
ab
n
| m e
o
, n e }
Ambas formas de mostrar el resultado final son aceptadas, aunque se recomienda la
primera representacin por su simplicidad.
Ntese que las reglas recursivas se pueden aplicar una cantidad indefinida de veces o
inclusive no aplicarse. Adems, para estos casos, si son aplicadas se les debe dar prioridad.
La caracterizacin sirve para expresar las caractersticas que tienen todas las cadenas
de un Lenguaje Formal, de donde le viene el nombre. A partir de ella se pueden deducir
innumerables cadenas producidas por la Gramtica, as como descubrir a simple vista si una
cadena pertenece a L(G).
Por ejemplo, las cadenas originadas por la Gramtica anterior tienen una sola a y
terminan en b, por lo que por observacin simple descubrimos lo siguiente:
b
6
ab
8
e L(G) ab
8
e L(G) b
5
ab
2
a e L(G) b
6
a e L(G)
No todas las Gramticas se pueden caracterizar, sino slo aquellas que tienen una
estructura de sus composiciones bien elaborada y en orden.
La caracterizacin de una Gramtica Formal, junto con su diseo, constituyen los dos
temas ms importantes del presente captulo, por lo que se recomienda su especial atencin.


Teora de Autmatas y Lenguajes Formales
Pgina 17


EJEMPLO:
Caracterizar la Gramtica con P = { S AC, A aAb | ab, C cC | c } y o
0
= { S } y
especificar si produce un Lenguaje finito o infinito.
De acuerdo a la estructura de la Gramtica, se observa que el smbolo inicial produce
solamente la concatenacin AC. La A producir una a y una b simultneamente, quedando
las a al inicio y las b enseguida; nos damos cuenta que se tendr una cierta cantidad de a y
luego la misma cantidad de b, por lo menos una de cada una. Luego, la C producir una o
muchas veces la c, de manera independiente al final de la cadena.
Resulta claro, an sin desarrollar paso a paso la caracterizacin, que el resultado se
expresa como L = { a
m
b
m
c
n
| m, n c }.
Es necesario emplear (m, n) y no (*, +) en el resultado, porque solo con los primeros
se pueden especificar cantidades iguales de ciertos smbolos en el Lenguaje. En los casos
en los que son indistintas las cantidades en las que aparecen los smbolos, se pueden usar
tanto letras como (*,+) aunque se recomiendan estos ltimos.
El Lenguaje obtenido se considera infinito debido a que contiene una cantidad infinita
de cadenas.

EJEMPLO:
Sean N = { S, A, B }, T = { a, b }, o
0
= { S }. Caracterizar el Lenguaje generado por la
Gramtica con P = { S AB, A aAb | , B bBa | }.
En este caso, sabemos que la primera regla en ser aplicada ha de ser la de S AB ,
pero no sabemos si despus debiera derivarse A B. El hecho de que A est a la izquierda
no significa que deba ser derivada antes que B.
Haremos un desarrollo algo formal, pero combinando la aplicacin de reglas para que
sean derivados de manera independiente los dos smbolos no terminales. Dichas
derivaciones se harn en forma vertical y al ver el desarrollo, nos daremos cuenta de que si
derivamos A y B en forma independiente, podremos al final, concatenar los dos resultados
producidos para obtener la respuesta completa.

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

a
m
Ab
m
b
n
Ba
n
| m, n c
0
// Reglas empleadas: A aAb y B bBa.
a
m
b
m
b
n
a
n
// Reglas empleadas: A y B .

La primera regla se aplic horizontalmente y posteriormente se deriv en forma
vertical, y por separado, cada uno de los dos no terminales. A produjo a
m
b
m
y B produjo
b
n
a
n
, donde m, n son nmeros naturales incluyendo al cero. Ahora se concatena lo que
produjeron ambas y se tiene a
m
b
m+n
a
n
, que es el resultado final, expresado entonces como
L = { a
m
b
m+n
a
n
| m, n c
0
}.
Teora de Autmatas y Lenguajes Formales
Pgina 18


En este caso tambin es importante el empleo de letras como superndices y no
asteriscos, ya que hay que especificar que la cantidad de las a y de las b tienen una relacin
bien definida: la cantidad de ambas es la misma (estando siempre todas las b consecutivas).

DISEO DE GRAMTICAS FORMALES
TAMBIN SE PUEDE PRESENTAR EL CASO INVERSO: QUE SE PRESENTE COMO
DATO UN LENGUAJE Y EL PROBLEMA CONSISTA EN DISEAR LA GRAMTICA
FORMAL QUE LO PRODUCE.

EJEMPLO:
Disear una Gramtica que genere el Lenguaje L = { x
m
y
n
z
m
| m, n c
0
}.
Definamos un smbolo inicial; se propone para ese fin la letra A, lo cual constituye una
costumbre que asumimos en este curso (ms no es una regla). Observamos que la cantidad
de (x, z) es similar, lo cual nos hace darnos cuenta de que se deben producir por la misma
composicin. Las y se obtienen de manera separada, ya su cantidad es independiente que la
de (x, z). Es importante aclarar que el hecho de que dos smbolos tengan diferentes
superndices significa que la cantidad de smbolos a los que afectan puede ser la misma o
diferente.
Si se producen primero las y, no se podrn producir despus las (x, z). Por lo tanto
debemos tratar de producir primero stas ltimas, y no en forma indistinta.
Se propone iniciar con la regla A xAz, regla que produce simultneamente a x y z
en el orden adecuado. La recursividad permite la asignacin de una, ninguna o muchas
veces la aparicin de tales smbolos. La siguiente regla es A B, para evitar que se vuelvan
a producir (x, z) adems de evitar que se revuelvan con las y.
Luego se agrega la regla recursiva B By, o bien la regla B yB. Con ello,
aparecern las y que sean necesarias. No importa si se produce By o yB, ya que no se
pueden mezclar las y con los otros dos smbolos. Finalmente B para eliminar el no
terminal y concluir la cadena que se vaya a producir.
En sntesis, el resultado obtenido es P = { A xAz, A B, B By, B } con o
0
= { A }.
Obsrvese que es importante que se produzcan las cadenas especificadas, desde la
ms mnima (en este caso ). Las Matemticas son Ciencias Exactas, por lo que debe
tenerse especial cuidado en la exactitud de un resultado obtenido.


MUY IMPORTANTE: CUANDO SE DISEA UNA GRAMTICA, STA
DEBER PRODUCIR TODAS LAS CADENAS QUE SE ESPECIFICAN,
PERO NI UNA SOLA PALABRA MS. NI UNA MS, NI UNA MENOS.


Teora de Autmatas y Lenguajes Formales
Pgina 19


GRAMTICAS EQUIVALENTES
Dos Gramticas G
1
y G
2
se llaman equivalentes, en smbolos G
1
~ G
2
, si L(G
1
) = L(G
2
), 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
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
+
}.
Se deja al alumno proponer ms ejemplos de Gramticas equivalentes.
Ntese cmo, si bien una Gramtica debe producir siempre el mismo Lenguaje, un
Lenguaje puede ser generado por distintas Gramticas. Esta afirmacin concuerda con las
caractersticas de una funcin en trminos matemticos, recordando que L = f(G),
dependencia que expresamos tambin como L(G).
Considerar este criterio cuando en la tarea se resuelve un problema que consista en el
diseo de una Gramtica, ya que el alumno podra obtener una respuesta diferente a la que
obtiene el profesor en clase y sin embargo podra ser correcta tambin.

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 (que son aquellas que constan de al lado derecho
de la regla) 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.
Caso general P = { A B, B , ... } Con Reglas S decidible.
P = { A Bx, B , ... } Con Reglas No decidible.

EJEMPLOS:
P = { A xAz, A B, B By, B } con o
0
= { A }. Esta es una Gramtica decidible.
P = { A 1A1 | 01A | 01 |0 } con o
0
= { A }. Esta es una Gramtica no decidible.
P = { A aA, A bA, A bB, B a }. con o
0
= { A }. Esta evidentemente es una
Gramtica no decidible, pues ni siquiera contiene reglas .

Teora de Autmatas y Lenguajes Formales
Pgina 20


JERARQUA DE CHOMSKY
Es una clasificacin en cuatro clases o subtipos de Gramticas Formales cuya definicin,
realizada por Noam Chomsky en 1956, marc el comienzo de esta teora. Estas clases de
Gramticas se denominan como tipo 0, 1, 2 y 3, siendo cada una de ellas un subconjunto de
la anterior. Cada una de ellas puede relacionarse con una clase de Gramtica o por una
clase de Autmata o reconocedor, como se indica en la tabla que se muestra a continuacin.

GRAMTICA TIPO LENGUAJE AUTMATA

Chomsky o sin 0 Recursivamente Mquina de Turing
restricciones Ennumerable

Sensible al 1 Sensible Mquina de Turing
Contexto al Contexto Linealmente Limitada
(Autmata Lineal)

Libre o indepen- 2 Libre o indepen- Autmata de Pila
diente de Contexto diente de Contexto

Regular 3 Regular Autmata Finito

En la tabla anterior se especifica y relaciona, por cada rengln, un tipo de
Gramtica (por nombre o por nmero) con el tipo de Lenguaje que produce, adems de
mencionar el analizador o Autmata que se empleara para reconocer las cadenas que
pertenecen a ese Lenguaje.
La Jerarqua de Chomsky constituye el criterio oficial para clasificar las Gramticas
Formales e inclusive a los Lenguajes que producen. Es importante conocerla, ya que cada
uno de los cuatro tipos tiene caractersticas muy importantes en aspectos computacionales.
Existen, sin embargo, algunas propuestas poco usuales para hacer una clasificacin
extendida que a diferencia de la actual tiene una mayor cantidad de tipos. Para fines
prcticos, no se considerarn esos criterios en este curso.
De la tabla anterior, se descubre cul es el Autmata idneo para aceptar o rechazar
las cadenas para un determinado tipo de Lenguaje, sabiendo el tipo de Gramtica empleada.
Emplearemos esta tabla para hacer demostraciones acerca de la pertenencia a un
determinado tipo de Gramtica o Lenguaje, por medio de condiciones suficientes de cumplir.
Por ejemplo, se demuestra satisfactoriamente que un Lenguaje es Libre de Contexto si existe
una Gramtica de ese tipo que lo produzca, o bien si es aceptado por un Autmata de Pila.
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:
Teora de Autmatas y Lenguajes Formales
Pgina 21




A una Gramtica se la debe considerar de acuerdo al tipo ms selectivo que
logre alcanzar, resultando ser obvio que tambin cumple con los requisitos de las
Gramticas de los tipos precedentes. Por ejemplo, si una Gramtica es de tipo 2 o
Libre de Contexto, se la considera y denomina de esta manera y no como Sensible al
Contexto o Recursivamente Ennumerable, a pesar de que cumple con las condiciones
para ambos tipos.
Es importante aclarar que como consecuencia de la Jerarqua pueden darse casos en
que se puedan emplear analizadores o Autmatas que sin embargo no son los idneos. Por
ejemplo, un Autmata de Pila podra emplearse para reconocer un Lenguaje Regular
(desaprovechando la pila), pero uno Finito no podr reconocer un Lenguaje Libre de
Contexto. Por qu?

GRAMTICA DE CHOMSKY O SIN RESTRICCIONES (TIPO 0)
No existen restricciones en las reglas de produccin, excepto que cumplan con las
caractersticas para tener sus composiciones elaboradas en forma correcta. De hecho,
cualquier Gramtica, debe ser por lo menos de tipo 0 y es que todas deben quedar
clasificadas dentro de alguno de los cuatro tipos.

EJEMPLO:
Disear una Gramtica de Chomsky, en este caso sin especificaciones concretas.
G= (N, T, P, o
0
)
N = { A, B, C, D } T = { 0, 1, 2 } o
0
= { A }
P = { A B02 | D01 | 0, B CA, B2 A, 1B 1A, AB BA | D, C 0A |1B2A |1,
D A0 | B02 | 2 | }
Al reconocer las siguientes clases de Gramtica se ver que la anterior tiene tres
reglas que no cumplen con las caractersticas para ser clasificada segn otra categora y que
son B2 A y AB BA y D .
Ntese que aunque parezca extrao, son consideradas como vlidas las reglas
aunque contengan terminales en su lado izquierdo (acompaados de un no terminal) o las
que llevan menos smbolos al lado derecho (incluido el caso de ).

Teora de Autmatas y Lenguajes Formales
Pgina 22


GRAMTICA SENSIBLE AL CONTEXTO (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 solo smbolo no terminal, y que el
infijo derecho sea cualquier cadena con excepcin de .
Se deben seleccionar esos cuatro elementos en forma tal que de alguna forma posible
cumplan el requisito correspondiente. Se recomienda que se asegure primero el adecuado
infijo izquierdo (A), ya que es el ms difcil de obtener.

EJEMPLO:
Disear una Gramtica Sensible al Contexto, en este caso sin especificaciones concretas.
G= (N, T, P, o
0
)
N = { S, A, B, C, D, E } T = { a, b, c } o
0
= { S }
P = { S aAB | aB, A aAC | aC, B Dc, D b, CD CE, CE DE, DE Dc,
Cc Dcc }.
Obtener una cadena s e L(G) y demostrar que en muchos casos no es muy
recomendable trabajar con este tipo de Gramticas debido a 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, el smbolo 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, inclusive es producido el Lenguaje L(G) = { a
m
b
n
c
m
|
m, n e }.
Dado que puede existir indecibilidad en esta Gramtica (cuando se presenta el caso
de una derivacin que no se pueda concluir en una cadena vlida), es lgico suponer que
tambin existir y con mayor razn en la de Chomsky (ya que no hay en ellas ni la ms
mnima restriccin, adems de ser el superconjunto de la tipo 1). Ambas clases de
Gramticas son muy poco usuales en aplicaciones computacionales, por lo que poco se
hablar de ellas en el resto de este curso.
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. En
todas las composiciones debe haber mayor o igual cantidad de smbolos en el lado
derecho que en el izquierdo. POR ESTA RAZN NO SE ACEPTAN LAS REGLAS
LAMBDA COMO PARTE DE ESTAS GRAMTICAS, PUES EN ELLAS HAY CERO
SMBOLOS A LA DERECHA Y NO SE CUMPLE CON EL REQUISITO MENCIONADO.
Teora de Autmatas y Lenguajes Formales
Pgina 23


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) se depende necesariamente de la
presencia de o y |, flanqueando a la A.

GRAMTICA LIBRE O INDEPENDIENTE DE CONTEXTO (TIPO 2)
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 concretas.
G= ( N, T, P, o
0
).
N = { E, F, G, H } T = { q, r, s } o
0
= { E }
P = { E FGs | rE | H | rs, F Hq | r,
G Ers | Fq | sE | s, H GEs | sG | q }
MUCHOS AUTORES ACEPTAN LAS REGLAS LAMBDA COMO VLIDAS PARA
ESTA GRAMTICA, PERO EN ESTE CURSO NO LO HAREMOS AS PARA CUMPLIR
CON LAS CARACTERSTICAS DEFINIDAS EN LA JERARQUA DE CHOMSKY.
En una Gramtica de este tipo diseada correctamente 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, Java
o Prolog.

GRAMTICA REGULAR (TIPO 3)
Si toda composicin es de una de las dos formas vlidas, que son A a, o bien A a B;
donde A, B e N y a 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.
Siempre debe aparecer el smbolo terminal antes que el no terminal en la parte
derecha de las reglas. Por ejemplo, no es vlido que una regla sea A Ax.
Al derivar para producir una cadena, aparece un solo smbolo no terminal en cada
paso, quedando siempre hasta el final de la cadena que se est produciendo (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:
Disear una Gramtica Regular, en este caso sin especificaciones concretas.
Teora de Autmatas y Lenguajes Formales
Pgina 24


G= (N, T, P, o
0
)
N = { A, B, C, D, E } T = { x, y, z } o
0
= { A }
P = { A xA | yC | x, B xC | xD | zE | x,
C yA | xD | y, D xA | xB,
E yB | y | z }
Una cadena producida por esta Gramtica podra ser:
A xA xyC xyyE xyyyE xyyyyE xyyyyyB xyyyyyx.
Observar que una cadena se construye smbolo por smbolo y de izquierda a derecha
en una forma muy sencilla, como ya se haba dicho. El no terminal siempre aparece como
sufijo.
No es posible disear un Lenguaje Regular en el que se igualen o se relacionen
de alguna manera las cantidades de smbolos implicados en la expresin; por lo
anteriormente expuesto no seran Lenguajes Regulares, ni L = { x
n
y
n
| n c }, ni L = { x
n
y
2n-1

| n c }, ni L = { x
m
y
n
| m > n y m, n c }, por ejemplo.
Se llama Expresin Regular a aquella que representa un Lenguaje Regular. En
programacin tienen una gran importancia en el desarrollo de editores de texto y
aplicaciones para buscar y manipular textos, entre otras.
Este tipo de Gramtica Formal es el que se emplea para definir la estructura de
los componentes lxicos (tokens) en los Lenguajes de programacin como C, Java o
Prolog.

EJEMPLO:
Disear una Gramtica Regular con T = { a, b }, que genere todos los arreglos que finalicen
con ba. El Lenguaje se representa con la expresin regular L = { (a, b)
*
b a }.
Sea A el smbolo inicial. De acuerdo al formato que se mencion anteriormente, se
deben producir los terminales smbolo a smbolo. Por tanto, debemos pensar primero en
producir la parte inicial de las cadenas de este Lenguaje, que consiste en una mezcla de una,
ninguna o muchas (a, b). Las primeras reglas son A aA y A bA. Al emplearlas en forma
indistinta se forma el prefijo (a, b)
*
. Para continuar, se produce la b, pero la a final todava no.
La composicin ser A bB, con la cual se obliga a cambiar de no terminal (de A a B) para
que la siguiente regla a emplear sea forzosamente la de B a y con ello se produzca el
posfijo deseado.
Entonces la respuesta es P = { A aA, A bA, A bB, B a } con o
0
= { A }.

TEOREMAS:
- Si L
1
y L
2
son Lenguajes regulares, entonces L
1
L
2
,

L
1
- L
2
, L
1
*
, L
2
*
, tambin son
Lenguajes Regulares.
- Si L es un Lenguaje Regular, el Lenguaje L
R
= { x
n
... x
2
x
1
| x
1
x
2
... x
n
e L } tambin
es Regular.
Teora de Autmatas y Lenguajes Formales
Pgina 25


DERIVACIN POR LA IZQUIERDA Y POR LA DERECHA
Sea G una Gramtica Libre de Contexto y s una cadena de L(G); se la llama derivacin por
la izquierda si al derivar para obtener una cadena, se sustituye siempre primeramente el
smbolo no terminal que est ms a la izquierda en cada momento. Similarmente, la
derivacin por la derecha ocurre cuando el smbolo que se deriva antes que los dems es
el que se ubica ms hacia la derecha.
La utilidad de estos dos conceptos se conocer cuando se estudie el caso de los
analizadores de sintaxis en un compilador.

COMENTARIO FINAL SOBRE LOS TIPOS DE GRAMTICAS
Al consultar la bibliografa alterna (o las pginas de internet sobre este tema) el alumno se
puede dar cuenta de que pueden existir algunas diferencias en los criterios para clasificarlas
en el tipo que corresponde. Por ejemplo, VARIOS AUTORES CONSIDERAN QUE LAS
REGLAS LAMBDA SON VLIDAS EN LAS GRAMTICAS DE TIPO 2 O DE TIPO 3 BAJO
CIERTAS CONDICIONES, AUNQUE ESA DECISIN PUEDE AFECTAR A LA
JERARQUA DE CHOMSKY; otros reconocen a las Gramticas Regulares por la derecha o
por la izquierda, donde las primeras son las que se estn estudiando en este curso y las
segundas son aquella en las que las reglas son todas del tipo A a o A Ba; algunos
opinan que en la Gramtica Sensible al Contexto basta que las reglas tengan menos
smbolos a la izquierda que a la derecha. Para desarrollar estas notas, ha sido considerada
la definicin que se ha considerado es la ms conveniente para los objetivos del curso.
Adems, algunos autores consideran como Gramtica Lineal a la que cada
produccin contiene a lo sumo, un no terminal en el lado derecho de las reglas. Esta es lineal
derecha si un no terminal puede nicamente aparecer como su smbolo extremo derecho, es
decir si cada produccin tiene una de las formas A e o A eB, donde A, B son sendos no
terminales y e es una cadena constituida por uno o muchos terminales. Una Gramtica lineal
izquierda puede definirse como la que contiene reglas A e o A Be.
Ejemplo de Gramtica lineal derecha:
P = { A aA | abA | abB | abc, B cA | bcB | ab }
En s esta es una Gramtica Libre de Contexto. Tngase en cuenta que este tipo de
Gramtica no forma parte de la Jerarqua de Chomsky, y que su empleo es ms bien debido
a que en este caso se puede identificar fcilmente cuales son las composiciones que llevan a
alguna cadena producida especfica.
Sin embargo, si se definen las secuencias de caracteres consecutivos presentes en
las composiciones, como a, c, ab, bc y abc para que cada una de ellas sea un nico terminal,
entonces s sera una Gramtica Regular.

PROBLEMAS ADICIONALES
EJEMPLO:
Determinar en cada inciso el tipo de Gramtica que se tiene, expresar si es o no
decidible y caracterizarla.
Teora de Autmatas y Lenguajes Formales
Pgina 26


a) G = ({ S, A }, { 0, 1 }, { S 0A, A 10A | } , {S}).
La Gramtica es Tipo 0 o de Chomsky. Se debe a que contiene una regla lambda, y
en este curso, ese ser motivo suficiente para clasificarla as, ya que esa composicin no
corresponde a los formatos para los otros tipos.
No es decidible, ya que la cadena vaca no se puede producir con estas producciones.
La caracterizacin es L(G) = { 0 (10)
*
}.
b) G = ( { S }, { 0, 1 }, { S S01 | 0 }, { S } ).
La Gramtica es de Tipo 2 o Libre de Contexto. El lado izquierdo de las reglas
consiste en un nico no terminal, mientras que el derecho nunca es la cadena vaca.
No es decidible, ya que la cadena vaca no se puede producir con estas reglas.
La caracterizacin es L(G) = { 0 (01)
*
}.
c) G = ( { C, R, S }, { x, y, z }, { C RCS | yC | , R x, S z }, { C } ).
La Gramtica es Tipo 0 o de Chomsky. Se debe a que contiene una regla lambda, y
en este curso, ese ser motivo suficiente para clasificarla as.
S es decidible, ya que la cadena vaca s se puede producir con estas reglas, es decir
que c L(G).
Para caracterizar, hay que observar que las reglas C RCS y C yC pueden ser
empleadas de manera alternada y no tiene prioridad en realidad ninguna de las dos. Al
analizar, nos damos cuenta que las cadenas que se producen, contienen la misma cantidad
de x que de z, y que todas las z se colocan al final, mientras que las x y las y se pueden
mezclar al inicio de la palabra. Por supuesto, se debe tomar en cuenta la palabra , que
tambin es producida. Cmo se puede representar tal Lenguaje con una expresin formal?

EJEMPLO:
Dada la Gramtica con P = {S A | AAB, Aa ABa, A aa, AB ABB, Bb ABb, B
b}
a) De qu tipo es, segn la Jerarqua de Chomsky?
Es una Gramtica Sensible al Contexto o de tipo 1. En los casos de las reglas donde
el lado izquierdo lo compone un nico no terminal, no hay problema para aceptarlas, ya que
son vlidas, inclusive en el caso de Gramticas Libres de Contexto. En el caso de las
composiciones A a AB a, A B A BB y B b Ab b se puede verificar que s se
cumple con el formato requerido de oA| oo| de acuerdo a como se muestran las partes
separadas en el subrayado. En caso de que no quede muy clara la justificacin de la
respuesta, preguntar al profesor.
b) Demostrar que a
2
b
2
a
2
b es una cadena de L (G).
Se demuestra por medio de la siguiente derivacin:
S AAB AaaB ABaaB ABBaaB aaBBaaB aabBaaB aabbaaB aabbaab.
c) Es decidible? Por qu?
Teora de Autmatas y Lenguajes Formales
Pgina 27


No es una Gramtica decidible porque no se puede producir la cadena vaca con las
reglas del conjunto P. Inclusive, ni siquiera existen reglas lambda en la Gramtica.
d) Determinar, si es posible, una cadena de L(G) tal que |s| = 6 por derivacin a
la derecha.
No es posible hacer esa derivacin, ya que el enunciado que describe cmo se hace
una derivacin por derecha (o por izquierda) menciona que la Gramtica deber ser Libre de
Contexto, y sta no lo es, como se mencion en a). Por otra parte, s se pueden hacer
derivaciones de cadenas de L(G) con longitud 6.

EJEMPLO:
Dada la Gramtica con P = { S bS | aA | b, A aS | bA | a } con smbolo inicial S.
a) Qu cantidad de a y de b pueden tener las cadenas de L(G)?
La cantidad de letras b que se obtienen es un nmero CUALQUIERA desde 0 en adelante.
La cantidad de letras a que se obtienen es un nmero PAR desde 0 en adelante.
Obsrvese que es imposible que esta Gramtica produzca cadenas con una cantidad
impar de letras a.
b) Es una Gramtica decidible? Por qu?
No es una Gramtica decidible, porque la cadena vaca no es parte del Lenguaje L(G).
c) De qu tipo es, segn la Jerarqua de Chomsky?
Es una Gramtica Regular o de Tipo 3.
d) Encontrar, 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 .
La derivacin anterior nos da una cadena de longitud 6. En este caso se tiene que es
tanto por la derecha como por la izquierda, ya que se deriv primero el smbolo no terminal
que est ms hacia la derecha o la izquierda, segn como se quiera ver. Siempre aparece
un nico smbolo no terminal a la vez, cada vez que se deriva!
En toda Gramtica Regular, como nunca aparece ms de un smbolo no terminal a la
vez cuando se est derivando, siempre es la misma la derivacin por la izquierda que por la
derecha, por lo que no es usual el aplicar este concepto en esta clase de Gramticas.

FORMA NORMAL DE CHOMSKY (CNF)
CONCEPTO: Se presenta cuando el lado derecho en todas las reglas de produccin de una
Gramtica Libre de Contexto consiste en un nico smbolo terminal o exactamente dos no
terminales.
Obsrvese que, para una Gramtica en Forma Normal de Chomsky, el rbol de
derivacin para cualquier derivacin est bastante bien construido ya que, excepto en las
hojas, el rbol es binario.

Teora de Autmatas y Lenguajes Formales
Pgina 28


EJEMPLO:
Mostrar dos Gramticas equivalentes, una de ellas en CNF.
P
1
= { S xSy, S xy }
P
2
= { S XM, S XY, M SY, X x, Y y }
Se ve claramente que L(G
1
)= { x
+
y
+
} = L(G
2
) G
1
~ G
2 .

Observar que G
2
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.
Se interpreta como que cualquier Gramtica Libre de Contexto se puede transformar
en otra equivalente y expresada en Forma Normal de Chomsky.

PROCEDIMIENTO PARA TRANSFORMAR UNA GRAMTICA A LA CNF
PASO 1) Se transforman las composiciones que tienen al lado derecho combinaciones de
terminales y no terminales, o bien donde haya ms de un terminal. Para cada terminal a
incluida en las producciones, se define un no terminal especfico A, y la regla A a con lo
que se sustituye cada ocurrencia de a por A.
Despus de aplicar este paso, todos los smbolos terminales se producen
exclusivamente por una regla del tipo A a.

EJEMPLOS:
AxwCx Syx

A XWCX SYX
X x Xx
W w Yy

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 N
1
N
2
N
3
... N
t
se sustituye por el
encadenamiento de t-1 reglas:
N N
1
R
1
R
1
N
2
R
2
R
2
N
3
R
3
... R
t-2
N
t-1
N
t

donde R
1
, R
2
, R
3
, R
t-2
son smbolos no terminales de nueva aparicin.
Despus de aplicar este paso, todas las reglas en las que se producen no terminales
sern del tipo A BC o A B.

Teora de Autmatas y Lenguajes Formales
Pgina 29


EJEMPLOS:
SASMA AXAO

SAT AXI
TSU IAO
UMA

PASO 3) Se transforman las reglas que contengan a la derecha un solo smbolo no terminal.
Se hace heredando al smbolo no terminal de la izquierda de la regla en cuestin, las
composiciones que produce el no terminal de la derecha y se conservan estas ltimas.

EJEMPLO:
AB, BBD, BCC, BCA, B1.
Son actualizadas por las siguientes:
A BD, ACC, ACA, A1, BBD, BCC, BCA, B1.
La utilidad que tiene el expresar una Gramtica Libre de Contexto en su Forma Normal
de Chomsky se conocer cuando se curse la asignatura de Compiladores.
Tambin existe un tipo de estructuracin para las Gramticas Libres de Contexto en la
llamada Forma Normal de Greibach (GNF). Existe un Teorema que expresa que cualquier
Gramtica de tipo 2 se puede transformar en otra equivalente, expresada en la GNF. Se deja
al alumno que investigue en qu consiste esta representacin y su aplicacin.

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 }.

Teora de Autmatas y Lenguajes Formales
Pgina 30


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

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

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 }.
Queda para que el alumno lo resuelva, aunque no aparezca en los problemas finales.













Teora de Autmatas y Lenguajes Formales
Pgina 31




CAPTULO 2
LAS GRAMTICAS FORMALES EN LA COMPUTACIN

FORMA NORMAL DE BACKUS - NAUR (BNF)
Fue la primera notacin formal cuyo empleo se ha generalizado para describir la sintaxis de
los Lenguajes de programacin y fue creada por John Backus en 1960. Los Lenguajes de
alto nivel como Fortran, Pascal, C, C++, Java y Algol pueden representarse en BNF.
La notacin se adopt de inmediato para describir Algol 60. Despus se supo que
Panini haba usado una notacin similar a la BNF cinco siglos antes de Cristo para describir
las complejas reglas de la Gramtica del snscrito.
Las siglas BNF comenzaron como abreviatura de Backus Normal Form, y despus se
transform su interpretacin en Backus - Naur Form, para reconocer las contribuciones de
este ltimo como editor del informe de ALGOL 60. Una variante surgida posteriormente fue la
BNF Extendida. Estas dos representaciones, en combinacin con los diagramas o esquemas
de sintaxis (que son en s reglas de produccin en modo grfico), pueden utilizarse para
expresar la forma como se construyen las partes de los programas en un Lenguaje de
programacin de alto nivel.
LA BNF EN ESENCIA ES UN CAMBIO EN LA NOMENCLATURA.
Consiste en la aplicacin de los siguientes tres criterios para modificar el aspecto que
presenta la Gramtica, cambiando la notacin aprendida en el captulo anterior:
1. Smbolos no terminales: Se delimitan con los picoparntesis < >.
2. Composiciones: Se sustituye la flecha de la produccin por ::=.
3. Composiciones mltiples: Se pueden agrupar con el carcter | (que significa o),
cuando varias reglas tienen el mismo valor en el lado
izquierdo.

EJEMPLO:
Transformar la notacin de la siguiente Gramtica a la BNF correspondiente.
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>} )
En el ejemplo anterior se emple para fines didcticos la conversin a la notacin de
BNF de una Gramtica cuyo enfoque es ms matemtico que computacional, lo cual result
inadecuado, ya que se complic la representacin; ntese que la descripcin en BNF result
ser ms extensa en su longitud.
En realidad a la BNF se la debe utilizar solamente en casos en los que para nombrar a
los smbolos no terminales se deba describir su significado, en vez de emplear una sola letra
mayscula, es decir, cuando tiene un propsito computacional.
Teora de Autmatas y Lenguajes Formales
Pgina 32



EJEMPLO:
Mostrar que la cadena s = -318 e L(G), donde G = ( N, T, P, o
0
) con los conjuntos
componentes siguientes:
N = { <entero>, <entero con signo>, <entero sin signo>, <dgito> }
T = { +, -, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
P = { <entero> ::= <entero con signo> | <entero sin signo>,
<entero con signo> ::= + <entero sin signo> | - <entero sin signo>,
<entero sin signo> ::= <dgito> | <dgito> <entero sin signo>,
<dgito> ::= 0 |1 |2 |3 |4 |5 |6 |7 |8 |9 }
o
0
= { <entero> } // Indica lo que produce la Gramtica.
La Gramtica genera todos los nmeros enteros vlidos y nada ms. Por tanto
produce, por ejemplo 1649, -65, +1000000, entre otros muchos, pero no -36.2, ni 12., ni 67+.
NOTA: Existen otras variadas Gramticas equivalentes a la anterior para el mismo propsito.
De hecho la anterior tiene el grave inconveniente de que no es regular, cuando debiera serlo
por cuestin de emplearse en una definicin lexicogrfica.
Derivemos a partir del smbolo inicial y, basados en la descripcin contenida en cada
smbolo no terminal, sabremos cmo debe ser la derivacin sin posibilidad de equivocarnos.
<entero> <entero con signo> -<entero sin signo> -<dgito><entero sin signo>
-<dgito><dgito><entero sin signo> -<dgito><dgito><dgito>
-3<dgito><dgito> -31<dgito> -318.
Recomendacin: Al smbolo inicial se lo debera denominar con una o varias palabras
descriptivas sobre lo que se desea producir en el Lenguaje; por ejemplo, en este caso se lo
llam entero y ese es el tipo de dato que se obtiene al derivar.
La ventaja de emplear la BNF en estas Gramticas, es que se puede describir el tipo
de cadena que va a ser producida; sto se logra, dndole el nombre correspondiente al
smbolo no terminal. No importa que la descripcin sea muy extensa, ya que con los
caracteres < y > delimitamos lo que es un nico smbolo; por ejemplo, <entero sin signo> es
un nico no terminal, descrito con tres palabras.

EJEMPLOS DE COMPOSICIONES DE LENGUAJE PASCAL EXPRESADAS EN BNF
<PROGRAMA> ::= <CABECERA> ; <CLUSULA USES> <CUERPO DE PROGRAMA> .
<SENTENCIA> ::= <SENTENCIA SIMPLE> | <SENTENCIA COMPUESTA>
< SENTENCIA COMPUESTA> ::= BEGIN <SENTENCIA> END
<ASIGNACIN> ::= <IDENTIFICADOR> := <EXPRESIN>
<SELECTIVA SIMPLE> ::= IF <CONDICIN> THEN <SENTENCIA>
<SELECTIVA DOBLE> ::= IF <CONDICIN> THEN <SENTENCIA> ELSE <SENTENCIA>;
Teora de Autmatas y Lenguajes Formales
Pgina 33


<SELECTIVA MLTIPLE> ::= CASE <SELECTOR> OF
<LISTA DE CONSTANTES>: <SENTENCIAS 1>;
<LISTA DE CONSTANTES> : <SENTENCIAS 2>;
...
[ELSE <SENTENCIA POR DEFECTO> ]
END;
<PARA> ::= FOR <NDICE> := <VALOR INICIAL> TO <VALOR FINAL> DO <SENTENCIA>
<MIENTRAS> ::= WHILE <CONDICIN> DO <SENTENCIA> ;
<REPETIR> ::= REPEAT <SENTENCIA> UNTIL <CONDICIN>
<CONDICIN> ::= (<CONDICIN>) | <EXPRESIN><OP_RELACIONAL><EXPRESIN>
A los smbolos no terminales se los llama tambin constructores, y a los terminales
tokens o componentes lxicos.
De la misma manera, cada Lenguaje de Programacin tiene su coleccin de reglas de
produccin que definen su sintaxis, adems de otras reglas dnde se indica la forma como
se construyen sus tokens o producciones lxicas. Esta coleccin de composiciones son el
punto de partida para el diseo de un compilador de acuerdo a las especificaciones
deseadas. Tambin se pueden emplear eficazmente para comprender programas escritos en
Lenguajes no conocidos por el estudiante y para comparar los Lenguajes de Programacin.
TAREA PARA EL ESTUDIANTE
Investigar en alguna referencia vlida en internet o en un texto sobre un Lenguaje de
programacin tpico, acerca de la forma como se expresan sus reglas sintcticas, ya
sea en BNF, BNFE o en diagramas de sintaxis, adems de comprender cmo se
pueden transformar estas representaciones entre s.

EJEMPLO:
De qu frases consta la siguiente Gramtica? Considerar como smbolo inicial a <oracin>.
P = { <oracin> ::= <sujeto> <predicado>,
<sujeto> ::= <sustantivo>,
<predicado> ::= <verbo intransitivo> | <verbo transitivo> <objeto>,
<sustantivo> ::= Mario | Sandra,
<verbo transitivo> ::= odia | golpea,
<verbo intransitivo> ::= duerme,
<objeto> ::= a <sustantivo> }
Respuesta:
L = { Mario odia a Mario. Mario odia a Sandra.
Mario golpea a Mario. Mario golpea a Sandra.
Sandra odia a Mario. Sandra odia a Sandra.
Teora de Autmatas y Lenguajes Formales
Pgina 34


Sandra golpea a Mario. Sandra golpea a Sandra.
Mario duerme. Sandra duerme. }
Ntese que la misma Teora expuesta en este captulo nos ha permitido producir un
Lenguaje, ya no formado de palabras, sino ahora de oraciones o sentencias; en este caso, el
Alfabeto contiene smbolos que son las palabras. De esa misma forma se pueden formar
Lenguajes de prrafos o de otras cadenas muy diversas.
Por otra parte, se observa que an los Lenguajes Formales finitos, tienen una
Gramtica Formal que los produce.
En el Procesamiento de los Lenguajes Naturales, rea de la Inteligencia Artificial que
nos permitir conversar con un Agente inteligente inerte en nuestro propio idioma, se emplea
la Teora de los Lenguajes Formales para su diseo. Investguese sobre el trabajo
desarrollado por Noam Chomsky para establecer sus primeras bases.
Se recomienda tambin consultar sobre el tema Agentes que se Comunican en un
texto sobre Inteligencia Artificial o en internet.

RBOLES DE DERIVACIN
CONCEPTO: Es una forma de indicar grficamente cmo una Gramtica Independiente de
Contexto deriva una palabra particular. En este rbol matemtico, los nodos de las hojas del
rbol son smbolos terminales y los nodos interiores son los no terminales. En este caso
ocurre que secuencias de derivacin diferentes corresponden al mismo rbol de derivacin,
ya que en esta representacin no se conoce el orden en que se aplic cada composicin.
Es til en muchos casos presentar las derivaciones como rboles. Estos diagramas
conocidos tambin como rboles de anlisis gramatical o de anlisis sintctico suponen una
estructura sobre las palabras de un Lenguaje y son de utilidad en aplicaciones tales como la
compilacin de los Lenguajes de programacin.
El smbolo inicial se define como el nodo raz del rbol. Si se va a emplear la
regla A x
1
x
2
... x
n
, al ver que en ese momento A es un vrtice terminal, entonces al
mencionado nodo se le asignan sus hijos, que estarn etiquetados como x
1
,

x
2
, ... , x
n

siendo cada uno de ellos colocado en una rama por separado. Se debe derivar hasta
que todas las hojas sean terminales.
PREGUNTA IMPORTANTE: Por qu no se pueden usar los rboles de derivacin en
Gramticas que no sean Libres de Contexto?
Pista: Cmo se diseara la parte del rbol que corresponde a la aplicacin de una
regla tal como AB A1? Sera realmente un rbol el que se obtendra? Se puede tener al
ramificar a dos nodos padres, en este caso A y B?

EJEMPLO:
Dada la Gramtica G = ( {a, b}, {0, 1}, {a 0ab | a1 | b0, b 0a |1}, {a} ), determinar
alguna cadena s | s e L(G).
Originalmente, se obtenan las cadenas con la derivacin en la forma tradicional, de la
siguiente manera:
Teora de Autmatas y Lenguajes Formales
Pgina 35


a 0ab 0a1b 0a10a 0a110a 0b0110a 0b0110b0 010110b0 01011010
s = (01)
2
(10)
2
|s| = 8
El rbol de derivacin que se hubiera diseado con el mismo fin, es el siguiente:

El rbol se lee primero en profundidad en forma similar a como se hace con los que se
utilizan en las estructuras de datos.
Al analizar el rbol notaremos que todo nodo interior constituye el lado izquierdo de
una composicin utilizada en ese momento, y la concatenacin de los nodos hijos
representaran el lado derecho de la misma.
Obsrvese cmo en la produccin original por derivaciones sucesivas no hay dudas
en cuanto al orden de aplicacin de las composiciones, pero s cuando se obtiene el rbol y
deseamos saber cmo se realizaron las derivaciones que lo produjeron. Como en muchas
ocasiones no importa ese orden, esta limitacin no representa problema alguno.
Ni la derivacin por la derecha ni por la izquierda se pueden expresar por rboles de
derivacin, porque en estos no se conoce el orden en que se han utilizado las reglas.

GRAMTICAS AMBIGUAS Y UNVOCAS
Una Gramtica puede tener ms de un rbol de derivacin que genere una cadena
determinada, en cuyo caso se la llamar ambigua. Para demostrar que una Gramtica es
ambigua lo nico que se requiere es encontrar una cadena que tenga ms de un rbol de
derivacin que la produzca. En contraposicin, la unvoca es una Gramtica Libre de
Contexto que tiene asociado un solo rbol de derivacin para toda cadena de L(G).
Un Lenguaje L se llama AMBIGUO si existe una Gramtica ambigua que lo genere y
si no es as, en contraposicin se lo llama UNVOCO.
Tericamente, para afirmar que una Gramtica es unvoca, debera demostrarse
que todas y cada una de las cadenas que produce, son generadas con un nico
posible rbol de derivacin. Como esto no es posible, debe analizarse la estructura
general de las composiciones. No basta con que una sola cadena sea producida por
un nico rbol para afirmar que no existe ambigedad.

Teora de Autmatas y Lenguajes Formales
Pgina 36


EJEMPLO:
Considrese la Gramtica G con reglas P = { <cadena> ::= <cadena> + <cadena> |
<cadena> - <cadena> |a |b |c } . Determinar si G es ambigua o unvoca.

Como la cadena a - b + c se puede producir por cualquiera de los dos rboles, la
Gramtica G es ambigua. Para demostrarlo basta con una sola cadena de L(G).
Sin embargo, la Gramtica con las siguientes composiciones es unvoca:
P = { <cadena> ::= <cadena> + <id> | <cadena> - <id> | <id>, <id> ::= a | b | c |d }.
Queda para el alumno la demostracin mediante el anlisis de la Gramtica
considerando las cadenas que produce, tales como a - b + c.
NOTA: Para el diseo de las reglas sintcticas del compilador en un Lenguaje de
programacin, se utiliza una Gramtica no ambigua, aunque histricamente se ha dado el
caso de emplear una ambigua con reglas adicionales para resolver las ambigedades. Esta
afirmacin es muy importante, ya que al presentarse el caso de una ambigedad, un
analizador sintctico podra confundirse al jerarquizar el orden en el que se realizan las
operaciones. Por ejemplo, en la Gramtica del ejemplo anterior (donde haba ambigedad),
en el primer rbol se indica que se hace primero la resta y luego la suma, al contrario de lo
que se observa en el segundo.
Cuando un rbol de Derivacin se emplea para definir la sintaxis en una
sentencia vlida en un Lenguaje de programacin, o bien en alguna expresin
computacional y esto se muestra de una manera detallada para cada paso de la
derivacin, se le da el nombre de rbol de Anlisis Sintctico.

EJEMPLO:
Dada la Gramtica con P = { S A | B, A a, B a } con smbolo inicial S, determinar si
es ambigua o unvoca.
Teora de Autmatas y Lenguajes Formales
Pgina 37


Es ambigua, ya que se pueden producir dos rboles diferentes para producir la cadena
a. Slo cambia el nodo intermedio del rbol de derivacin, que puede ser A B, razn que es
suficiente.
Se puede demostrar que el idioma espaol es un Lenguaje ambiguo, a partir de
una cadena vlida en este Lenguaje, tal como "nada en el agua".
Para lo anterior, bastar con demostrar que para la mencionada cadena, o cualquier
otra que sea una frase vlida producida en ese idioma, existen dos diferentes rboles que la
producen. Es suficiente con que un nodo cambie, para que un rbol sea diferente a otro.
De hecho, la clave est en que la palabra nada, pueda interpretarse como un adverbio
de cantidad (ausencia de algo) o como un verbo (de la accin de nadar).
A propsito, obsrvese que las palabras del Lenguaje Formal, ya no son cadenas,
como abbbcbbac, sino frases de un Lenguaje Natural y lo anterior con la misma teora
empleada en el captulo anterior.

EJEMPLO:
Considrese la Gramtica Libre de Contexto definida por las reglas de P = {s ss+ | ss
*
| a}.
a) Cmo se puede generar la cadena aa+a
*
por medio de derivaciones sucesivas?
s ss
*
sa
*
ss+a
*
sa+a
*
aa+a
*
.
b) Construir un rbol de derivacin para esta misma cadena.

Este rbol de derivacin constituye la nica forma posible de producir dicha cadena.
No existe otro rbol que la produzca.
Esta situacin no es suficiente para afirmar que la Gramtica, en general, ser
unvoca, ya que todas las cadenas que produzca la misma, deben ser producidas por un
nico rbol cada una de ellas.
La Gramtica de este problema es unvoca porque todas las cadenas que produce, se
asocian a un nico rbol cada una.
c) Caracterizar, si es posible, la Gramtica. Con qu utilidad se la puede aplicar?
Teora de Autmatas y Lenguajes Formales
Pgina 38


Veamos primero la utilidad. Las cadenas producidas en este caso, se refieren a
expresiones vlidas que corresponden a la sintaxis que se conoce como NOTACIN
POSFIJA, porque el operador aparece precisamente como tal.
En este ejemplo se han considerado slo dos de las operaciones aritmticas bsicas,
pero podran haberse contemplado tambin la resta y la divisin; no importa si se toman las
dos o las cuatro operaciones, ya que las conclusiones que habremos de obtener son las
mismas.
Algunas calculadoras de la marca HP emplean esta notacin; para multiplicar 6 por 8,
por ejemplo, se teclea la secuencia 6 Enter 8 Enter
*
, y se obtiene el resultado al oprimir el
mencionado operador para la multiplicacin.
La Notacin Posfijo se emplea para definir expresiones en las que no exista
ambigedad en la interpretacin sintctica, an sin el empleo de parntesis a diferencia de la
infija. Por ejemplo, en esta ltima nomenclatura, la expresin a-b-c puede tener dos
diferentes formas de interpretarse. Como somos occidentales, y leemos de izquierda a
derecha, nos parece natural que las operaciones se realicen de izquierda a derecha, es
decir, primero se resta a-b y luego a este resultado se le resta c. Pero ese es un
convencionalismo que la gente que no sabe mucho de matemticas no descubre tan
evidentemente, y menos si es un oriental de Japn o bien de Arabia, por ejemplo, donde se
lee de derecha a izquierda. Si se desea que la interpretacin sea la de restar primeramente
b-c, entonces s se deben emplear, definitivamente, los parntesis.
Curiosamente, en la notacin posfija, no se requieren los parntesis para nada. Las
dos interpretaciones posibles se pueden expresar sin que exista riesgo de confusin. En la
expresin a - b - c, si se desea que primero se realice la resta de la izquierda (a-b) se debe
expresar como a b - c -. Si, en cambio, se desea indicar que primero se realiza la resta de la
derecha (b-c) entonces se tiene a b c - -. Sin necesidad de emplear parntesis, una persona
que conoce la notacin, interpreta correctamente la sintaxis para evaluar la expresin
correctamente, aunque sea japons o rabe. Dicha situacin no es de extraar, ya que
desde el inciso b) se haba deducido que la Gramtica era unvoca y no ambigua.
Como se vio hace un par de pginas en este documento, la Gramtica que s es
ambigua es la infija, misma que es la que usamos de manera habitual.
En caso de que el lector no entienda bien lo anteriormente expuesto, le conviene
consultar ms informacin sobre esta notacin llamada posfija o polaca inversa.
La caracterizacin resulta ms fcil al entender lo expuesto anteriormente. Sin haber
analizado la utilidad, resultara complicado el obtener una expresin regular para definir la
respuesta. An ahora, parece ser que lo ms conveniente ser caracterizar en Lenguaje
natural y no en formal, y basados en nuestro conocimiento sobre la notacin posfija, ms que
analizando las reglas gramaticales.
Las cadenas del Lenguaje producido, tienen las siguientes caractersticas:
Inician con dos operandos al menos (las a) y terminan con operador (+ *), excepto
la cadena a.
Si contienen n operadores, entonces contendrn n+1 operandos.
Todo posible prefijo de las mencionadas cadenas obtenidas en este Lenguaje,
excluyendo a , contienen ms operandos que operadores.
Teora de Autmatas y Lenguajes Formales
Pgina 39


REGLAS DE LENGUAJES DE PROGRAMACIN PARA
OPERADORES ASOCIATIVOS POR DERECHA E IZQUIERDA
Los diversos operadores de los Lenguajes de programacin se jerarquizan por el orden de
aplicacin, cuando en una expresin aparecen varios de ellos; ese nivel de jerarqua se
enuncia en tablas de operadores que se incluyen en textos sobre la materia. Adems,
cuando en una sentencia aparece varias veces un mismo operador, o bien diferentes pero de
la misma jerarqua, se debe considerar la asociatividad; sto es, que siempre se deber
operar iniciando por el que se encuentra ms a la derecha o por el de ms a la izquierda,
segn sea el caso, y seguir ese orden.
En este caso se abordar el problema de disear las reglas de produccin correctas,
considerando la asociatividad. Se justificar por partes, desde el planteamiento de los
rboles correspondientes. Si no se disean las reglas en forma correcta, un compilador
diseado en base a ellas, realizar las operaciones en forma incorrecta, dando resultados
errneos al ejecutar un programa creado en ese Lenguaje.
Se tomarn como modelo dos tpicas operaciones mltiples vlidas en Lenguaje C, y
se disearn los rboles, tanto el de sintaxis como el de anlisis sintctico, para que la
asociatividad se realice correctamente; para simplificar el estudio, se considera un caso
simple donde slo aparece dos veces el operador. Este anlisis se aplicar de manera
similar para cualquier otra operacin vlida de un Lenguaje de programacin, que tendr que
corresponder a alguno de los dos casos.
Posteriormente, en un problema propuesto, se propondr un caso donde se deben
jerarquizar las operaciones con diferente nivel de prioridad en una misma expresin.

EJEMPLO DE ASOCIATIVIDAD POR LA IZQUIERDA
Tomemos como referencia una operacin mltiple en la que se presente la asociatividad por
la izquierda. Todas las dems operaciones con la misma asociatividad, siguen el mismo
esquema.

Reglas para sustraccin mltiple (ASOCIATIVA POR LA IZQUIERDA):
P = { <resta> ::= <resta> - <id> | <id>, <id> ::= a | b | c | ... }

Teora de Autmatas y Lenguajes Formales
Pgina 40


EJEMPLO DE ASOCIATIVIDAD POR LA DERECHA
Tomemos como referencia una operacin mltiple en la que se presente la asociatividad por
la derecha. Todas las dems operaciones con la misma asociatividad, siguen el mismo
esquema.

Reglas para asignacin mltiple (ASOCIATIVA POR LA DERECHA):
P = { <asigna> ::= <id> = <asigna> | <id>, <id> ::= a | b | c | ... }
Para ambos casos se realiza el diseo del rbol de sintaxis, posteriormente el de
anlisis sintctico y finalmente las composiciones obtenidas.

APLICACIN DE LOS ANALIZADORES DE LENGUAJES
A continuacin se muestra un diagrama de un potencial proyecto, en el que se podra dar
una aplicacin ms amplia a los temas de este captulo, aclarando que se le puede dar un
enfoque diverso, ya que no solamente los compiladores para un Lenguaje de programacin
contienen las etapas de anlisis que se han de mencionar ms adelante.
La aplicacin indicada podra ser, por ejemplo, una silla de ruedas activada por
comandos de voz; antes del nivel acstico superior se ubica un micrfono como receptor.
Cuando se recibe una entrada que no corresponde a una instruccin vlida, no es aceptada.


Teora de Autmatas y Lenguajes Formales
Pgina 41


TEORA DE COMPILADORES
Las Gramticas tipo 0 y 1 muestran un buen nmero de propiedades indecidibles. En las
primeras, por ejemplo, puede suceder que no se pueda determinar algortmicamente si una
cadena dada es producto de ella o no; es decir, no se podra saber si una Mquina de Turing
diseada para reconocer esas cadenas se detendr o no durante el transcurso de esa
computacin. En este texto no son considerados los captulos correspondientes a sus
Autmatas y el empleo de ambas Gramticas se considera espordicamente.
La Teora de la Computabilidad facilita descubrir muchas propiedades de los
Lenguajes y sus reconocedores, y ha permitido tambin el diseo de los Lenguajes de
programacin y de sus correspondientes Autmatas encargados de reconocerlos y
traducirlos a expresiones ms simples: los analizadores de los compiladores.
Para disear las etapas de anlisis de un compilador, es necesario saber disear e
implementar los Autmatas de este curso, ya que el analizador lxico es un Autmata Finito y
los analizadores sintctico y semntico son diseados en base a Autmatas de Pila.
La Gramtica que describe la sintaxis de los Lenguajes de programacin es Libre de
Contexto. As mismo, el analizador lexicogrfico de un compilador es un Autmata Finito,
porque la Gramtica que se emplea en la definicin lxica de un Lenguaje como C, C#, Java,
o Fortran es Regular. Se puede disear una Gramtica de ese tipo que mostrara como se
pueden obtener los nombres de los componentes lxicos para alguno de esos Lenguajes,
con excepcin de las palabras reservadas, mismas que se analizan por otro mecanismo.
El conocimiento sobre los conceptos tericos de los Lenguajes Formales se remonta a
mediados del siglo XX, antes de que se desarrollaran los modernos Lenguajes de
programacin.
Como dato interesante, se puede comentar que el primer compilador de Fortran
requiri para su implantacin de 18 aos-hombre de trabajo en grupo. Con las nuevas
tcnicas, estudiadas en este curso, un compilador de calidad aceptable se puede disear en
un curso de un semestre.
No es posible disear las etapas de anlisis de un compilador sin el conocimiento de
los temas estudiados en este curso. Precisamente, el curso de Teora de la Computacin es
prerrequisito para cursar la materia de Compiladores.
En la siguiente figura se muestran las etapas de un compilador, consideradas por
Alfred V. Aho en su texto sobre esta materia.



Teora de Autmatas y Lenguajes Formales
Pgina 42




TOKEN O COMPONENTE LXICO: Es cualquiera de los smbolos terminales que se
manejan en la construccin de sentencias de un programa en un Lenguaje de alto nivel. Se
define como un par ordenado:
Token = ( Tipo, Valor ).

EJEMPLO:
Sea discrim = b * b - 4 * a * c ; if ( discrim > 0 ). Determinar los tokens de este fragmento
de programa en Lenguaje C.
(Identificador, discrim) (operador, =) (identificador, b)
(operador, *) (operador, -) (constante, 4)
(identificador, a) (identificador, c) (separador, ;)
(palabra reservada, if) (agrupacin izq., () (op. relacin, >)
(constante, 0) (agrupacin der., )) ... ...
...
Teora de Autmatas y Lenguajes Formales
Pgina 43


CASO DE ESTUDIO
Hacer un anlisis de la lnea de cdigo que forma parte de un programa, expresada como
tiempo = minutos + segundos / 60, y explicar cmo se va procesando en cada una de las
etapas de un compilador. Enmarcada se ir mostrando la transformacin que va sufriendo la
cadena de entrada al ir pasando por cada etapa de compilacin.

ANALIZADOR LXICO
Funcin: Comprobar la correcta construccin de cada uno de los tokens. A ciertos
componentes lxicos, como los identificadores, se les introduce en la tabla de smbolos, si es
que no estn ya incluidos.
Errores tpicos:
Identificadores mal estructurados: 4AC, aga@quantum, yo.tu, posicin, etc.
Constantes mal estructuradas: +-4.6789, 6900-, 90+25, etc.
Operadores mal estructurados: := , =>, <>, etc. // todos ellos en C
Palabras reservadas mal estructuradas: PRINTF, print, suitch, etc.


ANALIZADOR SINTCTICO
Funcin: Comprobar el correcto acomodo de los tokens dentro del cdigo. En esta etapa se
genera el rbol sintctico de la expresin.
Errores tpicos:
Parntesis mal anidados: ( ( ) ( ( ) , ( ) ) ( ( ) ), ( ) ( ( ) ) ) ( ( ), etc.
Expresiones incorrectas, tales como: a + b = c, a + b * - c , etc.


Teora de Autmatas y Lenguajes Formales
Pgina 44


ANALIZADOR SEMNTICO
Funcin: Evala el programa fuente para tratar de encontrar errores en los tipos de datos
que se emplean y rene informacin sobre los mismos. Si fuera necesario, hace un ajuste de
los mismos, siempre que no afecte al algoritmo en sus resultados.
Errores tpicos:
Los indicados con el mensaje Type mismatch.
Cuando se usa una variable real como argumento de un for, o como subndice de una
matriz.
Si se suman matrices bidimensionales con vectores que son unidimensionales.
Si en la instruccin alternativa mltiple (como switch) un mismo valor de la constante
corresponde a dos rangos diferentes.


GENERADOR DE CDIGO INTERMEDIO
Funcin: Algunos compiladores producen una representacin intermedia explcita del
programa fuente que se puede considerar como un programa para una mquina abstracta.
Se propone como Lenguaje el llamado cdigo de tres direcciones, en el que cada instruccin
tiene como mximo tres operandos (considerando inclusive la asignacin).

temp1 := enteroareal(60)
temp2 := id3 / temp1
temp3 := id2 + temp2
id1 := temp3

OPTIMIZADOR DE CDIGO
Funcin: Sirve para mejorar el cdigo intermedio, de modo que se obtenga un cdigo de
mquina ms rpido de ejecutar. Existe mucha variacin en la magnitud de la optimizacin
que realizan los distintos compiladores, pudiendo suceder que algunas optimizaciones
resultan triviales. Es importante que el diseador especifique qu entiende por este trmino.
Teora de Autmatas y Lenguajes Formales
Pgina 45


Considrese el siguiente ejemplo donde se compara cmo se tienen dos lneas de
cdigo, antes y despus de la optimizacin. En este segundo caso se ahorra una operacin
de multiplicacin:
Antes de optimizar: Despus de optimizar:
... ...
temp4 := id8 * temp2 temp4 := id8 * temp2
... ...
temp6 := id8 * temp2 temp6 := temp4
... ...
Para el caso de estudio:
temp1 := id3 / 60.0
id1 := id2 + temp1

GENERADOR DE CDIGO
Funcin: Produce el cdigo objeto, que por lo general consiste en cdigo relocalizable o
cdigo ensamblador. Las posiciones de memoria se seleccionan para cada una de las
variables usadas por el programa; despus, cada una de las instrucciones intermedias se
traduce a una secuencia de instrucciones de mquina que ejecuta la misma tarea. Un
aspecto decisivo es la asignacin de variables a registros.

destino, origen
MOVF Bx, id3
DIVF Bx, #60.0
MOVF Ax, id2
ADDF Ax, Bx
MOVF id1, Ax

Se recomienda al estudiante que consulte mayor informacin sobre el tema de diseo
de las etapas de anlisis de un compilador.






Teora de Autmatas y Lenguajes Formales
Pgina 46




CAPTULO 3
MQUINAS DE ESTADO FINITO

DEFINICIN FORMAL
Es un Modelo abstracto de una mquina con memoria interna primitiva muy bsica, que se
representa como M y que consiste en:
a) Un conjunto finito I de smbolos de entrada.
b) Un conjunto finito O de smbolos de salida.
c) Un conjunto finito S de estados.
d) Una funcin estado siguiente f de S X I en S.
e) Una funcin salida g de S X I en O.
f) Un estado inicial o
o
, incluido en S.
Se expresa con una descripcin formal con la 6-tupla M = ( I , O , S , f, g, o
0
).
En este caso, los smbolos de entrada y salida no deben ser necesariamente
diferentes, sino ms bien segn sea requerido en la especificacin del diseo. Ntese que se
trata de smbolos, como los que se emplearon en los captulos anteriores.

DESCRIPCIN DE LA MQUINA DE ESTADO FINITO
Se trata de un modelo matemtico, representado con recursos formales (que se
especificarn posteriormente) y que puede emplearse para representar o simular el
funcionamiento de un sistema real, que puede ser electrnico o computacional o de otro tipo.
sto es muy til, ya que posteriormente al diseo formal, se puede implementar en forma
sencilla por medio de un programa escrito en cualquier Lenguaje de programacin.
Los sistemas que se pueden representar por medio de este modelo matemtico
contienen una nica entrada y una sola salida, y son todos aquellos en los que no basta con
conocer el valor de la entrada para conocer la salida. En este caso, existe un parmetro muy
importante, llamado estado actual del sistema, y que en combinacin con la entrada, ambos
s determinan una salida bien definida.
En una Mquina de Estado Finito, ocurre lo que se conoce como una Transicin, una
accin que consta de tres partes. Consiste en que al llegar un smbolo de entrada, el modelo
responda primero con la produccin de un smbolo en la salida y posteriormente (pero de
manera inmediata) exista un cambio a un nuevo estado que podra ser el mismo. Dicha
transicin es la unidad de operacin en una Mquina de Estado Finito.
Es muy importante que primero se produzca la salida, antes del cambio de
estado.
Teora de Autmatas y Lenguajes Formales
Pgina 47


En este modelo se presentan dos funciones, ambas de las mismas dos variables, de
las cuales una ser llamada f y la otra g:
Smbolo de salida = f (Estado actual, Smbolo de entrada) = g // Funcin g.
Estado siguiente = f (Estado actual, Smbolo de entrada) = f // Funcin f.
Veamos un ejemplo, como si la Mquina fuera una "caja negra":


En la Mquina de la figura anterior supondremos, para ejemplificar, que si la entrada
es una a, y el estado actual fuese B, la salida sera un 0. Sin embargo, si el estado actual
fuese D, por ejemplo, la salida podra ser 2, an con la misma entrada a.
Se recalca que se emplea este modelo para SIMULAR todos aquellos sistemas
en los que la salida no es funcin exclusiva de la entrada, sino tambin de un estado o
situacin actual implcita en el mismo.

EJEMPLOS DE APLICACIONES DE MQUINAS DE ESTADO FINITO:
1 Mquina para venta de refrescos.
Ya que el estado actual (cantidad de dinero que se ha depositado en ella) junto con la
entrada actual (la moneda que se est depositando en un cierto momento) determinan la
salida que el aparato entrega (nada, cambio, refresco, refresco y cambio). La misma moneda
produce diferentes salidas.
2 Cajero automtico.
En este caso la entrada (tarjeta, NIP, botones en el tablero) debe combinarse con una
correcta serie de transiciones por los estados (espera usuario, espera NIP, espera
requisicin de servicio, etc.) para que se pueda obtener la salida deseada (billetes,
impresiones de estado de cuenta, etc.). La entrada "solicito $100" en el estado "espera NIP"
no produce el efectivo requerido.
3 Circuitos secuenciales digitales.
Pues en los circuitos de este tipo es necesario conocer el potencial o voltaje que guardan
ciertos puntos dentro de los mismos (es decir, los estados) para que en combinacin con los
valores de los bits de entrada, se conozcan los de salida. En un simple flip-flop, se requiere
de conocer el estado del mismo para saber qu salida presenta.
4 Juegos de combate.
Al simular una pelea en un juego de video, se debe considerar que las entradas (golpes,
agresiones, recuperaciones y otros ms) en combinacin con el estado (nivel de energa del
peleador) determinan el efecto que se manifestar como salida (tambalearse, caerse,
sangrar, ser noqueado, etc.).
Teora de Autmatas y Lenguajes Formales
Pgina 48


EJEMPLO:
Representar la Mquina de Estado Finito de la siguiente descripcin formal por conjuntos,
por medio de un diagrama de transicin y por una tabla de transicin.
I = { a, b } O = { x, y, z } S = { q
0
, q
1
, q
2
} o
0
= { q
0
}
f = { f ( q
0
, a ) = q
1
, f ( q
0
, b ) = q
2
,
f ( q
1
, a ) = q
2
, f ( q
1
, b ) = q
1
,
f ( q
2
, a ) = q
0
, f ( q
2
, b ) = q
1
}
g = { g ( q
0
, a ) = x, g ( q
0
, b ) = y,
g ( q
1
, a ) = x, g ( q
1
, b ) = z,
g ( q
2
, a ) = z, g ( q
2
, b ) = y }
Las funciones f y g deben ser especificadas para cada combinacin de cualquier
smbolo de entrada con cada estado actual posible.
Es muy comn denominar a los estados con una q y un subndice, considerando que
q
0
sera el estado inicial, aunque este criterio es mas bien una costumbre y no una regla.

DIAGRAMA DE TRANSICIN DE UNA MQUINA DE ESTADO FINITO
Es un grafo dirigido G, en donde los nodos son los estados; el estado inicial se seala con
una flecha gruesa sin origen. Si se parte del estado q
m
y una entrada i proporciona una
salida o, y se cambia al estado q
n
, se traza un arco dirigido de q
m
a q
n
y se marca con una
ponderacin o peso como i / o.
Para este ejemplo se tiene el siguiente diagrama de transicin:

Esta descripcin grfica es muy til, ya que permite observar fcilmente las
transiciones que se presentan en la Mquina. Considrese el siguiente anlisis, donde se
hace un recorrido del digrafo y en donde cada columna representa una transicin:
Cadena de entrada: S
in
= a b b a a a a b
Cadena de salida: S
out
= x z z x z x x y
Estados recorridos: q
0
q
1
q
1
q
1
q
2
q
0
q
1
q
2
q
1

Teora de Autmatas y Lenguajes Formales
Pgina 49


Una ventaja significativa del diagrama de transicin es que el comportamiento de la
Mquina de Estado Finito se puede analizar en una forma sumamente "amigable" y sencilla.
Por cada smbolo de entrada, hay un smbolo de salida producido.

TABLA DE TRANSICIN DE LA MQUINA DE ESTADO FINITO
Se hace la tabla, en la cual se consideran todas las combinaciones de S X I colocando en la
columna izquierda los estados y en el rengln superior las entradas. En la interseccin de los
valores particulares de esos dos valores, se coloca el que ser el siguiente estado y el
smbolo de salida, separados por una coma; en ocasiones, se separan los valores de las
funciones f y g en tablas contiguas separadas. Se indica de manera especial el estado inicial
con una flecha gruesa .
A continuacin se muestran los dos formatos empleados para la tabla de transicin.


Las dos variaciones anteriores representan la tabla de transicin; el alumno deber
elegir la que le resulte ms adecuada. Esta representacin es necesaria para la
implementacin del software que corresponde a la Mquina, ya que resulta obvio que es ms
factible programar un arreglo, que un grfico.
Adems es imprescindible en los casos en los que se cuenta con muchos estados y
muchas entradas, y se corre el riesgo de que un diagrama de transicin se convierta en una
autntica "telaraa" por tantos trazos.
Teora de Autmatas y Lenguajes Formales
Pgina 50


Dada una cualquiera de las tres representaciones posibles de M debe ser
posible, sin ambigedades, de obtenerse las otras dos.

EJEMPLO:
Disear el diagrama de transicin y los seis conjuntos que definen formalmente a la Mquina
de Estado Finito de la siguiente tabla de transicin:


Primeramente se tiene el siguiente Diagrama de transicin equivalente:


Por otra parte se tiene que M = ( I, O, S, f , g, o
0
), en donde los conjuntos contienen:
I = { a, b, c } O = { 0, 1 } S = { A, B, C, D } o
0
= { B }
f = { f ( A, a ) = A, f ( A, b ) = C, f ( A, c ) = C, f ( B, a ) = D, f ( B, b ) = A, f ( B, c ) = C,
f ( C, a ) = B, f ( C, b ) = C, f ( C, c ) = A, f ( D, a ) = D, f ( D, b ) = C, f ( D, c ) = A }
Teora de Autmatas y Lenguajes Formales
Pgina 51


g = { g( A, a ) = 0, g ( A, b ) = 1, g ( A, c ) = 0, g ( B, a ) = 1, g ( B, b ) = 0, g ( B, c ) = 1,
g ( C, a ) = 0, g ( C, b ) = 1, g ( C, c ) = 0, g ( D, a ) = 0, g ( D, b ) = 0, g ( D, c ) = 1 }
En resumen: Es muy comn denominar a los estados con una q y un subndice, pero
no es una regla, como se acaba de observar. Tampoco es obligado que el primer estado en
orden de aparicin sea el inicial. Los smbolos de entrada y los de salida no tienen
necesariamente una relacin entre ellos y pueden ser iguales o diferentes entre s.

EJEMPLO:
Disear una Mquina de Estado Finito, considerando como dato de entrada posible cualquier
cadena de bits vlida. Si el dato de entrada contiene una cantidad par de 1 la salida es 1; 0
en caso contrario.
En este caso, emplearemos la notacin ms amigable, que es la del diagrama de
transicin. Consideremos que los bits de la cadena de entrada van llegando uno por uno (en
serie) ya que la Mquina de Estado Finito contiene una nica entrada y no recibe varios bits
a la vez.
Es importante definir los estados, como punto de partida; en este caso existen dos
posibles: o la cantidad de unos es par o dicha cantidad es impar.
La cantidad de ceros en la entrada es totalmente intrascendente, por lo que no
hay cambio de estado alguno; stos se traducen en lazos en el diagrama, sin importar
cul es el estado actual.
Sin embargo, la cantidad de unos en la entrada, s es extremadamente
importante, ya que son los que se nos pide que cumplan con ser una cantidad par. Es
evidente que en estos casos s debera de haber cambio de estado actual, de un
estado al otro.
Llamemos q
0
al estado en el cual la cantidad de unos es par, y q
1
al estado donde es
impar dicha cantidad. Al inicio tenemos cero unos, y siendo cero un nmero par, definamos a
q
0
como el estado inicial.


Al iniciar el funcionamiento de la Mquina, la salida debe ser 1, ya que s se cumple la
condicin; mientras que no exista ningn 1, sigue estando en esa condicin. Cuando aparece
el uno, la salida se convierte en 0, y as se quedar hasta que vuelva a aparecer otro 1,
quedando la situacin igual que al principio (tener 0, 2, 4, 6, 8, ... unos, es equivalente, ya
que siempre se cumple con una cantidad par).
Finalmente, hay que observar cul es el bit de salida, cuando llega el ltimo bit de
entrada.

Teora de Autmatas y Lenguajes Formales
Pgina 52


EJEMPLO:
Disear una Mquina de Estado Finito que represente un sumador binario en serie.
Primeramente habr que considerar que la mencionada realizar una suma de
cadenas de bits, en la que stos se sumarn de dos en dos a la vez, uno del primer sumando
y el otro del segundo. La longitud de las dos cadenas a sumar es la misma para este ejemplo
y puede ser cualquier cantidad de bits. Un ser humano realiza la suma en serie cuando la
realiza sin calculadora, evaluando uno por uno, cada bit del resultado. Veamos un ejemplo de
una suma binaria en serie, como muestra:
1 1 1
1 0 0 1 0 0 1 0 + Ejemplo de una
1 0 1 0 0 1 1 1 suma binaria en serie
1 0 0 1 1 1 0 0 1
Ntese que al sumar dos bits, el bit resultado vara; por ejemplo al hacerlo con 0 + 0,
tenemos que da 0 (cuando no hay acarreo) 1 (cuando s hay un acarreo). El existir o no
acarreo representa un estado del sistema, que influye en el bit de salida.
De acuerdo al conocimiento, tanto de la operacin de la suma como de las Mquinas
de Estado Finito, se determinan los conjuntos:
I = { 00, 01, 10, 11 } O = { 0, 1 } S = { SA, CA } o
0
= { SA }
Recurdese que un smbolo de entrada se puede formar por ms de un caracter, por
lo que las entradas pueden expresarse con un par de caracteres, que representan los bits
que se estn sumando (por ejemplo 00 significa 0 + 0). Este hecho permite que se puedan
tener Mquinas que representen sistemas en los que hay varias entradas, pero canalizadas
todas ellas como una sola. Si no fuese as, entonces tendramos que definir modelos de
Mquinas con varias entradas, lo cual sera un tanto complicado.
En este caso SA significa "Sin Acarreo" y CA es por "Con Acarreo". Cuando
empezamos a sumar lo hacemos desde un estado inicial sin acarreo. Cuando se suman dos
bits el resultado es un solo bit y si el resultado excede tal longitud, de todas formas se
escribe un solo bit y se pasa a un estado con acarreo.
Finalmente, resulta el siguiente diagrama de transicin para el sumador:


Es muy recomendable que el alumno, una vez que resuelva un problema, haga una
comprobacin del funcionamiento del modelo formal, para ver si funciona con diversos y muy
variados casos de prueba. He aqu la verificacin de la suma ya anteriormente evaluada,
ahora con el Diagrama de Transicin que se acaba de disear:
Teora de Autmatas y Lenguajes Formales
Pgina 53


cadena
in
= 0 1 1 1 0 1 0 0 1 0 0 1 0 0 1 1
cadena
out
= 1 0 0 1 1 1 0 0
SA SA CA CA SA SA SA SA CA
La versin previa de sumador tiene el inconveniente de que el bit ms significativo se
pierde si el resultado excede en un bit a la longitud de los sumandos. Lo anterior no es un
problema serio, ya que en algunos casos as sucede con el modelo real que estamos
emulando; por ejemplo, el chip de un circuito integrado sumador digital tiene como terminales
o pines para cada entrada, la misma cantidad que la de los pines donde se muestra la suma
de las dos cadenas de bits, mostrando el posible bit adicional ms significativo en el pin de
acarreo (que no es propiamente una terminal de dato del resultado en el sumador). El circuito
que realiza la funcin de sumar dos cadenas de cuatro bits es el 7483 en tecnologa TTL.
Como comprobacin del aprendizaje se pide al alumno proponer una variante al
sumador anterior tal que el resultado lo entregue ntegro. Adems se puede modificar el
diseo para obtener una Mquina de Estado Finito en la que se puedan sumar cadenas de
longitudes diferentes. Considerar como posibles entradas 0 + smbolo vaco, 1 + smbolo
vaco, smbolo vaco + 0, smbolo vaco + 1.
Sin embargo, no existe una Mquina de Estado Finito que pueda realizar la
multiplicacin binaria en serie. Por qu?

EJEMPLO: CONTADOR SNCRONO DE 3 BITS.
Disear un contador sncrono de 3 bits con flip flops tipo D. En este caso es adecuado utilizar
una Mquina de Estado Finito (porque la salida no es un simple bit, sino tres). De hecho, se
deben evaluar los valores que debe haber en las entradas de cada uno de los flip flop tipo D
que se van a emplear para obtener el conteo requerido.


Si se evala la expresin lgica de las entradas a los tres flip-flops, se podrn obtener,
combinando las tres salidas, los valores binarios deseados. Para mayor claridad en los
conceptos referidos en este problema, apoyarse de un texto sobre Sistemas Digitales
Secuenciales.
El Diagrama y la Tabla de Transicin obtenidos para las especificaciones de diseo de
dicho contador de tres bits seran los siguientes:
Teora de Autmatas y Lenguajes Formales
Pgina 54





A continuacin se muestra la Tabla de Transicin de una Mquina de Estado Finito,
conocida en electrnica como tabla de verdad.


Ntese que la funcin siguiente estado indica el prximo valor numrico en el conteo y
la funcin salida muestra precisamente el nmero que se representa. La salida y el siguiente
estado no se consideran cuando la entrada (que sera la seal del reloj) es 0, porque stos
no ocasionan accin alguna en el circuito
Los diagramas de Karnaugh para determinar las entradas de los 3 flip flops, deducidas
de la tabla anterior, son:
Teora de Autmatas y Lenguajes Formales
Pgina 55








El circuito contador de tres bits se obtiene a partir de las ecuaciones para las entradas
en los tres flip flops: D
1
, D
2
y D
3
, recientemente obtenidas. Cada uno de los tres flip-flops
debe recibir la entrada segn la expresin lgica correspondiente. Queda como trabajo para
el estudiante disear el diagrama electrnico resultante, a partir de las tres ecuaciones.
Ntese que las Tablas de Transicin son ampliamente utilizadas en estas aplicaciones
en cursos de electrnica digital secuencial, aunque sin haberlas justificado desde un punto
de vista formal. Para obtener mayor informacin de estas aplicaciones consltense libros
sobre la materia.

Teora de Autmatas y Lenguajes Formales
Pgina 56


CONCEPTOS ADICIONALES
Existen otros diferentes tipos de Mquinas de Estado Finito para modelar mquinas de
cmputo, que son llamadas Mquinas secuenciales. Hay un tipo tradicional en el que las
salidas corresponden a transiciones entre estados y estas representaciones son conocidas
como Mquinas de Mealy, ya que fueron primeramente estudiadas por George H. Mealy en
1955. Adicionalmente existe otro tipo importante de Mquina de Estado Finito con salida,
donde esta ltima es determinada slo por el estado y se la conoce como Mquina de
Moore, ya que Edward Forrest Moore introdujo este tipo de Mquina en 1956. Se observa
una estrecha relacin de las Mquinas de Mealy con las de Estado Finito y de la de Moore
con los Autmatas de Estado Finito que se estudiarn el siguiente captulo. Una Mquina de
Moore puede convertirse en una de Mealy equivalente aadiendo ms estados y haciendo
las modificaciones necesarias.
Queda para el estudiante investigar ms sobre estas dos variantes de Mquinas de
Estado Finito, muy usuales en el rea de aplicacin de los Circuitos Digitales Secuenciales.
Un proyecto final de este curso consistir en disear e implementar un programa que
represente una aplicacin del modelo de una Mquina de Estado Finito en un caso prctico
que generalmente tiene relacin con una simulacin.
Hay una relacin muy estrecha entre Mquinas y Autmatas de Estado Finito. De
hecho, stos ltimos son un subconjunto de las primeras. La forma como se relacionan se
estudiar en el siguiente captulo, donde se tratarn con detalle sus caractersticas.
Queda pendiente el empleo de las Mquinas de Estado Finito para representar
sistemas electrnicos, computacionales o, en general, del mundo real. En el siguiente
captulo se analizarn en forma detallada ciertos casos de aplicacin, como la mquina
despachadora de refrescos, diseada cmo Mquina y como Autmata de Estado
Finito.















Teora de Autmatas y Lenguajes Formales
Pgina 57




CAPTULO 4
AUTMATAS DE ESTADO FINITO

CONCEPTOS GENERALES
Un Autmata Finito, tambin llamado Autmata de Estado Finito, es toda Mquina de Estado
Finito en la que el conjunto de smbolos de salida es exclusivamente O = { 0, 1 } y dnde el
estado actual determina cul de ellos fue el ltimo dato de salida. Aquellos estados para los
cuales el ltimo dato de salida fue 1, se denominan estados de aceptacin. En todo
Autmata Finito, representado como A, debe haber cuando menos un estado de aceptacin
y por sentido comn se recomienda que no todos lo sean.
En forma grfica se muestra la forma como se identifican los dos tipos de estado que
se pueden presentar en este Autmata. El caracter ? significa que no importa cul es el
smbolo en la entrada.


El motivo por el que el conjunto O debe ser { 0, 1 } resulta razonable debido a que se
los utiliza en la computacin y en la electrnica digital, donde se opera con el sistema binario
y que los smbolos resultan ser adecuados como indicacin de aceptacin o rechazo.
La segunda caracterstica surge de la necesidad prctica de saber cul fue el ltimo bit
de la cadena de salida, sabiendo en qu estado se termina el recorrido en el diagrama de
transicin para una cadena de entrada, y sin importar los estados intermedios que se van
obteniendo. Si se conoce el estado final, entonces tambin se deber conocer cul fue el
ltimo bit de la cadena de salida.
En sntesis, es fcil notar que en muchos casos, lo importante no son las salidas
momentneas del modelo, sino nicamente el ltimo bit de salida. Lo anterior es muy
importante, ya que se presenta un 0 en la salida cuando la cadena de entrada no cumple un
enunciado, puesto como especificacin de diseo del Autmata; por otro lado se presenta
el 1 en la salida cuando s lo cumple, tal y como se observa en el reconocedor de
cantidades pares de unos que se present en el captulo anterior.
Teora de Autmatas y Lenguajes Formales
Pgina 58


Se podra decir que un Autmata Finito es un aceptador o rechazador de
cadenas.
Desde el inicio del captulo anterior se afirm que uno de estos modelos tena una
memoria interna primitiva. Esa afirmacin se justifica en el hecho de que al operar, ya sea
una Mquina de Estado Finito o un Autmata Finito se "sabe" con toda certeza cul es su
estado actual, pero "no recuerda" cmo lleg al mismo. Como se ver en un ejemplo a
resolver, esa situacin impide que pueda reconocer cadenas con la misma cantidad de
diferentes smbolos, tales como los parntesis cuando se anidan correctamente o el
Lenguaje L = { 0
n
1
n
| n c }. Esa limitacin es muy importante en aplicaciones
computacionales.

EJEMPLO:
Trazar el diagrama de transicin de la Mquina de Estado Finito definida en la tabla; en caso
de que sea tambin un Autmata Finito, trazar su diagrama correspondiente en la notacin
respectiva; determinar el conjunto de estados de aceptacin.




Los Estados de aceptacin son q
0
y q
2
mientras que el Estado de no aceptacin es q
1
.
Para distinguirlos, se remarca con un crculo doble cada estado de aceptacin al
representarlo ya como Autmata Finito. Obsrvese que no es necesario describir los bits de
salida en cada arco, ya que tales smbolos son evidentemente deducibles.
Teora de Autmatas y Lenguajes Formales
Pgina 59


El anterior es un Autmata de Estado Finito en razn de que en todos los arcos que
llegan a los estados de aceptacin se tiene la indicacin de bit de salida en 1, y por otro lado
se tiene un 0 en los de no aceptacin.
En el Autmata podremos analizar qu es lo que sucede cuando llega una cadena de
entrada, tal como yxxzwyxw, y en cuyo caso podremos especificar la secuencia de estados
por los que pasa el Autmata, de la siguiente forma:
cadena
in
= y x x z w y x w // cadena de entrada.
q
0
q
0
q
2
q
1
q
0
q
1
q
1
q
0
q
1
// estados recorridos.
Si un Autmata de Estado Finito recibe como dato de entrada una cadena o arreglo,
se puede concluir el recorrido en el modelo formal o en un estado de aceptacin o en uno de
no aceptacin; la clase de estado en el cual se termina, establece cundo una cadena es
aceptada por el Autmata. Como el recorrido finaliz en este caso en un estado de no
aceptacin (q
1
), la cadena y x x z w y x w se considera que no es aceptada por el Autmata;
esto significa que no cumple con las especificaciones que se dieron en el diseo.
En este caso, al analizar las transiciones no se consideran los smbolos de salida. Una
transicin de un Autmata Finito se considera que consta de dos etapas nicamente: ingresa
un smbolo de entrada, y hay un cambio de estado. La tabla de transicin, ya simplificada
para el reconocedor, quedara:


Representacin en la que se observa que con una flecha se apunta el estado inicial, y
que se encierra en un crculo cada estado de aceptacin. No se incluye la indicacin del
smbolo de salida, ya que tal valor se deduce segn el tipo de estado al que se accede.

MUY IMPORTANTE: El Autmata de Estado Finito se emplea en vez de la Mquina,
cuando no es importante considerar las diversas salidas obtenidas al ir recibiendo los
smbolos de la cadena de entrada; solamente importa conocer el ltimo bit de salida,
para verificar el cumplimiento o no de una caracterstica especfica. Tambin es
fundamental la existencia de estados que influyen en la operacin del modelo.

El alumno no debe inventar un modelo en el que aparezcan tanto estados de
aceptacin como salidas en las transiciones, ya que se distinguen bien los dos casos de
modelos formales y no se pueden mezclar elementos de ambos.

Teora de Autmatas y Lenguajes Formales
Pgina 60


DEFINICIN FORMAL DE AUTMATA DE ESTADO FINITO
UN AUTMATA DE ESTADO FINITO CONSISTE EN:
a) Un conjunto finito I de smbolos de entrada.
b) Un conjunto finito S de estados.
c) Una funcin estado siguiente f de S x I en S.
d) Un subconjunto A _ S de estados de aceptacin.
e) Un estado inicial o
o
e S.
Se expresa en notacin de conjuntos con la 5-tupla: A = ( I , S , f , A , o
0
). A sta se
la llamar la descripcin formal del Autmata Finito.
Para el Autmata expresado en el ejemplo anterior, se tiene:
I = { w, x, y, z } S = { q
0
, q
1
, q
2
} A = { q
0
, q
2
} o
o
= { q
0
}
f = { f ( q
0
, w ) = q
1
, f ( q
0
, x ) = q
2
, f ( q
0
, y ) = q
0
, f ( q
0
, z ) = q
1
, f ( q
1
, w ) = q
1
, f ( q
1
, x ) = q
0
,
f ( q
1
, y ) = q
1
, f ( q
1
, z ) = q
0
, f ( q
2
, w ) = q
2
, f ( q
2
, x ) = q
1
, f ( q
2
, y ) = q
1
, f ( q
2
, z ) = q
0
}.
Ntese que en las tres representaciones de un Autmata Finito, el especificar el
conjunto de los estados de aceptacin A, hace innecesario definir la funcin g de una
Mquina, por obviedad; las transiciones que llevan a un estado de aceptacin implicaran un
1 en la salida, por ejemplo. Por lo mismo, el conjunto de smbolos de salida (0 y 1) se omite
tambin.

EJEMPLO:
Disear un Autmata Finito que acepte nicamente los arreglos con I = { a, b } pero que no
contengan a, lo que tambin se podra expresar como las cadenas de L = { b
n
| n e
0
}.
Es un caso algo extrao, ya que nos podremos preguntar, por qu si la entrada a no
se debe presentar en ninguna cadena, entonces para qu la definimos como posible
entrada?
Este caso debe corresponder a una situacin en la que el Autmata servira para
representar un dispositivo de control, instalado en una empresa para monitorear fallos en
distintas partes de las instalaciones. A dicho sistema llegan seales provenientes de
sensores ubicados en sitios estratgicos; el llegar una a, podra significar avera, mientras
que la b significara bien. Si no llega ninguna de las dos, entonces no habra problema.
Esa podra ser la razn por la que es posible recibir una a, aunque tal situacin sera
no aceptada.
El diseo del Autmata requerido quedara como sigue:

Teora de Autmatas y Lenguajes Formales
Pgina 61


Cuando se inicializa el Autmata se acepta la palabra, ya que la cadena vaca no
contiene a; evidentemente, el estado inicial es de aceptacin. Inclusive, mientras se sigan
recibiendo las b en la entrada, se sigue aceptando la cadena.
La situacin cambia cuando estando en el estado q
0
se recibe una a. En ese caso, ya
no puede ser aceptada ninguna cadena, sin importar cul es el resto de la misma. Por eso,
se pasa al estado q
1
, en el cual, sin importar lo que llegue, ya no puede ser aceptada la
entrada. Dicho estado puede ser omitido en el diagrama de transicin, si se desea.

CRITERIOS IMPORTANTES EN EL DISEO DE UN AUTMATA FINITO
Verificar si al querer representar el sistema real con este modelo, se puede
(se identifican estados?) y se debe (no sera mejor con una Mquina de Estados?).
Al inicio del diseo de este modelo, debemos preguntarnos: la cadena vaca
debe ser aceptada? Si la respuesta es afirmativa, entonces el estado inicial debe ser
de aceptacin. No lo es, en caso contrario.
Cuando una entrada es trascendental, se tiene un cambio a un estado distinto
al actual; cuando una entrada, es intrascendente, se representa como un cambio al
mismo estado (grficamente, como un lazo).

EJEMPLO:
Construir una expresin regular que describa el Lenguaje aceptado por el siguiente
Autmata:


Para resolver este problema, se definen las posibles trayectorias que llevan desde el
estado inicial, a todos y cada uno de los estados de aceptacin, que en este caso son tres.
Para llegar a dos de ellos, hay uno solo de esos caminos, pero para llegar al tercero, existen
dos posibilidades, pasando por los dos estados mencionados anteriormente, obtenindose,
en total, cuatro de esas posibles trayectorias. Finalmente, se unen todas las respuestas
individuales.
De esa forma, se tiene que la respuesta sera: L = { ab
*
} { ba
*
} { ab
*
a } { ba
*
b }.

Teora de Autmatas y Lenguajes Formales
Pgina 62



EJEMPLO:
Cules de los Lenguajes descritos por las siguientes expresiones regulares para el Alfabeto
= { x, y, z } son infinitos?


En este caso, los Autmatas Finitos que aceptan Lenguajes infinitos, son los indicados
en los incisos a, b y d. Eso, por el simple hecho de tener lazos en su estructura.
Adems de ser esa una caracterstica para identificar los Autmatas que aceptan este
tipo de Lenguajes, tambin ocurre en los casos en los que se observa en el diagrama la
presencia de circuitos, es decir, de caminos cerrados. Por tanto, si se invirtiera el sentido de
uno solo de los dos arcos que se dirigen del estado inicial al siguiente estado en el modelo
del inciso c, ya no aceptara un Lenguaje Finito como ahora.

AUTMATAS EQUIVALENTES
Si dos Autmatas aceptan exactamente las mismas palabras, se dice que tales son
equivalentes. El conjunto I debe ser el mismo para ambos, mientras que o
0
y S pueden
variar y la funcin f necesariamente cambia entre ellos.
Es evidente que siempre es mejor hacer el diseo ms simple, ya que su
implementacin deber ser ms fcil y con menor riesgo de cometer errores al disearlo y
sobre todo al implementarlo. Queda para el estudiante proponer algunos ejemplos de
Autmatas equivalentes al resolver los problemas propuestos al final de este texto.

CONSIDERACIN IMPORTANTE PARA SIMPLIFICAR UN AUTMATA FINITO
Si en un Autmata Finito se tienen dos estados, siendo ambos o de aceptacin o de no
aceptacin, y las transiciones que salen de ambos se dirigen a los mismos estados
siguientes para cada una de las entradas (o si son equivalentes), entonces se pueden
reducir, quedando un nico estado en lugar de los dos estados originales.
En el caso del Autmata Finito que se muestra en la figura, se pueden simplificar q
i
y
q
j
como un nico estado, pero solamente si ambos son aceptacin o de no aceptacin.
Teora de Autmatas y Lenguajes Formales
Pgina 63




IMPLEMENTACIN DE UN AUTMATA FINITO
Los Autmatas de Estado Finito, al igual que las Mquinas, tienen la gran ventaja de
que SE PUEDEN PROGRAMAR, con lo que se transforman en una herramienta muy
valiosa para todo el profesional que intenta simular el funcionamiento de un sistema
real, inicialmente representado con este modelo matemtico.

EJEMPLO:
Disear e implementar por medio de un Autmata Finito, un analizador que acepte las
cadenas que representan los nombres de identificadores vlidos de un Lenguaje de
programacin tpico como C o Java. Este diseo es un pequeo subconjunto de un
analizador lxico.
Se tomar como base el criterio de que un identificador inicia con una letra o un guin
bajo (grupo que se denominar simplemente como letra por comodidad) y despus puede
llevar dgitos y/o letras y/o guiones bajos, pero nunca caracteres diferentes a estos tipos.
Se definen las clases para los smbolos de entrada que se consideran en los arcos
como tipos de datos para simplificar la representacin del diagrama:
dgito: 0, 1, 2, ..., 9.
letra: A, B, C, ... , Z, a, b, c, ..., z, _ . // letras, adems de _.
otro: +, -, @, ;, sp, ~, $, %, ... // los cuales no son aceptados.
Las transiciones se realizan una por cada carcter de la cadena a evaluar.

Teora de Autmatas y Lenguajes Formales
Pgina 64


Al dibujar el diagrama de transicin se debe tomar en cuenta que por conveniencia, los
arcos que corresponderan a situaciones de no aceptacin se omiten, quedando como
entendido que iran todos a un estado de rechazo (como q
2
) del que no se podra salir. En
realidad el estado q
2
se puede omitir debido a que llegando a l, de todos modos la cadena
no va a ser aceptada, pero se incluye, para que con tres estados el ejemplo sea ms
demostrativo.
La primera versin de la implementacin puede ser en base a la siguiente propuesta
de un pseudocdigo:

Estado 0
LEER siguiente smbolo de entrada
MIENTRAS no ( fin de cadena ) HACER
OPCIN ( Estado ) DE
0: SI ( Smbolo actual = letra )
ENTONCES ( Estado 1 )
SINO SI ( Smbolo actual = dgito )
ENTONCES ( Estado 2 )
SINO ( Error_rutina )
1: SI ( Smbolo actual = letra )
ENTONCES ( Estado 1 )
SINO SI ( Smbolo actual = dgito )
ENTONCES ( Estado 1 )
SINO ( Error_rutina )
2: Error_rutina
FINOPCIN
LEER Siguiente smbolo de entrada
FINMIENTRAS
SI ( Estado = 1 ) ENTONCES (Error_rutina)

Sin embargo, la opcin de diseo con anidamiento de instrucciones if, no debe
utilizarse para implementar un Autmata, pues en un caso en el que existan varios estados
con muchas entradas posibles, resultara en una instruccin alternativa mltiple (switch) con
un rango gigantesco como se podr notar y sera extremadamente difcil su mantenimiento.
Una segunda versin, mucho ms prctica, utiliza una tabla de transiciones en la que
se consulta cul ser el valor del siguiente estado. La gran ventaja de esta variante es que
para cambios en el diseo original del Autmata, las modificaciones se hacen en la tabla
solamente. A esta representacin se la denominar Autmata Matricial.
Teora de Autmatas y Lenguajes Formales
Pgina 65




El siguiente paso, consiste en traducir esta tabla a un formato de estructura de datos
bidimensional simple, por ejemplo un arreglo, para que pueda ser consultada por el programa
principal, que se menciona a continuacin.

Estado 0
REPETIR
LEER siguiente smbolo de entrada
OPCIN (smbolo) DE
letra: Entrada letra
dgito: Entrada dgito
FDC : Entrada FDC
Otro : Error_rutina
FINOPCIN
Estado Tabla ( Estado, Entrada )
SI ( Estado = error ) ENTONCES Error_rutina
HASTA ( Estado = aceptar ).

La transicin del Autmata Finito se determina en la sentencia marcada en negritas en
el algoritmo anterior, y que permite actualizar la variable que define el estado actual. Los
valores de la tabla de transicin se pueden incluir como parte del algoritmo en forma de un
arreglo bidimensional, como se ha referido anteriormente. Dicha estructura tendra tantos
renglones como estados resultaran en el modelo, y tantas columnas como tipos de datos
diferentes. Se recomienda que "aceptar" (\ ) y "error" (X) se vinculen con un entero cada uno,
para hacerlos homogneos con el resto del contenido de la tabla, mismo que puede ser
representado por el entero que indique el subndice de la q correspondiente.
El arreglo tendra los siguientes elementos: f(0, 0) = 1, f(0, 1) = 2, f(0, 2) = X, f(1, 0) =
1, f(1, 1) = 1, f(1, 2) = \, f(2, 0) = X, f(2 , 1) = X y f(2, 2) = X. Para fines prcticos se elimina la
fila correspondiente al estado q
2
debido a que no hay posible aceptacin de la cadena.
Teora de Autmatas y Lenguajes Formales
Pgina 66


Este es un pseudocdigo y por ello se le asignan valores tipo cadena a la variable
llamada Entrada, pero es evidente que sera mejor asignarle valores de tipo entero, segn
sea el tipo de smbolo de entrada.
En realidad se est haciendo la misma implementacin de software que corresponde a
un grafo dirigido, tema que se estudi en el curso de Matemticas Discretas.

EJEMPLO:
Disear e implementar por medio de un Autmata matricial, un analizador que
reconozca cadenas que representen tanto a los nmeros reales sin signo, como a los
exponenciales tambin sin signo.
Se hace el diseo del diagrama de transicin y se transforma en el formato de la tabla
de transicin equivalente tal y como se hizo en el ejemplo anterior.





Teora de Autmatas y Lenguajes Formales
Pgina 67


A la tabla anterior se le da un formato de arreglo bidimensional o alguna otra
estructura de datos de dos dimensiones (por ejemplo con varias listas). Enseguida se
implementa el Autmata de la siguiente forma:

Estado 0
REPETIR
LEER siguiente smbolo de entrada
OPCIN (smbolo) DE
0, ... , 9 : Entrada dgito
- : Entrada punto
E, e : Entrada letra E
+, - : Entrada signo
FDC : Entrada FDC
Otro : Error_rutina
FINOPCIN
Estado Tabla ( Estado, Entrada )
SI (Estado = error) ENTONCES (Error_rutina)
HASTA (Estado = Aceptar).

En este caso, la asignacin en negritas es la parte ms importante del algoritmo, y
consiste en accesar en la celda correspondiente del arreglo que representa la Tabla de
Transicin previamente diseada, para actualizar la variable del estado actual.
Sin embargo un compilador no debe aceptar nmeros con exponentes tan exagerados
como el de la cadena 2.34E-385261. Cmo se modificaran el diagrama y la tabla de
transicin para que el exponente tenga 1 2 dgitos solamente?
Una especificacin que no es tomada en cuenta en este diseo es el rango de los
nmeros que se estn considerando, pues hay que tomar en cuenta que un nmero flotante
o exponencial tiene un rango dentro del cual debe estar acotado.
Ntese que, en esencia, cualquier Autmata Finito se disea bajo el mismo formato
bsico. Lo nico que cambia de un caso a otro es el contenido del rango de la instruccin
Opcin, segn sean los smbolos que componen el Alfabeto de las cadenas que se deben
aceptar, y distribuidas segn sea su tipo. Inclusive, cuando los smbolos de entrada no se
pueden clasificar en grupos con una misma transicin para todos los casos de
entrada, no se requiere la instruccin Opcin en el algoritmo.
Cmo se modificara el algoritmo anterior para implementar una Mquina de Estado
Finito, considerando que en ella se deben actualizar no uno, sino dos parmetros (estado y
salida) y que en la transicin la que ocurre primero es la salida?
Teora de Autmatas y Lenguajes Formales
Pgina 68


Es obvio que se debern definir dos tablas o arreglos en el algoritmo, una para el
siguiente estado (como en el Autmata) y otra aparte para evaluar la salida. En el lugar
adecuado, antes de que cambie el estado actual, se deber insertar la sentencia:
Salida Tabla_g ( Estado, Entrada ).
Quedando la asignacin con Tabla_f (Estado, Entrada) para evaluar el cambio de estado.
La indicacin FDC significa un Fin De Cadena y se incluye como si fuese entrada,
pero solamente en la Tabla de Transicin. Su funcin es indicarle al programa que la cadena
ha sido introducida en su totalidad y que deseamos conocer el diagnstico correspondiente.
La clave para implementar Autmatas Finitos consiste en aprender esta estructura
bsica del programa en seudocdigo:

Estado 0
HACER
LEER siguiente smbolo de entrada
OPCIN (smbolo)
A, ..., Z, a, ..., z, _ : Entrada letra
0, ... , 9 : Entrada dgito
+, - : Entrada signo
. : Entrada punto
... ... // y as con todas las entradas, si es necesario.
FDC : Entrada FDC
Otro : Error_rutina
FINOPCIN
Estado Tabla ( Estado, Entrada )
SI (Estado = error) ENTONCES (Error_rutina)
HASTA (Estado = ACEPTAR)

Existen casos en los que hay que separar en partes una misma clase de smbolos de
entrada, como sucede por ejemplo con las letras; esto se debe a que en reconocedores de
ciertos tokens se emplean con diferente finalidad. Por ejemplo, la O se utiliza exclusivamente
en identificadores, pero la A se emplea adems en los nmeros hexadecimales, y por otro
lado est el caso de la E que se emplea aparte de los casos anteriormente referidos tambin
en los exponenciales.
Como parte de los criterios de evaluacin, el alumno deber desarrollar la
implementacin de algunos proyectos, que permitirn demostrar que tiene la habilidad de
poderlos programar. Los mismos se desarrollarn por equipos para que los estudiantes
adquieran la habilidad de trabajar eficientemente en grupos, misma que requiere desarrollar
para cuando egrese y se inserte en el campo laboral.
Teora de Autmatas y Lenguajes Formales
Pgina 69


Un proyecto que cada ciclo escolar se ha solicitado a los alumnos consiste en el
diseo e implementacin de un reconocedor de diversos componentes lxicos, todos ellos
por un mismo programa que se disea en base a especificaciones definidas. Aunque este no
es todava un analizador lexicogrfico, al desarrollar este programa un alumno no debe tener
problemas para elaborar uno completo en el curso de compiladores.
De esta misma forma se pueden implementar proyectos con Autmatas que funcionen
como reconocedores de ciertas secuencias alfanumricas vlidas, tales como fechas,
direcciones de internet, correos electrnicos o CURPs entre otras muchas aplicaciones.

APLICACIONES DE LOS AUTMATAS DE ESTADO FINITO
SIMULACIN DE UN MODELO DEL MUNDO REAL
(MQUINA PARA VENTA DE REFRESCOS)
Disear una mquina despachadora de bebidas que reciba monedas de 5, 10 y 25 centavos
y que cuando complete 30 entregue al usuario una lata con refresco.

Primera versin (Autmata Finito):
I = { 5, 10, 25 } // la denominacin de las monedas.
S = { 0, 5, 10, 15, 20, 25, 30+ } // es la cantidad de dinero acumulada.
o
o
= { 0 } // su operacin inicia con 0.
A = { 30+ } // significa 30 o ms (no da cambio).
En vez de incluir los valores de las funciones f y g, incluiremos el diagrama de
transicin.

Teora de Autmatas y Lenguajes Formales
Pgina 70



LIMITACIONES DEL MODELO PROPUESTO ANTERIORMENTE:
No regresa el cambio, pues la salida es exclusivamente, entrega o no entrega una
lata de refresco, dependiendo si se llega o no al estado de aceptacin. Recordar que los
Autmatas Finitos no muestran salidas.
La salida consiste en un solo tipo de refresco por esa misma razn.
Para regresar al estado inicial cuando se complete la venta, se debe considerar una
entrada que reinicialice el sistema.
Se podra considerar que el estado de aceptacin es el que activa un mecanismo
electromecnico que permite seleccionar la marca de refresco y que ya no forma parte del
modelo. Los diferentes estados de aceptacin son matemticamente equivalentes.

Segunda versin (Mquina Finita):
I = { 5, 10, 25, Bn, Bd }
O = { n, 5, 10, 15, 20, 25, normal, dieta }
S = { 0, 5, 10, 15, 20, 25, 30 }
o
o
= { 0 }
Bn es el botn para elegir refresco normal (regular), Bd es botn para la bebida
diettica, n significa nada (salida vaca); normal y dieta son los dos posibles tipos de
refrescos que se ofrecen al usuario. Los dems elementos son similares al ejemplo anterior.
Se propone el siguiente diagrama de transicin.


Teora de Autmatas y Lenguajes Formales
Pgina 71


Ntese que en este caso, el modelo de la Mquina es ms recomendable, debido a
que se deben considerar salidas variadas y no solamente aceptacin o rechazo de ciertas
condiciones. Todas las limitaciones ya referidas que se presentan en el modelo del Autmata
Finito se ven eliminadas en su totalidad en esta segunda propuesta. Obsrvese que la
Mquina no tiene estados de aceptacin o de no aceptacin; es comn que el alumno se
confunda y haga en ocasiones una extraa mezcla de los dos modelos.

APLICACIONES EN CIRCUITOS DIGITALES SECUENCIALES
(RECONOCEDOR DE IMPARIDAD DE PULSOS)
Encontrar un Autmata Finito cuyo comportamiento simule al sistema digital del circuito
anexo, considerando cules son las condiciones que haran que se encienda un diodo emisor
de luz conectado en la salida del circuito. Supngase que existe el tiempo suficiente entre
cada cambio de los valores de la entrada para que las seales se propaguen y para que la
red de compuertas alcance una configuracin estable.


En este caso se tiene un circuito digital secuencial en virtud de que para saber cul
sera la salida obtenida, se debe conocer adems de la entrada, lo que sucede en los puntos
marcados como y
1
y y
2
que constituyen la retroalimentacin. Los valores de voltajes
presentes en esos puntos, en combinacin, determinaran el estado del sistema.
La tabla de transicin o tabla de verdad que se obtiene del anlisis del circuito sera la
siguiente:


Teora de Autmatas y Lenguajes Formales
Pgina 72


La primera es la versin original y la segunda es la misma pero reducida y expresada
de acuerdo a su correspondiente equivalencia en la nomenclatura de este curso. Los valores
de los dos bits originales se traducen a decimal y constituyen el subndice de los estados.
Aqu q
3
es el estado de aceptacin porque en ese caso las dos entradas para la
compuerta AND etiquetada como F son 1 y de esa manera es activada la salida del circuito.
Traduciendo los valores de la segunda versin de la tabla a un diagrama de transicin
se obtiene el Autmata Finito que se muestra a continuacin.


En este problema se muestra el circuito original, las tablas de transicin obtenidas
(considerando la operacin de las compuertas lgicas) y el diagrama de transicin resultante.
Qu ventajas tiene el modelo representado en este Autmata y que no tiene el
diagrama del circuito original? Ser ms fcil el anlisis del funcionamiento del circuito en el
Autmata que en el diagrama electrnico digital?
Como ya se haba referido, los circuitos electrnicos secuenciales, son muy propicios
para ser representados por Mquinas y Autmatas de Estado Finito, ya que en ellos la
entrada por s sola no determina la salida, sino que sta se define tambin por los estados
internos presentes en el circuito. Consultar textos sobre la materia y ver cmo se emplean
esos modelos, no slo para la representacin de estos circuitos, sino tambin para su diseo.
Una ventaja de modelar matemticamente los circuitos digitales secuenciales es que
el anlisis es ms sencillo en el diagrama de transicin que en el diagrama electrnico.
Adems, este hecho ha permitido la creacin de aplicaciones como Workbench, Multisim o
bien OrCAD Pspice, donde se trabaja con un modelo matemtico del circuito real.

APLICACIONES EN INTELIGENCIA ARTIFICIAL
(ESPACIOS DE ESTADOS)
En la orilla norte de un ro se encuentra un hombre junto con un lobo, una gallina y una
cubeta con maz. Hay un bote con capacidad suficiente para transportar al hombre y uno solo
de los otros tres elementos. Todos ellos deben cruzar al ro sin que queden solos lobo-gallina
o gallina-maz o lobo-gallina-maz por razones obvias. Cmo se resuelve el problema?
Cuntas soluciones posibles existen en este caso?
Representamos a los protagonistas con su letra inicial: Hombre (H), Lobo (L), Gallina
(G) y Maz (M). Las entradas seran los elementos del conjunto I = { H, HL, HG, HM } que se
interpretan como las siglas de los pasajeros que estn cruzando el rio en cualquiera de los
dos sentidos posibles, debiendo en todos los casos viajar el hombre, solo o acompaado.
Teora de Autmatas y Lenguajes Formales
Pgina 73


Existen combinaciones imposibles para los smbolos de entrada, como LM, porque el
lobo no puede conducir la embarcacin y transladar el maz sin la intervencin del humano.
Aqu se indica quin est cruzando el ro en cualquiera de los dos sentidos.


En cada estado se muestra al separarlos en dos renglones, qu personajes estn en
cada una de las orillas, tal que en el estado inicial todos se encuentran del mismo lado, y en
el de aceptacin se encuentran en el otro; de esta manera mostramos que existen dos
soluciones mnimas posibles para este problema. A esta representacin, que sirve para
representar la bsqueda de las soluciones, se le llamara en Inteligencia Artificial un Espacio
de Estados.

APLICACIONES EN INTELIGENCIA ARTIFICIAL
(REDES NEURONALES)
Histricamente, los Autmatas Finitos se utilizaron por primera vez para modelar Redes de
Neuronas. Disear un Autmata Finito cuyo comportamiento sea equivalente a la Red
Neuronal de la figura mostrada al inicio de la siguiente pgina. Los estados de aceptacin del
modelo corresponden a una salida 1 de la red.
Cada neurona puede tener sinapsis excitantes ( o ) o inhibitorias ( - ) en sus diversas
entradas, de acuerdo al modelo fisiolgico correspondiente a las conexiones entre las
neuronas en el cerebro humano. Se recomienda al lector que consulte en una referencia
sobre la materia de manera conjunta a este problema para entenderle mejor.
Teora de Autmatas y Lenguajes Formales
Pgina 74


Una neurona produce una salida 1 si el nmero de sinapsis excitantes con entrada 1
excede al de las inhibitorias con entrada 1, por al menos el valor del umbral de la neurona (el
nmero que se encuentra dentro del tringulo). Supngase que existe tiempo suficiente entre
cada cambio de valor de entrada para que las seales se propaguen y para que la Red
alcance una configuracin estable.

En realidad la mayora de las Redes Neuronales actualmente no son tan sencillas
como la que aparece en este ejemplo, pero de aqu se pueden obtener conceptos muy
importantes para entender cmo opera una conexin ms compleja. Obsrvese la gran
similitud que existe en su funcionamiento con los circuitos digitales secuenciales.
El factor ms importante, que determina en gran medida el hecho de poder emplear un
Autmata Finito para este caso, es el de presentarse una retroalimentacin, lo cual implica
que los valores actuales de los puntos marcados como y
1
, y
2
y y
3
determinan un estado
actual de la red de neuronas, el cual influye en el estado siguiente de los puntos referidos as
como en el valor de la salida.


Teora de Autmatas y Lenguajes Formales
Pgina 75


Se considera como estado inicial al caso en que los tres puntos considerados tienen
un valor de 0 o, lo que es lo mismo, se encuentran con ausencia de potencial.
Cuando y
2
y y
3
estn en un valor de 1, sin importar el valor presente en y
1
, se activa la
neurona D, porque slo esos dos potenciales estn alimentando a la entrada de la misma.
Esta situacin se presenta cuando se est en el estado q
3
(011) o en el q
7
(111)
exclusivamente, por lo que tales son los estados de aceptacin.
Como ejercicio para el alumno queda disear el diagrama de transicin y analizar
cmo se puede interpretar el hecho de que dos estados queden inconexos (q
2
y q
5
). Eso
significa que dichos estados, considerados en un principio como posibles, en realidad
son inalcanzables.

AUTMATA FINITO DETERMINISTA (AFD)
Es un dispositivo formal que puede estar en uno cualquiera de un nmero finito de estados,
uno de los cuales es el estado inicial y por lo menos uno es un estado de aceptacin. A este
dispositivo est asociado un flujo de entrada que consiste en una secuencia de smbolos de
un Alfabeto determinado.
El modelo tiene la capacidad de detectar los smbolos conforme llegan y, basndose
en el estado actual y el smbolo recibido, ejecutar una transicin, que puede consistir en un
cambio a otro estado o la permanencia en el actual.
La representacin de un AFD no debe contener ambigedades, de lo cual le viene el
nombre de determinista; el nombre de finito es debido a que aunque analice una cantidad
infinita de posibles cadenas de entrada, la cantidad de estados es limitada. Los Autmatas
Finitos estudiados en el curso hasta este momento son de este tipo. Por cada smbolo
de entrada hay un arco que sale de cada estado del modelo.

AUTMATA FINITO NO DETERMINISTA (AFND)
Se llama as cuando en el Autmata se presenta en por lo menos una ocasin el siguiente
caso: de algn estado parten arcos mltiples con el mismo smbolo x, si x es un dato de
entrada; la situacin es no determinista, ya que no es seguro el siguiente estado. Un ejemplo
de un AFND, con su tabla de transicin correspondiente, sera:


Teora de Autmatas y Lenguajes Formales
Pgina 76


El no determinismo ocurre en virtud de que estando en q
1
y llegando una a, o bien,
estando en q
2
y llegando una b, no sabemos con certeza cul ser el siguiente estado de
entre los dos posibles.
Dada una cadena de entrada S
in
, se considera que tal arreglo es aceptado si existe
por lo menos un recorrido en el Autmata que lleve a un estado de aceptacin, sin
importar que existan otros para la misma cadena que terminen en uno de no aceptacin.
Por ejemplo, sea la cadena de entrada S
in
= aab. En este caso hay tres formas de
recorrer el Autmata y como en una de ellas s se finaliza en un estado de aceptacin,
entonces se considera que es una cadena aceptada. Sin embargo, si se recibe una cadena
como abbaab, obsrvese que cuando llega el segundo smbolo de entrada (b) se tiene una
situacin en la que se est en un estado (q
1
) en el cual no est definido lo que sucede para
esa b; en ese caso la cadena de entrada se rechaza.
Este tipo de Autmatas no puede implementarse con el algoritmo que se estudi
anteriormente en este documento. Sin embargo, es imprescindible estudiar este modelo, ya
que se presenta en muchos casos prcticos y no se puede evitar su aparicin en diversos
casos; afortunadamente, existen procedimientos para transformarles en Autmatas Finitos
Determinsticos equivalentes, como se estudiar ms adelante. Adems existen algunos
problemas en los que el AFND ofrece una mejor solucin que su versin equivalente en AFD.
Consultar con el profesor o en otra fuente de consulta, a qu se refieren los trminos
Determinstico, o No Determinstico. Originalmente implican connotaciones filosficas muy
importantes, referentes al destino de los seres vivos.

RELACIN ENTRE AUTMATAS Y GRAMTICAS
Una Gramtica Regular y un Autmata de Estado Finito se relacionan entre s, ya que
cualquiera de ellos se vincula directamente con un determinado Lenguaje Regular. Hay una
estrecha relacin entre una Gramtica Regular que produce un determinado Lenguaje
Regular y el Autmata Finito que acepta exactamente las cadenas de ese mismo Lenguaje.
Dado el Autmata que reconoce nmeros reales y exponenciales sin signo, analizado
previamente, se puede construir una Gramtica Regular que produce tal Lenguaje, por
ejemplo. Este hecho favorece a los alumnos de un curso de compiladores, ya que pueden
disear con el Autmata un compilador personal y de ah se deducen las reglas gramaticales.
Para definir la Gramtica del Lenguaje Regular aceptada por un Autmata Finito, se
sigue el siguiente procedimiento:
a) Los smbolos de entrada de A son los terminales de G.
b) Los estados se convierten en los smbolos no terminales.
c) El estado inicial se transforma en el smbolo inicial.
d) Las composiciones corresponden a los arcos dirigidos. Si existe un arco con la
entrada x de A hacia B se incluye en la Gramtica Regular la regla de produccin A xB.
Adems, si esa misma transicin se dirige hacia un estado de aceptacin, por ejemplo si B
lo fuera en este caso, se incluye la composicin A x, aparte de la anterior.


Teora de Autmatas y Lenguajes Formales
Pgina 77


EJEMPLO:
Determinar la Gramtica Regular que produce el Lenguaje Regular aceptado por el Autmata
Finito que se muestra a continuacin.


N = { A, B, C, D } T = { a, b } o
0
= { A }
P = { A aB | bC | bD, B aB,
C aC| bD, D aB | bB |bD,
A a, A b, B a, C a, D a, D b }
Si solamente existieran los Autmatas Finitos Determinsticos, Cmo se podra
definir el Autmata Finito asociado con la Gramtica Regular anterior, por ejemplo?
Es muy recomendable en los casos en que una Gramtica Regular sea difcil de
obtener, mejor se disee el Autmata Finito que acepta las cadenas y posteriormente
obtener las reglas gramaticales del diagrama de transicin como se ha expuesto.

PROBLEMA INVERSO:
PARTIENDO DE UNA GRAMTICA REGULAR, DETERMINAR EL AUTMATA FINITO
QUE ACEPTA LAS CADENAS DE L(G).
EJEMPLO:
Sea la Gramtica G = (N, T, P, o
0
) .
N = { S, A, B } T = { a, b } o
0
= { S }.
P = { S aS | bS | aB , A bB , B aB | aA | b }
Disear el AFND que acepta los arreglos de L(G) aplicando el procedimiento anterior
en sentido inverso y obtener conclusiones.
En este caso se observa que sera imposible disear un Autmata Finito siguiendo el
procedimiento anterior al pie de la letra y en sentido inverso, ya que debera haber un arco
que sale del nodo B hacia un estado de aceptacin cualquiera cuando ocurre la entrada b,
pero esto obligara a que existiera una composicin en el conjunto P con el formato B b?
(donde el signo de interrogacin correspondera a un no terminal) pero sta no existe.
Teora de Autmatas y Lenguajes Formales
Pgina 78


Se resuelve el problema agregando un estado adicional, que denominaremos por
llamarle de alguna manera y que es una especie de "estado vaco", adems que ser el
nico de aceptacin. Si el estado no es agregado, no podr resolverse el problema. Por
cierto, su nombre es determinado de manera arbitraria y no existe razn para que se llame
de esa manera en particular.


No obstante que parece que no corresponde este diagrama con la Gramtica de
acuerdo a lo expuesto anteriormente, no existe incongruencia en el diseo, ya que si se
hiciera el diseo de la Gramtica Regular que produce el Lenguaje aceptado por el AFND
anterior, la regla B b se deber eliminar del resultado, ya que no producira smbolos.
El algoritmo general para hacer la conversin se determina de la siguiente forma:
Se tiene G = (N, T, P, o
0
), la cual es una Gramtica Regular. Sean
I = T
S = N { } , donde e ( N T ) si fuera necesario .
f ( A, x ) = { B | A xB e P } { | A x e P }
A = { }
o
0
= { o
0
}
Entonces el Autmata Finito obtenido acepta precisamente los arreglos de L(G).
En este caso los smbolos de entrada se toman del conjunto T, mientras que los
estados son los no terminales junto con el nuevo estado de aceptacin, si es que ste fuera
necesario de incluir, pues hay ocasiones en que uno o ms de los mismos smbolos de
N pudieran ser de aceptacin y no se requerira de agregar a . Adems el estado inicial
es el mismo smbolo inicial. Finalmente la funcin f se define de acuerdo a las composiciones
pero consideradas de manera inversa de cuando se hacia la conversin del Autmata Finito
en Gramtica Regular.
Con esto, queda completada la relacin que ya se haba mencionado anteriormente:
dada una Gramtica Regular, que produce un Lenguaje Regular, existe tambin un
Autmata de Estado Finito que acepta las cadenas producidas por dicha Gramtica.
TEOREMA: Un Lenguaje L es Regular s y slo s existe un AFD que acepta
nicamente las cadenas de ese Lenguaje. Debido a que en este curso se aceptan
solamente las reglas A xB y A x para disear una Gramtica Regular, entonces el
Autmata no podr tener su estado inicial como de aceptacin al no aceptar la cadena
vaca.
Teora de Autmatas y Lenguajes Formales
Pgina 79


Si se empleara el criterio de que se pueden emplear las reglas A en el
diseo, entonces el AFD s podr tener el ya referido estado como de aceptacin.

CONVERSIN DE UN AFND EN UN AFD
Los Autmatas Finitos No Determinsticos son imprescindibles en muchas aplicaciones de la
Teora de la Computacin y no solamente cuando se emplean para disear Gramticas
Regulares. Sin embargo, es evidente que no pueden traducirse en un programa de
computadora como el que se expuso anteriormente, ya que un algoritmo que se pretende
programar no debe presentar ambigedades y en este caso en algunas transiciones hay dos
o ms posibles estados siguientes y no uno solo. Sin embargo, esto no es problema, ya que
todo AFND puede transformarse en un AFD equivalente, el cual s puede implementarse.

TEOREMA: Dado un AFND cualquiera llamado A, puede construirse un AFD
denominado A' que sea equivalente a A.

PROCEDIMIENTO: Sea A = ( I, S, f, A, o
o
) un AFND. Evalense los siguientes conjuntos:
I ' = I
S ' = P ( S )
A ' = { X _ S' | X A = C }
o
o
' = { o
o
}
f ( X, x ) = C si X = C
f ( S, x ) S e X si X = C
Entonces se obtiene el AFD llamado A' = ( I', S' , f' , A' , o
o
' ), el cual es equivalente al
Autmata A. En este caso A' consiste en los subconjuntos de S' que contienen al menos un
estado de aceptacin del AFND original.

En este caso, debido a que el procedimiento para la conversin es algo extenso,
se ha determinado que en estas notas no se muestre en detalle cmo se resuelven
diversos ejemplos especficos, ms que el que se muestra a continuacin y que es
muy sencillo, pero que si se comprende bien servir perfectamente para resolver otros
problemas ms complejos.

EJEMPLO:
Disear un AFD que reconozca las cadenas del Lenguaje generado por la siguiente
Gramtica: G = ( { S, C }, { a, b }, { S bS | aC , C bC | b }, { S } ). Encontrar la
caracterizacin del Lenguaje L(G).
El AFND obtenido por el procedimiento aprendido anteriormente es:
Teora de Autmatas y Lenguajes Formales
Pgina 80




Se podra pensar que haciendo que C fuera estado de aceptacin, no se requerira de
, pero eso no es posible porque entonces la Gramtica G debera contener la regla S a y
eso no sucede.
La conversin de AFND a su equivalente de acuerdo con el procedimiento referido
produce como resultado el siguiente AFD:


El Lenguaje aceptado, tanto por el AFND original como por el AFD equivalente, es L =
{ b
*
ab
+
}. El procedimiento para llegar a ese resultado consiste de los siguientes criterios:
- En los casos en los que no existe problema de no determinismo se redibuja el
diagrama igual a como aparece el original AFND.
- Cuando se presenta el caso de que exista el no determinismo se dibuja un nuevo
estado combinado a partir de los posibles estados siguientes. Para este caso f (C, b) =
{ C, } por lo que se cre un nuevo estado combinado formado por tales estados.
ste debe ser de aceptacin si alguno de los estados componentes lo es, como en
este caso en que { C, } es de aceptacin porque lo define de esta manera.
- Completar el diseo considerando los estados siguientes para cada entrada diferente
en los estados combinados que surgen en el paso anterior, como en este caso sucede
con { C, }. Verificar los posibles estados siguientes como si fuera por separado cada
uno de los estados para cada entrada involucrada y luego combinarlos. En este caso f
( C, a ) = y f ( , a ) = , por lo que f ( {C, }, a ) = ; por otra parte f ( C, b ) = {C,
} y f ( , b ) = , por lo que f ( {C, }, b ) = {C, }.
Ntese que el estado {C, } hereda de C el lazo y de el hecho de ser de aceptacin
por lo que cada uno de ellos se toma en cuenta de alguna manera.

AUTMATAS PARA EXPRESIONES REGULARES
1. Unin de Lenguajes: L
1
L
2
. La unin de dos Lenguajes Regulares es otro Lenguaje
Regular.
EJEMPLO:
Sean L
1
= { x*y } y L
2
= { y*x }. Evaluar L
1
L
2
, y disear el Autmata Finito que acepta esas
cadenas.
L
1
L
2
= { x*y v y*x }.
Teora de Autmatas y Lenguajes Formales
Pgina 81




Observemos las dos opciones que normalmente los alumnos presentan como posible
respuesta, de las cuales solamente la segunda sera la correcta:


Entrando a la parte correspondiente del diagrama segn el primer smbolo de la
cadena, ya no se puede pasar a la otra parte. El nuevo estado inicial sera de aceptacin slo
si uno de los iniciales originales lo fuera.
El procedimiento indica que se debe dibujar un arco con la misma etiqueta que tienen
los que salen de los que eran los estados iniciales, pero ahora partiendo del nuevo estado
inicial, lo cual se considera por si los smbolos afectados por los asteriscos no aparecieran.

2. Concatenacin de Lenguajes: L1 - L2. La concatenacin de dos Lenguajes Regulares
es otro Lenguaje Regular.
EJEMPLO:
Sean L
1
= { x*yx* } y L
2
= { y*xy* } . Evaluar L
1
- L
2
, y disear el Autmata Finito que acepta
estas cadenas.
L
1
- L
2
= { x*yx*y
*
xy*

}.
El siguiente diagrama muestra cmo se hara la integracin de los diagramas.

Teora de Autmatas y Lenguajes Formales
Pgina 82


El procedimiento indica que a partir del estado de aceptacin del primer diagrama, se
debe dibujar un arco hacia cada estado del segundo que sea el destino de un arco del estado
inicial de ste ltimo. Rotular cada uno de estos arcos con la etiqueta del arco
correspondiente en el segundo esquema. El estado de aceptacin del primero seguira
sindolo slo en el caso de que el estado inicial del segundo lo fuera.

3. Estrella de Kleene o Cerradura de un Lenguaje: ( L
1
)*. La cerradura de cualquier
Lenguaje Regular es tambin un Lenguaje Regular.
EJEMPLO:
Sea L = { x*y } . Evaluar L* y disear el Autmata Finito que acepta esas cadenas.
L* = { (x*y) * }.
El Autmata Finito que se obtiene como resultado sera el siguiente:


El procedimiento indica que el nuevo diagrama de transicin implica la concatenacin
del esquema original hacia atrs consigo mismo, adems de que debe aceptar .
Como debe aceptar la cadena vaca se antepone al estado inicial otro nuevo y que sea
de aceptacin. Para conectar ambos estados se emplea la primera entrada potencial que
sera la x, por lo que dibujamos un arco que con tal entrada seale la primera transicin.
Sin embargo, como se considera que podra no haber tales smbolos al inicio, como
sucede cuando se tiene la cerradura, se conecta del nuevo estado inicial hacia el final con la
entrada y.
Para que puedan aceptarse las repeticiones de las subcadenas se aade un arco del
estado de aceptacin final a cada estado que es el destino de un arco del estado inicial.
Cada uno de estos nuevos arcos se rotula con la misma etiqueta que corresponda al arco del
estado inicial.
Dado un Alfabeto particular y usando las tres operaciones sealadas
anteriormente, se pueden construir varios Lenguajes a partir de bloques de
construccin, siendo todos ellos de tipo 3.

TEOREMA:
Si p, q, r son expresiones regulares, entonces ( p - q )*, ( q p ) - r , q* ( r - q ) y otras
diversas combinaciones tambin son expresiones regulares.



Teora de Autmatas y Lenguajes Formales
Pgina 83


EJEMPLO:
Representar grficamente el Autmata de Estado Finito que acepta las cadenas de la unin
de a - ( b - a ) * con x - ( y - x ) *.


EJEMPLO:
Dibujar un diagrama de transiciones que acepte la concatenacin del Lenguaje aceptado por
A
1
con el aceptado por A
2
.


El estado B del Autmata Finito resultante hubiera sido de aceptacin solamente si C
en el Autmata del segundo operando del enunciado de los datos lo fuera.

COMENTARIOS ADICIONALES
Los Autmatas Finitos carecen del poder suficiente para analizar y aceptar expresiones
aritmticas que contengan parntesis correctamente anidados. Uno de estos mecanismos
aceptara expresiones, tanto incorrectas como correctas, debido a que no recuerdan cuantos
parntesis se han abierto al no contar con memoria. Solamente se podra tener un registro de
dichas apariciones cambiando de estado, pero podra tenerse una cantidad enorme de
parntesis y se tendran demasiados de ellos. Para resolver el problema anterior se requiere
de un Autmata de Pila.
Se espera que el alumno tenga la iniciativa de investigar acerca de las diversas
aplicaciones que tienen los Autmatas de Estado Finito y no le quede la creencia de que
solamente sirven para el diseo de un analizador lexicogrfico para un compilador.
Teora de Autmatas y Lenguajes Formales
Pgina 84




CAPTULO 5
AUTMATAS DE PILA

DESCRIPCIN GENERAL
Como se ha hecho referencia en el captulo anterior, el potencial de los Autmatas de Estado
Finito es limitado en razn de que no pueden ser empleados para analizar Lenguajes que no
son Regulares, tales como los Libres de Contexto. En este caso se requiere de un dispositivo
formal que posea memoria para poder tener el registro de las apariciones de ciertos smbolos
de entrada y compararlas en cantidad con otros smbolos.
Por ejemplo, cuando se analiza una expresin que forma parte de un programa escrito
en un Lenguaje de programacin y que contiene parntesis anidados, se debe llevar un
conteo de los que se han abierto para cotejar con los que se cierran y verificar que sus
cantidades son iguales aparte de comprobar que no apareci uno de cierre sin que haya
surgido el que corresponde a su apertura.
El nuevo modelo de Autmata tiene muchos elementos y criterios en comn con
el que se estudi el captulo anterior y como se ver enseguida, se los puede utilizar para
analizar cadenas en forma similar a como se usan los Autmatas Finitos. Una cadena que
ingresa al Autmata de Pila puede ser aceptada o rechazada segn el tipo de estado
en el cual se puede terminar el recorrido al hacer su anlisis.
En ambos casos se define el estado inicial como de aceptacin si se reconoce la
cadena vaca, o no en caso contrario; si se desea se numeran los estados con la
nomenclatura que los define con el nombre de q
n
, siendo q
0
el inicial o bien se los puede
llamar de cualquier otra manera, como por ejemplo con letras maysculas.
Es muy comn que en los Autmatas de Pila la cadena vaca se emplee como
smbolo de entrada para varias transiciones.
Por otra parte, los Autmatas de Pila son NO DETERMINISTAS.
Los smbolos que pueden almacenarse en la pila (smbolos de pila del Autmata)
constituyen un conjunto finito que puede incluir alguno(s) o todos los smbolos del Alfabeto
de la mquina y algunos smbolos adicionales que la mquina utiliza como marcas internas,
como la indicacin de la pila vaca ( # ).
Las transiciones que ejecutan los Autmatas de Pila deben ser basadas en la
siguiente secuencia bsica: leer un smbolo de entrada, extraer un smbolo de la pila, insertar
un smbolo en la pila y pasar a un nuevo estado (o continuar en el mismo). Ntese que al
trabajar con ms informacin que el Autmata Finito, tambin se hacen ms complejas sus
transiciones.
Es importante recalcar que en este caso la realizacin de una transicin no depende
exclusivamente de la presencia del smbolo de entrada, pues para que sta se pueda
consumar es preciso que en el tope de la pila exista el smbolo que se pretende extraer y de
no ocurrir as, no ser posible llevarla a cabo.
Teora de Autmatas y Lenguajes Formales
Pgina 85


El estado actual, el smbolo de entrada y el smbolo que se pretende extraer (ubicado
en la cima de la pila), determinan conjuntamente el smbolo que se insertar en la pila y el
nuevo estado.
La adicin de la Pila incrementa de manera considerable el potencial de
procesamiento del Lenguaje de Autmata y proporciona un marco en el cual se formulan
diversos algoritmos eficientes para el anlisis sintctico.
Precisamente, los analizadores sintcticos, adems de los semnticos, se desarrollan
principalmente a partir de Autmatas de Pila.

DEFINICIN FORMAL DEL AUTMATA DE PILA
Un Autmata de Pila es una 6-tupla ordenada de la forma: S = ( I, S, I, T, A, o
o
) donde:
I es el conjunto de smbolos de entrada o Alfabeto de la mquina.
S es una coleccin finita de estados.
I es la coleccin finita de smbolos de la pila.
T es una coleccin finita de Transiciones del modelo.
A es un subconjunto de S y es la coleccin de estados de aceptacin.
o
o
es un elemento tomado de S y se reconoce como el estado inicial.

DISEO DE AUTMATAS DE PILA
A continuacin se ofrecen dos ejemplos para que el lector comprenda mejor cmo se hace el
diseo de casos para este nuevo modelo. Primeramente se hace el desarrollo a partir de un
Lenguaje Formal y en el siguiente ejemplo se ofrece como dato una Gramtica Libre de
Contexto.

EJEMPLO:
Disear el Autmata de Pila que acepta el Lenguaje L = { x
n
y
n
| n e
o
}. Observar que en
este caso se deben aceptar cadenas con la misma cantidad de x y de y.


Para interpretar una transicin, tal como por ejemplo y, x; , se toma el primer
elemento (y) como el smbolo de entrada que ocasiona la transicin, el segundo (x) como el
que se extrae de la pila y el tercero () es el smbolo de pila que se inserta en ella.
Teora de Autmatas y Lenguajes Formales
Pgina 86


Las transiciones lambda que aparecen en el diagrama, son muy importantes en este
diseo. La que lleva de A hacia B es para inicializar la pila con el smbolo vaco antes de
empezar a recibir las x y las y. La que lleva de C a D se emplea para verificar que realmente
haya quedado la pila vaca, lo cual se cumple si es posible efectuar la transicin en la que se
puede extraer el smbolo # una vez que se han dejado de recibir las x y las y.
Los Autmatas de Pila pueden aceptar Lenguajes Libres de Contexto como el del
ejemplo anterior. Como los Lenguajes Regulares tambin cumplen con las condiciones para
ser Libres de Contexto, tericamente pueden ser manejados por Autmatas de Pila (aunque
esta estructura de datos no sera empleada para algo til durante el anlisis de la cadena).
Una forma de mostrar como un Lenguaje es Libre de Contexto sera diseando un
Autmata de Pila que deber ser el idneo para analizar las cadenas del mismo. Es muy
importante considerar que si se cumple con el criterio en el que nos hemos basado en este
curso, no se aceptara la cadena vaca como parte del Lenguaje y q
0
debera ser un estado
de no aceptacin, pero habr que recordar que diversos autores s aceptan dicha palabra
como parte de un Lenguaje de Tipo 2, de acuerdo a la aclaracin hecha en el captulo
correspondiente.

TEOREMA: Para toda Gramtica Libre de Contexto G, existe un Autmata de Pila S que
acepta exclusivamente las mismas cadenas del Lenguaje L(G).

EJEMPLO:
Disear el Autmata de Pila que acepta el Lenguaje producido por la Gramtica Libre de
Contexto con las reglas del conjunto P = { A abA, A BcC, B cA, B abc, C ab } si
se tiene que A es el smbolo inicial.


En este caso existe una propuesta de un Autmata de Pila que se disea de manera
directa sin tener que caracterizar la Gramtica y en ella se inicia con la insercin de la pila
vaca y enseguida se hace lo mismo con el smbolo inicial cambiando de estado actual y
llegando hasta q
2
; posteriormente se incluyen en dicho estado diversas transiciones como
lazos. Unas tienen el formato , <lado izquierdo de la regla>; <lado derecho de la misma
regla> para cada composicin presente en G y en las otras se define como <smbolo
terminal>, <mismo smbolo terminal>; para cada uno de ellos considerado en el conjunto
de dichos elementos. Esta es la respuesta ms simple y no requiere de mucho anlisis.
Teora de Autmatas y Lenguajes Formales
Pgina 87



REPRESENTACIN ALTERNA DE UN AUTMATA DE PILA



En la cinta de entrada de la mquina se coloca la cadena que se analizar, con la cabeza de
lectura sobre la celda del extremo izquierdo de la cinta. Luego se pone en marcha la mquina
desde su estado inicial, con la pila vaca, y se declara que la cadena se aceptar si es
posible que la mquina llegue a un estado de aceptacin despus de leer toda la cadena.
Existe un diagrama similar, pero sin la pila de memoria que corresponde al Autmata Finito.
En el transcurso de las clases ordinarias se vern ms ejemplos sobre este modelo
formal, el cual es menos empleado que el anterior, pero que no por ello es menos importante.


















Teora de Autmatas y Lenguajes Formales
Pgina 88




A
P

N
D
I
C
E
S



1.
PROGRAMA
VIGENTE DE LA
ASIGNATURA CC209
(TEORA DE LA
COMPUTACIN).

2.
PROBLEMAS
PROPUESTOS PARA
RESOLVER EN
CLASE.

Teora de Autmatas y Lenguajes Formales
Pgina 89








DATOS DE IDENTIFICACIN DEL CURSO
DEPARTAMENTO: Ciencias Computacionales
ACADEMIA A LA QUE
PERTENECE:
Estructuras y Algoritmos
NOMBRE DE LA MATERIA: Teora de la Computacin
CLAVE DE LA MATERIA: CC209
CARCTER DEL CURSO: Obligatorio
TIPO DE CURSO: Terico
No. DE CRDITOS: 11
No. DE HORAS TOTALES: 80 Presencial 64
No
presencial
16
ANTECEDENTES: MATEMTICAS DISCRETAS (MT260)
CONSECUENTES: COMPILADORES (CC317) y ANLISIS Y DISEO DE ALGORITMOS
(CC316)
CARRERAS EN QUE SE IMPARTE: Ingeniera en Computacin, Licenciatura en Informtica y Licenciatura
en Matemticas
FECHA DE ULTIMA REVISIN: Agosto de 2008

PROPSITO GENERAL
Al concluir este curso se habr introducido al estudiante en las competencias necesarias
para el diseo de modelos formales fundamentales en las Ciencias de la Computacin,
principalmente los Autmatas y los Lenguajes Formales, tanto de manera formal como
aplicada.

OBJETIVO TERMINAL
Comprender y analizar modelos matemticos tales como Autmatas y Lenguajes Formales
para representar con ellos sistemas del mundo real, enfocando el conocimiento de manera
principal al diseo de sistemas computacionales.

CONOCIMIENTOS PREVIOS
Elementos de teora de grafos y teora de conjuntos, adems de conceptos de
computacin, de programacin estructurada y de pilas de memoria.

HABILIDADES Y DESTREZAS A DESARROLLAR
Capacidad de razonamiento lgico y de bsqueda de soluciones en problemas formales,
as como relacionar conocimiento puro con aplicado.

ACTITUDES Y VALORES A FOMENTAR
Honradez, autoformacin didctica, confianza en s mismo y competencias para
desarrollar trabajo en equipo.
Universidad de Guadalajara
Centro Universitario de Ciencias Exactas e Ingenieras
Divisin de Electrnica y Computacin
Departamento de Ciencias Computacionales

Teora de Autmatas y Lenguajes Formales
Pgina 90



CONTENIDO TEMTICO

MDULO 1. GRAMTICAS Y LENGUAJES FORMALES. 18 HRS
OBJETIVO DEL MDULO: Comprender la forma en que los lenguajes naturales se pueden definir
matemticamente como lenguajes formales, enfatizando los aspectos que hacen similares o
diferentes a ambas representaciones.
1.1 Conceptos introductorios.

2 HRS

OBJETIVOS DEL TEMA:


* El alumno identificar los conceptos de Lenguaje, Gramtica, Alfabeto,
smbolo y de palabra, arreglo o cadena.
* El alumno distinguir los trminos naturales y formales.
* El alumno reconocer la importancia de los Lenguajes Formales en las
Ciencias Computacionales.

1.2 Lenguajes Formales y sus operaciones.

3 HRS

OBJETIVOS DEL TEMA:


* El alumno conocer la estructura de un Lenguaje Formal.
* El alumno diferenciar los conceptos en los Lenguajes Formales y en los
Naturales.
* El alumno conocer las operaciones aplicables en los Lenguajes
Formales.
* El alumno resolver operaciones en las que se involucren Lenguajes
Formales.

1.3 Gramticas Formales y su diseo.

4 HRS

OBJETIVOS DEL TEMA:


* El alumno conocer e identificar los elementos que conforman una
Gramtica Formal en su representacin como tupla.
* El alumno diferenciar los elementos que conforman una Gramtica
Formal
* El alumno disear Gramticas Formales a partir de Lenguajes Formales.

1.4 Caracterizacin de una Gramtica.

3 HRS

OBJETIVOS DEL TEMA:


* El alumno definir el Lenguaje Formal a partir de una Gramtica Formal.
* El alumno identificar el concepto de Gramticas equivalentes.
* El alumno disear un Lenguaje Formal a partir de la caracterizacin de
una Gramtica Formal.

1.5 Jerarqua de Chomsky.

3 HRS

OBJETIVOS DEL TEMA:


* El alumno conocer la clasificacin de las Gramticas Formales.
* El alumno identificar los criterios empleados para distinguir los 4 tipos de
Gramticas Formales.
* El alumno ser capaz de identificar a que tipo de Gramtica pertenece un
determinado Lenguaje Formal.
* El alumno clasificar los Lenguajes Formales segn este mismo criterio.
* El alumno identificar los reconocedores para cada tipo de Lenguaje
Formal.
* El alumno disear Gramticas Formales que cumplan con un tipo
especfico de acuerdo a esta clasificacin.

Teora de Autmatas y Lenguajes Formales
Pgina 91


1.6 Conceptos adicionales sobre Gramticas Formales.

1 HRS

OBJETIVOS DEL TEMA:


* El alumno conocer e identificar el concepto de Gramtica decidible.
* El alumno disear una Gramtica decidible.
* El alumno conocer e identificar el concepto de las Gramticas lineales.
* El alumno disear una Gramtica lineal.

1.7 Forma Normal de Chomsky (CNF).

2 HRS

OBJETIVOS DEL TEMA:


* El alumno conocer e identificar las Gramticas en su Forma Normal de
Chomsky.
* El alumno aplicar el procedimiento para transformar una Gramtica Libre
de Contexto cualquiera a su Forma Normal de Chomsky equivalente.



MDULO 2. LAS GRAMTICAS FORMALES EN LA COMPUTACIN. 11 HRS
OBJETIVO DEL MDULO: Aplicar los conocimientos sobre Gramticas Formales en la descripcin
de los lenguajes de programacin, con el propsito de desarrollar parte de un compilador, o
para entender su operacin.
2.1 Forma Normal de Backus-Naur (BNF)

2 HRS

OBJETIVOS DEL TEMA:


* El alumno comprender la aplicacin de esta nomenclatura ahora desde el
punto de vista formal.
* El alumno conocer la representacin de las reglas en BNF para algunos
lenguajes de programacin.

2.2 rboles de derivacin.

4 HRS

OBJETIVOS DEL TEMA:


* El alumno ser capaz de construir rboles de derivacin para la
produccin de cadenas en un Lenguaje formal.
* El alumno comprender el uso y aplicacin de estos rboles.
* El alumno conocer la relacin que tienen los rboles de derivacin con
los de sintaxis y los de anlisis sintctico en la teora para el diseo de
compiladores.

2.3 Gramticas ambiguas y unvocas

2 HRS

OBJETIVOS DEL TEMA:


* El alumno distinguir entre las Gramticas ambiguas y las unvocas y
comprender la importancia de estos conceptos en el diseo de las
especificaciones sintcticas de un lenguaje de programacin.
* El alumno tendr la capacidad de disear Gramticas unvocas
equivalentes a partir de otras que son ambiguas.

2.4 Antecedentes para el diseo de lenguajes de programacin.

3 HRS

OBJETIVOS DEL TEMA:


* El alumno disear Gramticas que consideran la asociatividad
correspondiente de acuerdo a los criterios de los lenguajes de
programacin.
* El alumno aplicar sus conocimientos de desarrollo de las reglas de un
compilador para proponer un prototipo de un lenguaje de programacin.

Teora de Autmatas y Lenguajes Formales
Pgina 92


* El alumno relacionar las Gramticas formales con las definiciones lxicas
y sintcticas de un lenguaje de programacin.
* El alumno distinguir el analizador correspondiente para las etapas de
anlisis de un compilador y las vincular con los Autmatas de la Jerarqua
de Chomsky.


MDULO 3. MQUINAS DE ESTADO FINITO. 6 HRS
OBJETIVO DEL MDULO: Obtener las bases necesarias para el diseo de Mquinas de Estado
Finito y simular con este modelo algunos sistemas reales.
3.1 Concepto.

2 HRS

OBJETIVOS DEL TEMA:


* El alumno conocer el concepto formal de las Mquinas de Estado Finito,
as como su descripcin como tupla de conjuntos.
* El alumno entender el significado del modelo y en qu casos se puede
aplicar.

3.2 Representacin.

2 HRS

OBJETIVOS DEL TEMA:


* El alumno dominar las representaciones alternas para este modelo,
incluyendo la tabla de transicin y el diagrama de transicin.
* El alumno ser competente para transformar una Mquina de este tipo de
una forma de representacin a otra.

3.3 Desarrollo de una aplicacin.

2 HRS

OBJETIVOS DEL TEMA:


* El alumno descubrir los modelos del mundo real que se pueden
representar por este modelo y su descripcin.
* El alumno aprender a implementar las aplicaciones que se representan
de esta manera.



MDULO 4. AUTMATAS DE ESTADO FINITO. 19 HRS
OBJETIVO DEL MDULO: Obtener las bases necesarias para el diseo de analizadores
lexicogrficos y comprender la gran variedad de aplicaciones que se pueden representar y
simular con este modelo.
4.1 Concepto y representacin del modelo.

2 HRS

OBJETIVOS DEL TEMA:


* El alumno conocer los criterios que hacen que una Mquina de Estado
Finito puede ser transformada en un Autmata Finito.
* El alumno conocer la representacin de un Autmata Finito por medio de
una tupla de conjuntos.
* El alumno dominar las representaciones alternas para este modelo,
incluyendo la tabla de transicin y el diagrama de transicin.
* El alumno ser competente para transformar un Autmata de este tipo de
una forma de representacin a otra.

4.2 Desarrollo de un Autmata Finito.

3 HRS

OBJETIVOS DEL TEMA:

Teora de Autmatas y Lenguajes Formales
Pgina 93



* El alumno tendr la competencia para desarrollar Autmatas Finitos en
trminos generales.
* El alumno conocer el concepto de Autmatas equivalentes.

4.3 Autmatas de expresiones Regulares.

3 HRS

OBJETIVOS DEL TEMA:


* El alumno tendr la capacidad de disear una gran diversidad de
Autmatas Finitos en base a una expresin regular determinada.

4.4 Relacin entre Autmatas Finitos y Gramticas Regulares.

3 HRS

OBJETIVOS DEL TEMA:


* El alumno confirmar sus conocimientos sobre la relacin que existe entre
los Lenguajes Regulares y sus reconocedores, que son los Autmatas
Finitos.
* El alumno disear Autmatas Finitos de manera directa a partir de una
Gramtica Regular determinada.
* El alumno encontrar de manera directa la Gramtica Regular que
produce las cadenas aceptadas por un Autmata Finito determinado.

4.5 Autmatas Finitos Deterministas (AFD) y Autmatas Finitos No
Deterministas (AFND).
3 HRS

OBJETIVOS DEL TEMA:


* El alumno comprender las diferencias entre los dos tipos de Autmatas
Finitos.
* El alumno conocer la importancia y las ventajas de cada uno de ellos.
* El alumno ser capaz de convertir un Autmata Finito No Determinstico
en otro Determinstico equivalente.

4.6 Desarrollo de una aplicacin de Autmatas de Estado Finito. 3 HRS

OBJETIVOS DEL TEMA:


* El alumno tendr la capacidad de representar diversos modelos del mundo
real por medio de Autmatas Finitos.
* El alumno podr implementar los modelos del mundo real representados
por este medio.

4.7 Limitaciones de los Autmatas de Estado Finito. 1 HRS

OBJETIVOS DEL TEMA:


* El alumno comprender que existen algunos casos de Lenguajes
Formales que no pueden ser aceptados por Autmatas Finitos al no ser
regulares.

4.8 Relacin y diferencias de los Autmatas de Estado Finito con las Mquinas
de Estado Finito.
1 HRS

OBJETIVOS DEL TEMA:


* El alumno comparar los dos modelos y ver las diferencias significativas
que determinan cul modelo es ms conveniente para un caso de
aplicacin determinado.



MDULO 5. AUTMATAS DE PILA. 7 HRS
OBJETIVO DEL MDULO: Obtener las bases del diseo de estos dispositivos para aplicarse como
analizadores sintcticos en un compilador.
5.1 Concepto y representacin de Autmatas de Pila.

2 HRS
Teora de Autmatas y Lenguajes Formales
Pgina 94



OBJETIVOS DEL TEMA:


* El alumno conocer la representacin de un Autmata de Pila por medio
de una tupla de conjuntos.
* El alumno repasar los conceptos bsicos de una pila de memoria,
resaltando la insercin y extraccin de smbolos.
* El alumno comprender los elementos que se emplean en este nuevo
modelo formal.

5.2 Relacin entre Autmatas de Pila y Gramticas Libres de
Contexto.

3 HRS

OBJETIVOS DEL TEMA:


* El alumno tendr la habilidad de disear Autmatas de Pila en base a un
Lenguaje Libre de Contexto determinado.
* El alumno tendr la habilidad de disear Autmatas de Pila en base a una
Gramtica Libre de Contexto determinada.

5.3 Implementacin de un Autmata de Pila.

1 HRS

OBJETIVOS DEL TEMA:


* El alumno podr implementar Autmatas de Pila empleados en
aplicaciones computacionales.

5.4 Limitaciones de los Autmatas de Pila. 1 HRS

OBJETIVOS DEL TEMA:


* El alumno comprender que existen algunos Lenguajes que no son
aceptados por Autmatas de Pila al no ser Libres de Contexto.



MDULO 6. MQUINAS DE TURING. 10 HRS
OBJETIVO DEL MDULO: Conocer el poder computacional de estas mquinas en el contexto de
la solucin de problemas de reconocimiento de lenguajes.
6.1 Concepto y representacin de Mquinas de Turing.

3 HRS

OBJETIVOS DEL TEMA:


* El alumno conocer el concepto de Mquina de Turing como reconocedor
universal de Lenguajes Formales.
* El alumno ser capaz de representar formalmente una Mquina de Turing
como una tupla.

6.2 Mquinas de Turing como aceptadores de Lenguajes.

2.5 HRS

OBJETIVOS DEL TEMA:


* El alumno tendr la habilidad de relacionar este modelo con los Lenguajes
Formales que puede reconocer.

6.3 Construccin de Mquinas de Turing.

3 HRS

OBJETIVOS DEL TEMA:


* El alumno tendr la capacidad de disear Mquinas de Turing en base a
especificaciones concretas y su posterior implementacin.

6.4 El problema de la parada.

1.5 HRS

OBJETIVOS DEL TEMA:


* El alumno conocer el problema de la parad y su implicacin en las
ciencias computacionales.

Teora de Autmatas y Lenguajes Formales
Pgina 95




MDULO 7. COMPUTABILIDAD. 9 HRS
OBJETIVO DEL MDULO: Entender que el diseo de algoritmos presenta limitaciones en ciertos
casos, que impiden su representacin adecuada.
7.1 Complejidad de los clculos.

1.5 HRS

OBJETIVOS DEL TEMA:


* El alumno analizar la complejidad de los clculos.

7.2 Complejidad de los algoritmos.

1.5 HRS

OBJETIVOS DEL TEMA:


* El alumno analizar la complejidad de los algoritmos.

7.3 Complejidad de los problemas.

1.5 HRS

OBJETIVOS DEL TEMA:


* El alumno analizar la complejidad de los problemas.

7.4 Problemas NP.

2 HRS

OBJETIVOS DEL TEMA:


* El alumno comprender la importancia de los problemas NP en las
ciencias computacionales.

7.5 Problemas irresolubles.

2.5 HRS

OBJETIVOS DEL TEMA:


* El alumno conocer sobre la existencia de algoritmos que no pueden ser
programados al no existir una adecuada representacin del modelo.






METODOLOGA DE ENSEANZA APRENDIZAJE
Mtodo
Mtodo
tradicional de
exposicin
Mtodo
Audiovisual
Aula
Interactiva
Multimedia
Desarrollo
de
proyecto
Dinmicas
Estudio de
casos
Otros
(Especificar)
% 10 0 0 0 15 65 10 0



CRITERIOS DE EVALUACIN
Exmenes Departamentales........................ 50%
Implementacin de aplicaciones............................................................... 20%
Tareas individuales (resolucin de ejercicios) y trabajos especiales. 30%



Teora de Autmatas y Lenguajes Formales
Pgina 96



BIBLIOGRAFA

BSICA
TITULO AUTOR EDITORIAL
AO DE
EDICIN
% DE
COBERTURA
DEL CURSO
Lenguajes Formales y
Teora de la Computacin
John Martin Mc Graw Hill 2004
3ra. Ed.
80

COMPLEMENTARIA
TITULO AUTOR EDITORIAL
AO DE
EDICIN
% DE
COBERTURA
DEL CURSO
Introduccin a la Teora de
Autmatas, Lenguajes y
Computacin
John E. Hopcroft
y Jeffrey D.
Ullman
Addison
Wesley
Iberoamericana
2002 75
Teora de la Computacin J. Glenn
Brookshear
Addison
Wesley
Iberoamericana
1995 75
Teora de Autmatas y
Lenguajes Formales
Dean Kelley
Prentice Hall
1995 80



REVISIN REALIZADA POR:

NOMBRE DEL PROFESOR

FIRMA
GMEZ ANDRADE ABELARDO

*Consta en el original
MURILLO LEAO MARA MAGDALENA

*Consta en el original
VZQUEZ VILA JORGE

*Consta en el original

Vo.Bo. Presidente de Academia

Vo.Bo. Jefe del Departamento

*Consta en el original


M.D.E.C. BLANCA LORENA REYNOSO GMEZ

*Consta en el original


DR. MARCO A. PREZ CISNEROS

Para obtener el archivo de este mismo programa y considerar posibles actualizaciones
futuras, consultar en la direccin http://dcc.cucei.udg.mx.

Teora de Autmatas y Lenguajes Formales
Pgina 1


REACTIVOS DE TEORA DE LA COMPUTACIN

01.- Dado el Lenguaje L = { , cb, abbc, babac } determinar:
a) Los posibles prefijos, infijos y posfijos de cada
cadena.
b) El Alfabeto E.
c) La longitud de cada cadena de L.
d) El contenido del conjunto L
2
.
e) L es un Lenguaje finito o infinito?

02.- Dados los Lenguajes L
1
= { a, aa, ab, aba } y L
2
= { , b,
ab, bab, bbb } evaluar:
a) L
1
L
2
d)

L
2
- L
1
b)

L
1
L
2
e)

L
1
- L
2
c)

L
1
-

L
2
f) L
2
L
1
- L
2


03.- Dado el Lenguaje L = { , a, ab, c }, determinar el
contenido de los conjuntos E, L
0
, L
1
, L
2
, L
+
y L
*
.

04.- Considrese el Lenguaje L
*
, surgido a partir de L = {a,
b} con un Alfabeto E = { a, b }.
a) Cuntas palabras de ese L* tienen longitud de 2, de
3, de 4 y de n, respectivamente?
b) Evaluar lo mismo que en el inciso anterior, pero
ahora con L = { a, ab, bc } si E = { a, b, c }.

05.- Considrese a L = { a, ab, bb }. Las cadenas aabab,
babbbab, abbabab, abbaababbb, son palabras de un L
n
?

06.- Dado el Lenguaje L = { aa, aba, baa }, responder:
a) Las cadenas a
2
ba
2
, (ba
3
)
2
, (ba
2
)
3
b
2
a, ba
5
(ba)
2
a
3

son palabras del Lenguaje L
+
?
b) Qu caractersticas tendran las cadenas de este
L
+
, expresadas en un Lenguaje natural?

07.- Describir en un Lenguaje natural las cadenas que
contiene cada uno de los siguientes Lenguajes Formales:
a) L = { 1*0 } d) L = { (1, 00)* }
b) L = { 1*00* } e) L = { (0
+
1)* }
c) L = { 1
2
0* } { 0
2
1* } f) L = { (0,1)
1
- (0,1)* 00 }

08.- Determinar en cules de los siguientes Lenguajes est
contenida la cadena 1011.
a) L = { 10*1* } f) L = { 1 (10)* (11)* }
b) L = { 0* (11,10)* } g) L = { 1
+
(01)* 1* }
c)L = { (10)* 101 } h) L = {(1,00) - (01,0) - 1*}
d) L = { 1* 01 (0,1)
1
} i) L = { 01, 11 }
3

e) L = { (11)* (10)* } j) L = { 0, 1 ,10 }
n


09.- Considerando a E = { a, b, c }, son equivalentes las
parejas de expresiones formales de cada inciso?
a) ( ( a b) c)* y (ac bc)*.
b) b ( ab ac ) y ( ba ba ) ( b c ).
c) ( a, b )* y ( a*, b* ).
d) (( a b) a )* y ( a b )* a*.

10.- Especificar la expresin formal que corresponda a cada
uno de los siguientes Lenguajes sobre E = { a, b }:
a) El Lenguaje de las cadenas que inician con a
2
o
que finalizan con b
2
.
b) El Lenguaje de las cadenas que inician con a
2
y
que finalizan con b
2
.

11.- Sea G = {(A, B, C), (a, b, c), (A aaA, A bB, B
cCb, B cb, C bbC, C bb), (A)}. Establecer cules
de las siguientes cadenas pertenecen a L (G).
a) aabcb. d) aabccbbb.
b) abbcb. e) aaaabcbb.
c) bcbbbbb. f) aaaabcbbb.

Teora de Autmatas y Lenguajes Formales
Pgina 2


12.- Dada G = ( { a, b, c }, { +, - }, { a a +, a - c -, b -
+, b c +, b a + c, c - , c c c, a - c + + }, { a }).
a) Qu observaciones se le pueden hacer a G?
b) Caracterizar la Gramtica anterior.
c) Encontrar 6 cadenas del Lenguaje L(G).

13.- Caracterizar la Gramtica con composiciones P = {S
AB, A aA, A a, B Bb, B b} y o
0
= { S }.

14.- Sean N = { S, A, B }, T = { a, b }, o
0
= { S }. Para cada
inciso caracterizar el Lenguaje generado por la Gramtica
sealada y mencionar si existe algn error en las
especificaciones.
a) P = { S A | B, A abA | c, B ccB | ab }.
b) P = { S AA | B, A aaA | aa, B bB | b }.
c) P = { S AB | AA, A aB | ab, B b }.
d) P = { S AS | aA, A a, B ba }.

15.- Caracterizar la Gramtica con P = { S xSz, S ySz,
S } y o
0
= { S }. Es la anterior una Gramtica
decidible?

16.- Disear la Gramtica que produce cada uno de los
L(G) enunciados.
a) L(G) = { 0
n
1
n
| n e }.
b) L(G) = { 0
n
1
n
| n e
o
}.
c) L(G) = { 0
m
1
n
| m, n e }.

17.- Disear la Gramtica Formal que produce el Lenguaje
L = {(ab)*c
2
}.

18.- Disear para cada inciso una Gramtica que genere
todas las cadenas de bits con las siguientes caractersticas:
a) Con una cantidad par de 0 y adems con una
cantidad par de 1.
b) Con igual cantidad de 0 que de 1.
c) Con ms 0 que 1.
d) Con desigual cantidad de 0 que de 1.

19.- Disear una Gramtica Regular que produzca el
Lenguaje L = { 01, 10 }
+
con T = { 0, 1 }.

20.- Disear la Gramtica Regular que produzca el
Lenguaje L = { a*b } { a } a partir del Alfabeto E = { a, b }.

21.- Demostrar que L(G) = { a
m
b
m
c
n
| m, n c } es un
Lenguaje Libre de Contexto.

22.- Demostrar que L(G) = { 0
n
1
n
| n c } no es Lenguaje
Regular.

23.- Expresar al menos 5 de las reglas de produccin ms
comunes de Lenguaje C en BNF y otras 4 reglas de Java o
Pascal en Diagramas de Sintaxis. Qu relacin existe
entre las nomenclaturas BNF y BNFE?

24.- Disear las composiciones en BNF para una Gramtica
que genere todos los nmeros reales o flotantes vlidos, en
este caso sin tomar en cuenta el tipo de Gramtica a
emplear.

25.- Disear una Gramtica Regular en BNF para cada
inciso, que produzca los siguientes tokens:
a) Identificadores vlidos en Lenguaje C.
b) Nmeros enteros decimales sin signo.
c) Nmeros enteros decimales (con o sin signo).
d) Nmeros reales decimales (con o sin signo).
e) Nmeros enteros hexadecimales sin signo en
ensamblador para microprocesadores de Intel.

Teora de Autmatas y Lenguajes Formales
Pgina 3


26.- Dada la Gramtica con las composiciones del conjunto
P = { <nmero> ::= <entero> | <real>,
<entero> ::= <dgito> | <entero> <dgito>,
<real>::= <entero>.<entero> |
<entero>.<entero>E<exp> | <entero> E <exp>,
<exp> ::= <entero> | <signo> <entero>,
<signo> ::= + | -,
<dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }
en donde <nmero> es el smbolo inicial; especificar qu
inconvenientes tiene la Gramtica, respecto a la produccin
de nmeros vlidos segn los criterios empleados en el
desarrollo de compiladores actuales.

27.- Empleando la misma Gramtica del inciso anterior
evaluar tanto la derivacin por la izquierda como por la
derecha, para las cadenas 0.27 y 6E-3.

28.- Demostrar con un rbol de derivacin, si esto fuera
posible, que la cadena a
2
b
2
a
2
es una cadena del Lenguaje
producido por la Gramtica con P = { S aAS | a, A SS |
SbA | ba }, con smbolo inicial S.

29.- Dada la Gramtica con G = ( { S }, { a, b, c }, { S
abS, S bcS, S bbS, S a, S cb }, { S } ), construir
los rboles de derivacin para cada una de las cadenas:
a) b
3
cb
2
a d) ab
2
c
2
ab
b) ab
2
ac
2
bab e) bcb
5
ca
c) bcab
5
cb f) (ab)
3
b
4
cb

30.- Desarrollar una oracin o sentencia vlida de un
Lenguaje natural, como el castellano, por medio de un rbol
de derivacin y utilizando las reglas de produccin
adecuadas, aprendidas durante la primaria.

31.- Disear el rbol de derivacin para la expresin tomada
del cdigo de un programa ( a + b ) * c. Cules seran su
rbol de anlisis sintctico y su rbol sintctico?
Las composiciones a emplear deben ser deducidas por el
alumno en base a sus conocimientos sobre programacin.

32.- Disear un rbol de sintaxis y otro de anlisis sintctico
que correspondan a la siguiente cadena tomada de un
programa en Lenguaje C: discrim = b * b - 4 * a * c. Definir
las reglas usadas.

33.- Determinar si G es ambigua o unvoca: G = ( { E }, { (,
), +, *, id }, { E E + E | E * E | ( E ) | id }, { E }). En este
caso, como la variedad de identificadores vlidos es muy
grande, se considera en la teora de compiladores, para
generalizarlos, como si id fuera un terminal definido.

34.- Dada la Gramtica con P = { A 0 B B, B 1 A | 0 A |
0 } con A como smbolo inicial, determinar si es ambigua o
unvoca y justifquese la respuesta.

35.- Demostrar que la Gramtica con P = { <entero> ::=
<dgito> | <entero> <entero>, <dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 } es ambigua y encontrar otra equivalente y no
ambigua.

36.- Determinar si son ambiguas las siguientes Gramticas:
a) P = { S + S S | - S S | a }.
b) P = { S ( S ) S | c }.
c) P = { S S ^ S | a }.

37.- Demostrar que la Gramtica con N = { S }, T = { i, c, t,
e, s}, P = { S ictS | ictSeS | s } y o
0
= { S } es ambigua y
explicar las implicaciones que tiene ese hecho.

Teora de Autmatas y Lenguajes Formales
Pgina 4


38.- Disear las reglas de produccin para un compilador
que evale sin que exista ambigedad la exponenciacin
mltiple (a^b^c^d ...) y considerando la asociatividad.

39.- Disear una Gramtica Libre de Contexto en la cual se
jerarquicen las cuatro operaciones aritmticas bsicas,
adems de incluir los parntesis y considerando tambin su
asociatividad. Llmese <expresin> al smbolo inicial.

40.- Convertir la Gramtica Libre de Contexto a su Forma
Normal de Chomsky (CNF):
P = { A xy | Bx | xEx, D xx | yB | xE,
B zC | DE | E, E EAx | yCy,
C DC | xyF | FA | y, F AC | B }.

41.- Convertir a la Forma Normal de Chomsky (CNF)
equivalente la siguiente Gramtica Libre de Contexto:
N = { A, B, C, D, E, F } T = { x, y } o
0
= { A }
P = { Axy, BDEF, Cy, EFA,
ABx, CDC, Dxx, EyCy,
AxEx, CxyF, DyB, FAC,
BzC, CFA , DxE, FB }.

42.- (Tarea Adicional de la primera parte).- Redactar una
investigacin de al menos dos cuartillas para cada caso
sobre las aplicaciones de las Gramticas Formales en:
a) Diseo de las etapas de anlisis en un compilador para
un Lenguaje de Programacin, como C, Java o Pascal.
b) Procesamiento de Lenguajes Naturales en el rea de la
Inteligencia Artificial.
c) Expresiones Regulares en algoritmos de bsqueda de
cadenas en Lenguajes de programacin como Perl.

FIN DE LA PRIMERA PARTE DEL CURSO
Aplicar examen departamental parcial
43.- Dibujar el diagrama de transicin de la Mquina de
Estado Finito que corresponde a cada inciso, adems de
expresar los seis conjuntos que forman la representacin de
la tupla para M.
a)

b)


44.- Determinar cules son los conjuntos que determinan la
descripcin formal para las siguientes Mquinas de Estado
Finito, adems de las tablas de transicin para cada inciso.
a)

Teora de Autmatas y Lenguajes Formales
Pgina 5


b)


45.- Establecer las transiciones (estados y cadenas de
salida) que resultan al introducir las siguientes cadenas de
entrada, referidas a las Mquinas de los problemas 42 y 43.
a) babccab en 43a) c) xyxyyxyxxy en 44a)
b) zxyzxzyz en 43b) d) bbabbbaaba en 44b).

46.- Disear una Mquina de Estado Finito que funcione
como restador binario en serie y otra que se comporte como
un multiplicador binario en serie, para operar con cadenas
de bits de la misma longitud. Justificar las respuestas.

47.- Disear una Mquina de Estado Finito, que tambin
sea Autmata de Estado Finito, con las siguientes
caractersticas:
I = {a, b, c}, S = {A, B, C, D}, o
0
= {A}.

48.- Dado el siguiente diagrama de transicin determinar:
a) Se puede transformar esta Mquina en un
Autmata Finito?
b) Qu sistema real representa?

49.- Disear un Autmata Finito con I = { a, b } que acepte
cadenas con una cantidad impar de letras a.

50.- Disear un Autmata de Estado Finito que acepte las
cadenas de bits que contienen el infijo 10.

51.- Disear un Autmata de Estado Finito que acepte las
cadenas de bits que contienen el infijo 101.

52.- Disear un Autmata Finito con I = { 0, 1 } que acepte
los arreglos que inicien con 011.

53.- Disear un Autmata Finito que acepte todas las
cadenas de bits que finalicen con 00. Mostrar el resultado
por medio de las tres representaciones posibles para el
modelo formal.

54.- Disear un Autmata Finito que acepte cadenas no
nulas formadas con los smbolos del conjunto I = { a, b, c }
y que no contengan ni a ni c.

55.- Disear un Autmata de Estado Finito que acepte las
cadenas de bits con una cantidad de 0 igual a un mltiplo
de 2 de 3.

56.- Disear un Autmata Finito con I = { a, b } que acepte
las palabras en las que siempre que aparezca una b, est
seguida necesariamente por una a.

57.- Determinar el Autmata Finito que acepta cada uno de
los siguientes Lenguajes, considerando I = { a, b, c }:
a) C d { (a, b, c)
*
}
b) { } e) { a
*
b
+
c
*
}
c) { a, b, c } f) { bca
*
} { ac
*
}

Teora de Autmatas y Lenguajes Formales
Pgina 6


58.- Dado el conjunto I = { a, b } disear un diagrama de
transicin del Autmata Finito para cada uno de los
Lenguajes expresados en los siguientes incisos:
a) L = { (ab)
+
} { a }.
b) L = { ab* } { ab*a }.
c) L = { a (a,b)* } { b (a,b)* }

59.- Disear un Autmata Finito en cada inciso de acuerdo
a las entradas y las cadenas aceptadas que se indican.
a) I = {+, *}. Cadenas que contienen +** *++.
b) I = {w, z}. Cadenas que terminen en wz o en z
2
w.

60.- Demostrar que no es posible construir un Autmata de
Estado Finito que al recibir como entrada cualquier cadena
de bits, acepte la cadena que contiene exactamente la
misma cantidad de 0 que de 1.

61.- Comparar entre el diseo de una mquina para venta
de refrescos implementada con los modelos de Autmata y
de Mquina de Estado Finito para descubrir la diferencia
entre las dos herramientas matemticas. Para fines
didcticos considrese el caso de un refresco con un coste
de $10 y empleando monedas de 1$, $2, $5 y $10 como
posibles entradas.

62.- Qu cadenas acepta el siguiente Autmata Finito?

63.- Determinar el Lenguaje aceptado por cada uno de los
siguientes Autmatas Finitos, observando que dos de ellos
son No Determinsticos.


64.- Caracterizar el Lenguaje aceptado por los siguientes
Autmatas Finitos No Determinsticos:

Teora de Autmatas y Lenguajes Formales
Pgina 7


65.- Qu cadenas acepta el siguiente AFD?


66.- Demostrar que el Lenguaje de todas las cadenas de
unos y ceros que tienen al menos dos ceros consecutivos
es un Lenguaje Regular.

67.- Disear una Gramtica Regular con T = { a, b } que
genere todos los arreglos que finalicen con ba. El diseo se
deber hacer a partir de un Autmata Finito.

68.- Disear por medio de un Autmata Finito una
Gramtica Regular con T = { a, b } que genere todas las
cadenas que contengan el infijo ba.

69.- Disear por medio de un Autmata Finito la Gramtica
Regular que produce todas las cadenas que representan
los nmeros enteros hexadecimales sin signo en la notacin
de ensamblador para microprocesadores de Intel.

70.- Construir una Gramtica Regular que genere el
Lenguaje reconocido por el Autmata Finito determinado.
a)

b)


71.- Disear el AFD que acepte las cadenas producidas por
la Gramtica con las composiciones P = { A xB | yA, B
yC | x, C xB | y } con smbolo inicial A.

72.- Disear un AFD que acepte las cadenas del Lenguaje L
(G) para la Gramtica con reglas P = { A mA | nB, B
nC | m, C mC | n } con A como inicial. Caracterizar el
Lenguaje producido.

73.- Disear un AFD que reconozca las cadenas del
Lenguaje generado por la Gramtica G = ( { A, B }, { 0, 1 },
{ A 0A | 0B | 1, B 1B | 0 }, { A } ). Encontrar la
caracterizacin del Lenguaje L(G).

74.- Disear un AFD que acepte las cadenas del Lenguaje
Formal L(G) para la Gramtica con reglas P = { A mB |
nC | m, B mA | n, C nB | nC | m | n }. El smbolo inicial
es A.

75.- Disear un AFD que acepte las cadenas del Lenguaje
L(G) para la Gramtica con reglas P = { A aA | uB | a, B
oA | a | o | u } con A como smbolo inicial.

76.- Disear un AFD que acepte las cadenas del Lenguaje
L(G) para la Gramtica con reglas P = { X aX | bY | b, Y
cY | a | c } con X como smbolo inicial. Caracterizar el
Lenguaje L(G).

Teora de Autmatas y Lenguajes Formales
Pgina 8



77.- Sea L el conjunto de arreglos aceptados por el AFD
mostrado al final del enunciado. Constryase un AFD que
acepte los arreglos L
R
= { x
n
... x
2
x
1
| x
1
x
2
... x
n
e L }
adems de caracterizar L y L
R
. Se inicia el diseo en el que
era el estado de aceptacin original y se traza el recorrido
en sentido opuesto hasta llegar al que se tena como el
estado inicial. Finalmente se convierte el AFND en un AFD.


78.- Disear para cada inciso, el diagrama de transicin del
Autmata Finito que acepta las palabras, resultado de las
operaciones indicadas en los correspondientes Lenguajes.


79.- Disear un Autmata Finito con transiciones en el
que con I = { a, b } se acepte el Lenguaje L = {ab*}
{(ab)*}. Cmo sera la versin del Autmata Finito que
acepta ese mismo Lenguaje pero sin transiciones ?

80.- Disear para cada inciso el Autmata de Pila que
acepte el Lenguaje que se describe:
a) L = { 0
n

1
n
| n e
o
}.
b) L = { s | s sea cualquier expresin aritmtica que
contenga parntesis correctamente anidados }.
c) L = { x
m

y
n
| m n ; m, n e }.
d) L = { x
m
y
n
z
m
| m, n e }.
e) L = { x
n
y
n
z
n
| n e }.
f) L = { w
m
x
n
y
n
z
m
| m, n e }.
g) L = { w
m
x
n
y
m
z
n
| m, n e
0
}.
h) L = { ( a, b )* | Cantidad de a Cantidad de b }.

81.- Sea la Gramtica Libre de Contexto definida por las
composiciones P = { A zBCx, B xAz, B zBw, B z,
C Cy, C zy } y smbolo inicial A. Disear el Autmata
de Pila que acepta el Lenguaje L(G).

82.- Sea la Gramtica Libre de Contexto definida por las
composiciones P = { A aBA | a, B AbB | AA | ba } y
smbolo inicial A. Disear el Autmata de Pila que acepta el
Lenguaje L(G).


Problemas propuestos por Abelardo Gmez Andrade.
e-mail: abelardo.gomez@red.cucei.udg.mx

Tmense como referencia para el curso CC209 y los
exmenes departamentales de la asignatura.

You might also like