Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lenguaje y Automatas
Lenguaje y Automatas
LENGUAJES
AUTÓMATAS
Unidad 1
INTRODUCCIÓN A LA
TEORÍA DE LENGUAJES
FORMALES
Unidad 2
Expresiones regulares
Material compilado con fines
académicos, se prohíbe su
Unidad 3
reproducción total o parcial sin
la autorización de cada autor.
Autómatas finitos
Temario
Unidad 1.
Introducción a la teoría de lenguajes formales
1.1. Alfabeto
1.2. Cadenas
1.3. Lenguajes
1.4. Tipos de lenguajes
1.5. Herramientas computacionales ligadas con lenguajes
1.6. Estructura de un traductor
1.7. Fases de un compilador
Unidad 2.
Expresiones regulares
2.1. Definición formal de una ER
2.2. Operaciones
2.3. Aplicaciones en problemas reales
Unidad 3.
Autómatas finitos
3.1. Definición formal
3.2. Clasificación de AF
3.3. Conversión de un AFND a AFD
3.4. Representación de ER usando AFND
3.5. Minimización de estados en un AF
3.6. Aplicaciones (definición de un caso de estudio)
2
UNIDAD 1
INTRODUCCIÓN A LA TEORÍA DE LENGUAJES FORMALES
Un lenguaje puede ser visto como un sistema adecuado para expresar ciertas ideas,
hechos y conceptos. Ahora bien, para formalizar la noción de un lenguaje se deben
cubrir todas las variedades como los lenguajes naturales y los de programación.
Con estas líneas introductorias que resaltan algunas ideas sobre el lenguaje, el
alfabeto y la palabra comenzamos la introducción al tema. Además de abordar con
más detalle estos conceptos, se mencionan algunas herramientas computacionales
que se relacionan con los lenguajes, se discute la estructura de un traductor y se
examinan las fases de un compilador.
1.1.
Alfabeto
De manera general, según de Castro (2004), podemos decir que “la computación es
la manipulación de secuencias de símbolos” (p. 5). Sin embargo, de Castro (2004)
argumenta que para que esto sea posible, desde el punto de vista teórico, se
necesita que el conjunto de símbolos (inputs/outputs) pueda ser identificado en
tiempo finito. Por lo tanto, el conjunto de símbolos debe ser finito y, a su vez, que sus
secuencias tengan una longitud finita.
Asimismo, Cueva Lovelle (2001) explica que los símbolos antes mencionados se
entienden como una entidad abstracta que normalmente son “letras (a, b, c, …,
z), dígitos (0, 1, 2, …,9) y otros caracteres (+, -, *, /, ?, ¡, …)” (p. 3). En este sentido,
Cueva Lovelle (2001) plantea que un conjunto finito de símbolos conforma lo que se
denomina un alfabeto, por ende, un conjunto no vacío. Un alfabeto arbitrario se
denota con la letra ∑. Un alfabeto también se conoce como vocabulario (V).
3
Es común definir a los alfabetos al enumerar los símbolos que contienen. A continua-
ción se muestran ejemplos de alfabetos:
Σ = {a, b, c, d, e, f,…,x, y, z}
Σ = {a, b, c, d, 0, 1, 2, 4,*,#,+}
Σ = {0, 1}
Σ = {if,t hen, begin, end, else,;,= >}
Para entender mejor qué representa este concepto y poder ligarlo claramente con los
lenguajes formales necesitamos comprender el término cadenas, el cual se abordará
en la siguiente sección.
1.2.
Cadenas
• 001
• 1011
• 0101011100
• 00011110001
4
|001|=3
|1011|=4
|0101011100|=10
|00011110001|=11
Existe además una cadena especial, la cual se llama cadena vacía pues no
contiene ningún símbolo, generalmente esta cadena se denota a través de
la letra λ, y su longitud se expresa como: |λ|=0 (de Castro, 2004).
Otras operaciones que se pueden llevar a cabo con cadenas se pueden consultar
en la siguiente lectura:
5
(Cueva Lovelle, 2001). Por ejemplo, si consideramos al alfabeto ∑ = {a}, es decir, un
alfabeto con una sola letra, entonces su universo de discurso es (que contiene infi-
nitas cadenas):
Hasta este punto ya conocemos los conceptos relacionados con el concepto cadena:
los símbolos y el alfabeto. Por lo tanto, es viable continuar con la siguiente sección
que aborda el tema de los lenguajes.
1.3.
Lenguajes
Dos casos especiales son el lenguaje vacío y el lenguaje de todas las cadenas sobre
∑, los cuales se expresan de la siguiente manera:
L=
L= ∑*
Asimismo, Cueva Lovelle (2001) afirma que “el lenguaje vacío no debe confundirse
con un lenguaje que contenga una sola cadena y que esta sea la cadena vacía (λ)” (p.
6). La diferencia se puede ver en la cardinalidad (número de elementos) del lenguaje,
como se observa a continuación:
|{ }|=0
|{λ}|=1
∑={a,b,c},L={a,aba,aca,abb}
∑={a,b,c},L={a,aa,aaa,…}
6
Ahora bien, también se pueden definir operaciones, considerando el hecho de que
“los lenguajes sobre ∑ son subconjuntos de ∑*. Es decir, las operaciones usuales
entre conjuntos también son válidas entre lenguajes” (de Castro, 2004, p. 11). Por
ejemplo, como plantea de Castro (2004, p. 11), si consideramos que A y B son len-
guajes sobre ∑, entonces los siguientes también son lenguajes sobre ∑:
1.4.
Tipos de lenguaje
7
sus características, los primeros quedan fuera del alcance de esta materia. Nos en-
focaremos en los segundos, es decir, en los lenguajes formales.
Peinado (2010) plantea que un lenguaje formal es “un conjunto (finito o infinito) de
cadenas finitas de símbolos primitivos […] Dichas cadenas se constituyen gracias a
un alfabeto ∑ y a una gramática” (p. 1). Antes de continuar, según Peinado (2010) es
importante mencionar que la gramática es “un conjunto finito de reglas para formar
cadenas finitas juntando símbolos del alfabeto” (p. 1).
Alfonseca Cubero, E., Alfonseca Moreno, M. y Moriyón Salomón. R. (2007). Teoría de autóma-
tas y lenguajes formales (pp. 153-160). Madrid: McGraw-Hill / Interamericana de España.
Finalmente, el tipo de lenguaje que nos interesa analizar en esta materia es el lengua-
je regular, el cual se distingue por presentar las siguientes características (Peinado,
2010, p. 3):
8
• Puede ser descrito mediante una expresión regular (expresar de forma com-
pacta cómo son todas las cadenas de símbolos que le pertenecen).
• Puede ser generado mediante una gramática regular (obtener todas las ca-
denas de símbolos que le pertenecen).
• Puede ser reconocido mediante un autómata finito (saber si una cadena de
símbolos pertenece a él o no).
1.5.
Herramientas computacionales ligadas con lenguajes
Cueva Lovelle (2001) explica que algunas de las herramientas computacionales que
se vinculan a los lenguajes son los traductores, los preprocesadores, los compilado-
res y los intérpretes. En esta sección, los describiremos brevemente.
Traductores
Gálvez y Mora (2005) argumentan que un traductor es “un programa que traduce o
convierte desde un texto o programa escrito en un lenguaje fuente hasta un texto
o programa escrito en un lenguaje destino produciendo […] mensajes de error. Los
traductores engloban tanto a compiladores como a intérpretes” (p. 2). La figura 2
ejemplifica el esquema básico que constituye a un compilador/intérprete.
Preprocesadores
Pérez y Monroy (s.f.) indican que los preprocesadores “son un caso particular de
traductor en el cual se traduce un lenguaje de alto nivel a otro, cuando el primero
no puede pasar a lenguaje máquina directamente”.
9
Compiladores
Gálvez y Mora (2005) mencionan que un compilador “es aquel traductor que tiene
como entrada una sentencia en lenguaje formal y como salida un fichero ejecutable,
es decir, realiza una traducción de alto nivel a código máquina” (p. 3). La figura 3
ejemplifica un compilador.
Intérpretes
10
Si deseas profundizar en el tema, revisa los siguientes videos sobre compiladores
e intérpretes:
1.6.
Estructura de un traductor
11
Figura 4. Aspectos de análisis y síntesis de un traductor. Fuente: elabo-
ración propia con información de Gálvez y Mora (2005).
Figura 5. Esquema por etapas de un traductor. Fuente: Gálvez y Mora (2005, p. 11).
Ahora bien, según Gálvez y Mora (2005), “cualquiera de las fases del proceso
de análisis puede emitir mensajes de error, derivados de fallos cometidos por el
programador en la redacción de los textos fuente” (p. 12). Cabe mencionar que tanto
el análisis como la síntesis son etapas que acompañan a un compilador, tema que
se abordará en la siguiente sección.
12
1.7.
Fases de un compilador
Por otro lado, Gálvez y Mora (2005) detallan el proceso de la segunda fase:
La etapa final incluye aquellas fases del compilador que dependen de la má-
quina destino y que, en general, no dependen del lenguaje fuente sino solo
del lenguaje intermedio. En esta etapa se encuentran aspectos de la fase de
generación de código, además de su optimización, junto con el manejo de
errores necesario y el acceso a las estructuras intermedias que haga falta.
La figura 6 resume las etapas o fases de un compilador y las actividades que eng-
loba.
13
Figura 6. Fases y tareas que engloba un compilador.
14
UNIDAD 2
EXPRESIONES REGULARES
2.1.
Definición formal de una ER
15
Gómez y Pardo (2015, p. 26) manifiestan que deben tomarse en cuenta las siguientes
reglas:
16
c)
2.2.
Operaciones
De Castro (2004) revela que las operaciones básicas que se pueden definir sobre
las expresiones regulares son las siguientes:
• Concatenación
• Unión
• Clausura de Kleene
Gómez Pérez, D. y Pardo Vasallo, L. M. (2015). Teoría de autómatas y lenguajes formales (p. 28). España:
Universidad de Cantabria. Recuperado de: https://personales.unican.es/pardol/Docencia/TALF2012.pdf
17
2.3.
Aplicaciones en problemas reales
Otra aplicación en esta área es la comprobación vía ER, la cual, empleando las pa-
labras de BBVA (2016):
Determina si los datos llenados por los usuarios en un formulario son correc-
tos o no. Alguien puede utilizar un breve formulario para recabar el nombre,
los apellidos y el teléfono de contacto de sus clientes, y darse el caso de que
alguno de ellos no agregue la información correcta en alguno de los cam-
pos. La forma rápida de comprobarlo es a través de una expresión regular.
Finalmente, la expresión regular está ligada con los autómatas. Es decir, para toda
ER hay un autómata que acepta el lenguaje simbolizado por esa expresión. Por lo
tanto, Hopcroft, Motwani y Ullman (2008) sostienen que las expresiones regulares
definen “una notación estructural que permite describir los mismos patrones que se
pueden representar mediante los autómatas finitos. Se emplean en muchos tipos de
software, incluyendo herramientas para la búsqueda de patrones, por ejemplo, en
textos o en nombres de archivo” (p. 29).
18
UNIDAD 3
AUTÓMATAS FINITOS
3.1.
Definición formal
algo que pretende imitar las funciones propias de los seres vivos, especial-
mente relacionadas con el movimiento, por ejemplo, el típico robot antropo-
morfo. En el campo de los traductores, los procesadores, los compiladores
y los intérpretes, lo fundamental no es la simulación del movimiento, sino la
simulación de procesos para tratar información (p. 34).
Siguiendo esta misma línea, Hopcroft et al. (2008) señalan que “la teoría de autóma-
tas es el estudio de dispositivos de cálculo abstractos, es decir, de las “máquinas”
(p. 1).
Jurado Málaga (2008, p. 40) afirma que un autómata finito determinista es una tupla
AFD=(∑,Q,f,q0,F), donde:
19
Si bien, Hopcroft et al. (2008) argumentan que “especificar un AFD utilizando esta
quíntupla es lo ideal, el dar una descripción detallada de la función de transición re-
sulta una tarea tediosa y complicada de leer. Por ello, hay disponibles dos notaciones
para describir a los autómatas” (p. 40), es decir, mediante un diagrama de transiciones
(diagrama de Moore) o una tabla de transiciones.
Consideremos un AFD que acepte únicamente todas las cadenas de ceros y unos
que contengan la secuencia 01 en cualquier posición de la cadena (ver figura 7):
Figura 7. Diagrama de transiciones del AFD que acepta todas las cadenas que con-
tienen la subcadena 01. Fuente: Hopcroft et al. (2008, p. 40).
En este diagrama podemos ver los tres nodos correspondientes a los tres
estados. Hay una flecha etiquetada como Inicio que entra en el estado
inicial, q0, y un estado de aceptación, q1, representado mediante un doble
círculo. De cada estado sale un arco etiquetado con 0 y otro con 1 (aunque
los dos arcos se han combinado en uno con una doble etiqueta en el caso
de q1) (p. 40).
20
Figura 8. Tabla de transiciones del AFD. Fuente: Hopcroft et al. (2008, p. 41).
3.2.
Clasificación de AF
Por su parte, Jurado Málaga (2008) plantea las distinciones entre los autómatas de-
terministas y no deterministas:
21
Al igual que con los AFD, enseguida se presenta un ejemplo de un AFND, conside-
rando una tabla y un diagrama de transición (ver figuras 9 y 10).
22
3.3.
Conversión de un AFND a AFD
Los AFND y los AFD tienen el mismo poder computacional (esto no ocurre
en otros niveles de la jerarquía de los autómatas), es decir, pueden resolver
los mismos problemas. Por lo tanto, dado un AFND siempre es posible en-
contrar un AFD que sea equivalente a él (p. 52).
23
Una descripción más detallada de este proceso se puede encontrar en Jurado Má-
laga (2008, pp. 52-55), que además de ejemplificar la conversión de un AFND a un
AFD, este último es minimizado. El tema de minimización de estados de un AFN se
verá en el subtema 3.5. Para ejemplificar el proceso de conversión descrito consi-
deremos el AFND a partir del diagrama de transiciones de la figura 11, cuyo estado
inicial es q0 = A y estado final es qm = E :
Figura 11. Diagrama de transición para un AFND. Fuente: Jurado Málaga (2008, p. 53).
Figura 12. AFD equivalente al AFND de la ilustración previa. Fuente: Jurado Málaga (2008, p. 54).
24
En ocasiones, la conversión de un autómata finito no determinista a un autómata
finito determinista puede resultar complejo, sin embargo, contar con un AFD, dado
un estado inicial, nos permite tener solamente un estado para moverse, lo cual, sim-
plifica en gran medida las decisiones sobre el autómata.
3.4.
Representación de ER usando AFND
25
ER = un elemento del alfabeto:
Figura 15. Elemento del alfabeto. Fuente: Jurado Málaga (2008, p. 59).
Unión de ER:
Figura 16. Unión de expresión regular. Fuente: Jurado Málaga (2008, p. 59).
Concatenación de ER:
Figura 17. Concatenación de expresión regular. Fuente: Jurado Málaga (2008, p. 59).
Potencia de una ER:
Figura 18. Potencia de expresión regular. Fuente: Jurado Málaga (2008, p. 59).
26
A partir de las expresiones regulares básicas es posible obtener los dia-
gramas asociados con los AFND y, como se mencionaba al inicio, construir
ER más complejas.
3.5.
Minimización de estados en un AF
Ahora bien, Jurado Málaga (2008) argumenta que la minimización no se debe con-
fundir con el concepto de simplificar, el cual “consiste en eliminar estados muertos
o inaccesibles” (p. 43). Antes de presentar el algoritmo para minimizar un autómata
finito determinista, debemos aclarar el concepto de estado equivalente:
27
Figura 19. Minimización de un AFD Fuente: Jurado (2008, p. 44).
Asimismo, las tablas muestran el análisis del comportamiento de todos los estados
con a y b:
28
Como puedes observar, los estados de G_1, a diferencia de los estados de G_2, to-
dos son equivalentes y este comportamiento genera la siguiente partición:
Por lo tanto, el AFD mínimo que se obtuvo a partir del AFD del ejemplo de la figura
12 es el siguiente:
Figura 23. Diagrama de transición del AFD mínimo. Fuente: Jurado Málaga (2008, p. 55).
3.6.
Aplicaciones (definición de un caso de estudio)
29
interfaz web accesible que presenta los contenidos audiovisuales sobre los
autómatas finitos, ante un grupo de 20 alumnos en la materia Matemáticas
computacionales, de una universidad de la Ciudad de México. Si deseas pro-
fundizar en el tema, lee el siguiente artículo:
Salas Rueda, R. A. (2016). Implementación de una interfaz web accesible para el proce-
so de enseñanza-aprendizaje superior. Un caso de estudio sobre los autómatas de esta-
do finito. Revista Iberoamericana de Producción Académica y Gestión Educativa, 3 (5). Re-
cuperado de: https://www.pag.org.mx/index.php/PAG/article/view/439/478
30
Escanea el código QR para ver el documento relacionado
o da clic aquí.
Delgado Reyes, G., Valdés Martínez, J. S. y Guevara López, P. (2011). Autómatas finitos: su aplicación para
describir la trayectoria de un vehículo evasor de obstáculos. Revista de Divulgación Científica y Tecno-
lógica: Aleph Zero, 16 (60). Recuperado de: https://www.researchgate.net/publication/287432309_Auto-
matas_finitos_su_aplicacion_para_describir_la_trayectoria_de_un_vehiculo_evasor_de_obstaculos
31
En conclusión, Jurado Málaga (2008) afirma que “el estudio de los autómatas finitos
se utiliza para modelar el comportamiento de dispositivos mecánicos y también de
sistemas naturales. Concretamente, permite estudiar procesos que dependen de una
historia, es decir, sistemas cuyo comportamiento actual depende del pasado” (p. 40).
32
Referencias.
Barzana (s.f.). IATEI II. Herramientas de análisis del corpus. Recuperado de: https://www.um.es/docencia/
barzana/TEI/Informatica-Aplicada-a-la-Traduccion-Herramientas-de-analisis-del-corpus.html
Delgado Reyes, G., Valdés Martínez, J. S. y Guevara López, P. (2011). Autómatas finitos: su aplicación
para describir la trayectoria de un vehículo evasor de obstáculos. Revista de Divulgación Científica y
Tecnológica: Aleph Zero, 16 (60). Recuperado de: https://www.researchgate.net/publication/287432309_
Automatas_finitos_su_aplicacion_para_describir_la_trayectoria_de_un_vehiculo_evasor_de_obstaculos
Gómez Pérez, D. y Pardo Vasallo, L. M. (2015). Teoría de autómatas y lenguajes formales. España:
Universidad de Cantabria. Recuperado de: https://personales.unican.es/pardol/Docencia/TALF2012.pdf
33
Hopcroft, J. E., Motwani, R. y Ullman, J. D. (2008). Introducción a la teoría de autómatas, lenguajes y
computación. Madrid: Pearson Educación. Recuperado de: https://elibro.net/es/ereader/ieu/52537
Jurado Málaga, E. (2008). Teoría de autómatas y lenguajes formales (pp. 39-52). España:
Universidad de Extremadura: Servicio de Publicaciones / Pedro Cid. Recuperado de:
http://dehesa.unex.es/bitstream/10662/2367/1/978-84-691-6345-0.pdf
Pérez Martínez, A., Fernández Orquín, A., Gutiérrez Vázquez, Y. y Martínez, Y. (2011).
Generación de expresiones regulares para la creación de reglas en aplicaciones de PLN.
Conference: XII Simposio Internacional de Comunicación Social. Santiago de Cuba, Cuba.
Recuperado de: https://www.researchgate.net/publication/233844159_Generacion_de_
expresiones_regulares_para_la_creacion_de_reglas_en_aplicaciones_de_PLN
Salas Rueda, R. A. (2016). Implementación de una interfaz web accesible para el proceso
de enseñanza-aprendizaje superior. Un caso de estudio sobre los autómatas de estado
finito. Revista Iberoamericana de Producción Académica y Gestión Educativa, 3 (5).
Recuperado de: https://www.pag.org.mx/index.php/PAG/article/view/439/478
Universidad Don Bosco (2019). Compiladores. Guía IV. El Salvador: Universidad Don Bosco. Recuperado de:
http://www.udb.edu.sv/udb_files/recursos_guias/informatica-ingenieria/compiladores/2019/ii/guia-4.pdf
34