Computabilidad y Lenguajes Formales (300CIG007)

Información Básica

  • Créditos: 3
  • Horas de Clase: 3 / semana
  • Horas de trabajo independiente: 6 / semana
  • Horas de Laboratorio al semestre:
  • Prerequisitos: Matemáticas Discretas para la Computación (300MAG031)
  • Alcance: Pregrado (??)

Información de Matriculados

  • 2011-1: 10
  • 2010-2: 10
  • 2010-1: 10
  • 2009-2: 10

Descripción del Curso

Este curso reune temas fundamentales de la informática teórica, que son parte indispensable de la formación de un ingeniero de sistemas. En lo referente al estudio de los lenguajes formales, el conocer y aprender a utilizar modelos como las expresiones regulares o los autómatas de estados finitos brinda la posibilidad de ampliar el conjunto de modelos que permiten una representación fiel de diversos aspectos del mundo real. De otro lado, conocer las limitaciones inherentes al concepto de computabilidad descubre una realidad a veces desconocida: que no todos los problemas son susceptibles de ser resueltos algorítmicamente, de hecho, que existe un sinfín de problemas que no pueden ser resueltos mediante un computador. Finalmente, este curso vuelve sobre un elemento muy importante para la práctica de la buena programación, que es el cálculo de complejidades temporales y espaciales de los algoritmos. En conclusión, este curso agrupa temas teóricos fundamentales, que enriquecerán la visión del estudiante acerca de las ciencias de la computación y lo llevarán a aplicar esta ciencia en el desempeño de una ingeniería de calidad.

Objetivos

Al finalizar el curso los participantes podrán:

  • Definir qué es un lenguaje regular y representar dicho lenguaje mediante autómatas de estados finitos deterministas, no deterministas o expresiones regulares.
  • Minimizar un autómata determinista.
  • Demostrar que los autómatas deterministas, los no deterministas y las expresiones regulares son modelos equivalentes.
  • A partir de la descripción de una situación del mundo real o de un sistema, definir un autómata de estados finitos que lo modela.
  • Definir qué es un lenguaje incontextual.
  • Calcular la derivación de una cadena en una gramática incontextual.
  • Dado un lenguaje formal, definir una gramática incontextual que lo genera y dada una gramática incontextual, describir en forma verbal el lenguaje que genera.
  • Convertir una gramática incontextual a la forma normal de Chomsky.
  • Dado un lenguaje incontextual, definir un autómata de pila que lo reconoce y dado un autómata de pila, describir verbalmente cuál es el lenguaje que reconoce.
  • Demostrar que autómatas de pila no deterministas y gramáticas incontextuales son modelos equivalentes.
  • Definir qué es una máquina de Turing.
  • Definir una máquina de Turing que reconoce un lenguaje formal dado y describir verbalmente el lenguaje que reconoce una máquina de Turing dada.
  • Demostrar que la máquina de Turing no determinista tiene el mismo poder expresivo que la determinista.
  • Enunciar la tesis de Church y Turing y argumentar su importancia.
  • Definir qué es un lenguaje decidible, reconocible.
  • Demostrar que un lenguaje dado es decidible y/o reconocible.
  • Enunciar el problema de la parada y demostrar que es indecidible.
  • Definir qué es una reducción entre lenguajes.
  • Definir el lenguaje asociado a un problema de decisión.
  • Definir la clase de Lenguajes P, NP, NP-Completo y PSPACE y demostrar la pertenencia de un lenguaje a alguna de estas categorías.
  • Construir una jerarquía entre las clases de lenguajes estudiadas y argumentar las equivalencias o contenencias entre diferentes clases de lenguajes.
  • Utilizar la definición de las notaciones O, Omega y Theta para mostrar que una función matemática dada está o no acotada por otra mediante cada una de ellas.
  • Aplicar las reglas de sumas y productos para calcular una cota superior de complejidad temporal a partir del pseudocódigo de un algoritmo.
  • Estar en capacidad de evaluar la complejidad temporal y espacial de algoritmos que tienen como estructura de datos principal arreglos, árboles o grafos.

Contenido

Temas SesiónBibliografía
Presentación del curso e Introducción 1 [1,cap 0]
Lenguajes Regulares 2-5 [1,cap 1]
Lenguajes Incontextuales 6-9 [1,cap 2]
Máquinas de Turing 10-12 [1,cap 3]
Decidibilidad 13-15 [1,cap 4]
Reducibilidad 16-17 [1,cap 5]
Clases P, NP y NP-completo 18-20 [1,cap 7]
Notaciones de orden de magnitud 21-23 [1,cap 7]
Complejidad en espacio 24 [1,cap 8]
Complejidad de algoritmos sobre árboles 25-27 [5,cap 6,12]
Complejidad de algoritmos sobre grafos 28-30 [5,cap 22,23,24]

Bibliografía

  1. Sipser M. Introduction to the Theory of Computation. Segunda Edición. Thompson Course Technology. 2006.
  2. Linz P. An Introduction to Formal Languages and Automata. Jones and Bartlett Publishers. 4a.Edición. 2006.
  3. Hopcroft John E., Motwani Rajeev, Ullman, Jeffrey D. Introduction to Automata Theory, Languajes and Computation. 3a Edición. Addison Wesley. 2007.
  4. Harel D. Computers Ltd. What they really can't do. Oxford University Press. 2000.
  5. Cormen T. et. al. Introduction to algorithms. Segunda Edición. MIT Press. 2001.
  6. Aho A., Sethi R., Ullman J. Compilers: principles, techniques and tools. Tercera Edición. Addison-Wesley. 2007.
  7. Garey M. Johnson D. Computers and intractability A guide to the theory of NP-completeness. W.H.Freeman and Company. 1979.
  8. Skiena S. The algorithm design manual. Springer-verlag. 1998.
  9. Herramienta JFLAP, que deben descargar de la página de internet http://www.cs.duke.edu/csed/jflap/ allí deben registrarse para poder bajar el software.

Metodología

El curso es presencial y se impartirá mediante clases magistrales y talleres principalmente. Cada sesión se imparte una temática y se asignan actividades que deben ser realizadas por el estudiante. Antes de iniciar cada tema, se recomendará la lectura de la bibliografía relacionada, de modo que el estudiante tenga una base de conocimiento que le permita participar en el desarrollo del tema durante la clase. También se realizarán clases tipo taller y se ejercitará la expresión oral y escrita mediante actividades dentro y fuera de la clase.

Evaluación

Porcentaje
Tareas,talleres y quices primer parcial 10 %
Primer parcial 20 %
Tareas,talleres y quices segundo parcial 10 %
Segundo parcial 20 %
Tareas,talleres y quices examen final 5 %
Examen final 20 %
Proyecto 15%

INFORMACION DETALLADA DE OBJETIVOS Y CONTENIDO.

Recomendaciones del Director de Programa

Recursos

Reglas del Curso

Integración Curricular

Resultados de Programa
a b c d e f g h i j k
Relevancia 2 3 2 3 1 0 3 2 3 2 1
Objetivos del Programa
1 2 3 4 5
Relevancia 0.25 0.25 0.25 0.25 0.25
  • Habilidades específicas: Uso del sistema operativo Linux, programación en Python, Latex.
  • Conceptos Fundamentales de Computación: Fases de la traducción entre lenguajes: análisis léxico, sintáctico, generación de código, optimización. Árboles y grafos: recorridos, árboles de recubrimiento. Análisis asintótico de complejidad de los limites superior y promedio. Notaciones de orden de complejidad. Máquinas de estados finitos, gramáticas incontextuales, funciones no computables. Definición de clases P y NP, NP-completitud, técnicas de reducción. Autómatas de estados finitos deterministas y no deterministas, expresiones regulares, autómatas de pila. Máquinas de Turing, la jerarquía de Chomsky, la tesis de Church y Turing.
 
materias/test-abet.txt · Última modificación: 2013/11/08 08:21 por alexvalencia
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki