INICIO
Metodología de la Investigación
Conceptos
Lenguajes Formales & Teoría de Autómatas
Conceptos
Enlaces con contenido para el curso
Lenguajes Formales & Teoría de Autómatas
 
Curso: LENGUAJES FORMALES Y TEORÍA DE AUTÓMATAS
Código: 090454
Pre-requisitos: 090411,090412
PRESENTACION
Este curso es un contacto importante con las nociones y conceptos del proceso computacional o proceso algorítmico. Forma las bases para los cursos de complejidad y compiladores. Incluye el estudio de técnicas de reconocimiento de patrones, procesos básicos computacionales, análisis léxico y sintáctico, así como una base para computabilidad.
OBJETIVOS GENERALES.
Proporcionar al estudiante la base científica para resolver problemas importantes dentro de la lógica algorítmica, fundamentales para la construcción de compiladores.

OBJETIVOS ESPECIFICOS.
Que el estudiante se introduzca en el análisis léxico, como método de solución de problemas de renacimiento de patrones.

Que el alumno cuente con una idea básica de procesos computacionales.
CONTENIDO PROGRAMÁTICO DEL CURSO

1. Unidad Lenguaje
1.1 Definición de lenguaje, orientada a la formalidad, operaciones con lenguajes.
1.2 Conceptos básicos orientados a la teoría de compiladores.
1.3 Terminología asociada a la definición conceptual de lenguaje.
1.4 Esquema y simbología de definición de lenguaje.

2. Unidad Lenguajes formales.
2.1 Conceptos básicos.
2.2 Operadores básicos * y +.
2.3 Primera definición de lenguaje. Lenguaje formal. Lenguaje regular.
2.4 Expresiones regulares.
2.5 Precedencia en las expresiones regulares.
2.6 Álgebra de expresiones regulares.
2.7 Diseño de expresiones regulares.

3. Unidad Autómatas finitos.
3.1 Conceptos básicos.
3.2 Definición formal de autómata finito. Autómatas finitos en representación gráfica.
3.3 Análisis de la entrada a través de un autómata finito. Lenguaje aceptado por un autómata finito.
3.4 Ejemplos de autómatas orientados a diseñar la etapa de léxico de un lenguaje de
3.5 programación.
3.6 Tipos de autómatas.
3.7 Autómata finito determinista.
3.8 Autómata finito no determinista.
3.9 Análisis de la entrada a través de un autómata finito no determinista.
3.10 Autómata con transiciones-E
3.11 Análisis de la entrada a través de un autómata finito con transiciones-E.
3.12 Autómata no determinista y con transiciones-E.
3.13 Conversión de autómata finito no determinista a autómata finito determinista.
3.14 Conversión de autómata finito con transiciones-E a autómata finito determinista.
3.15 Conversión de expresión regular a autómata finito no determinista.
3.16 Conversión de expresión regular a autómata finito determinista.

4. Unidad Gramáticas.
4.1 Conceptos básicos.
4.2 Definición formal.
4.3 Convenciones de notación.
4.4 Notación simplificada.
4.5 Lema de Arden.
4.6 Derivaciones, Árboles de direvación.
4.7 Lenguaje generado por una gramática.
4.8 Diseño de gramáticas. Técnicas para el diseño de gramáticas. Modularidad de las gramáticas. Límites de las gramáticas.
4.9 Diseño arbitrario de gramáticas.
4.10 Primer acercamiento a la jerarquía de Chomsky para gramáticas.
4.11 Gramática regular implementada en un autómata finito no determinista.

5. Unidad Autómatas de pila
5.1 Conceptos básicos.
5.2 Definición formal.
5.3 Jerarquía de lenguajes.
5.4 Reconocimiento de una cadena en un autómata de pila.
5.5 Seguimiento en formato de corrida de escritorio.
5.6 Gramáticas independientes del contexto, implementadas en autómatas de pila.

6. Unidad Máquina de Turing
6.1 Conceptos básicos.
6.2 Máquina de Turing como realizadora de cálculos.
6.3 Reconocimiento de una cadena de entrada.
6.4 Máquina de Turing como reconocedora de lenguajes.
6.5 Diseño de la máquina de Turing.
6.6 Técnicas para la construcción de las máquinas de Turing.

7. Unidad Expresiones, primer acercamiento.
7.1 Consideraciones para generar expresiones en lenguajes de programación.
7.2 Conceptos básicos.
7.3 Términos dentro de una expresión.
7.4 Tipos de operadores.
7.5 Prioridad o precedencia.
7.6 Notaciones.
7.7 Generación de notaciones a través de árboles binarios.
7.8 Recorrido del árbol.
7.9 Importancia de la notación posfija.
7.10 Algoritmo para convertir de notación fija a notación posfija.
7.11 Algoritmo para evaluar notaciones pos fijas.
7.12 Aplicación de los algoritmos de conversión y evaluación en un programa.
7.13 Comentarios finales.

EVALUACIÓN

Primer Parcial 15 puntos
Segundo Parcial 15 puntos
Laboratorios, tares y trabajos de investigación 20 puntos
Examen Final 50 puntos
Nota Final 100 puntos

BIBLIOGRAFIA

Libro de Texto
Teoría de Autómatas y Lenguajes Formales", Dean Kelley. Ed. Prentice Hall, 1995.

Brookshear, J. Glenn “Teoría de la Computación, Lenguajes Formales, Autómatas y Complejidad”, Editorial Addison Wesley Iberoamérica, primera edición USA 1993.

Hopcroft, John y Jeffey Ullman, “Introducción a la Teoría de Autómatas, Lenguajes y Computación”. CECSA, tercera reimpresión, México 1997
“Compiladores. Principios, técnicas y herramientas”, Aho A.V., Sethi R,. & Ullman J.D. Ed: Addison – Wesley Iberoamericana. 1990.