Créditos
6
Tipos
Obligatoria de especialidad (Computación)
Departamento
CS
Más allá de sus aplicaciones, la teoría de la computación es una asignatura fundamental, ya que estudia los límites computacionales de las máquinas con las que trabajamos hoy en día. Además, su estudio ayuda a desarrollar habilidades que son de gran utilidad en cualquier otro ámbito, como la capacidad de describir información sin ambigüedades, realizar un análisis de casos preciso y exhaustivo, o elaborar argumentaciones correctas.
Profesorado
Responsable
- Antoni Lozano Boixadors (antoni.lozano@upc.edu)
- Ilario Bonacina (ilario.bonacina@upc.edu)
Otros
- Arnau Messegué Buisan (arnau.messegue@upc.edu)
- Enrique Romero Merino (eromero@cs.upc.edu)
Horas semanales
Teoría
1.4
Problemas
1.5
Laboratorio
1.2
Aprendizaje dirigido
0.2
Aprendizaje autónomo
5.7
Competencias
Razonamiento
- G9.3 - Capacidad crítica, capacidad de evaluación.
Aprendizaje autónomo
- G7.3 - Aprendizaje autónomo: Capacidad de planificación y organización del trabajo personal. Aplicar los conocimientos adquiridos a la realización de una tarea en función de la pertenencia y la importancia, decidiendo la manera de llevarla a cabo y el tiempo que hay que dedicarle y seleccionando las fuentes de información más adecuadas. Identificar la importancia de establecer y mantener contactos con los compañeros de estudios, con el profesorado y con profesionales (networking). Identificar fórums de información sobre ingeniería TIC, sus avances y su impacto en la sociedad (IEEE, asociaciones, etc.).
Especialidad de computación
- CCO1.1 - Evaluar la complejidad computacional de un problema, conocer estrategias algorítmicas que puedan conducir a su resolución, y recomendar, desarrollar e implementar la que garantice el mejor rendimiento de acuerdo con los requisitos establecidos.
- CCO1.2 - Demostrar conocimiento de los fundamentos teóricos de los lenguajes de programación y las técnicas de procesamiento léxico, sintáctico y semántico asociadas, y saber aplicarlas para la creación, el diseño y el procesamiento de lenguajes.
- CCO1.3 - Definir, evaluar y seleccionar plataformas de desarrollo y producción hardware y software para el desarrollo de aplicaciones y servicios informáticos de diversa complejidad.
- CCO2.2 - Capacidad para adquirir, obtener, formalizar y representar el conocimiento humano de una forma computable para la resolución de problemas mediante un sistema informático en cualquier ámbito de aplicación, particularmente los relacionados con aspectos de computación, percepción y actuación en ambientes o entornos inteligentes.
- CCO3.1 - Implementar código crítico siguiendo criterios de tiempo de ejecución, eficiencia y seguridad.
Objetivos
-
Aprender a clasificar problemas en las clases de complejidad. En particular, aprender técnicas que permiten determinar cuando un conjunto es regular, incontextual, polinómico, exponencial, decidible o semidecidible.
Competencias relacionadas: G9.3, CCO1.2, CCO1.1, -
Aprender a describir lenguajes según sistemas formales como autómatas y gramáticas incontextuales. Conocer las capacidades computacionales de estos formalismos y sus aplicaciones prácticas.
Competencias relacionadas: G9.3, CCO1.2, CCO1.1, CCO1.3, CCO2.2, CCO3.1, -
Resolver problemas teóricos y prácticos de esta materia y hacer presentaciones públicas de las soluciones obtenidas.
Competencias relacionadas: G9.3, CCO1.2, CCO1.1, G7.3,
Contenidos
-
Introducción matemática.
Conjuntos, tuplas, relaciones, funciones y homomorfismos. Métodos de demostración. -
Lenguajes formales.
Alfabetos, palabras, lenguajes, operaciones sobre lenguajes (concatenación, reverso, estrella). Clases de lenguajes y propiedades de cierre. -
Autómatas finitos.
Autómatas finitos deterministas, autómatas finitos indeterministas, autómatas finitos con lambda-transiciones, equivalencia entre modelos de autómatas, operaciones sobre autómatas, minimización de autómatas. -
Expresiones regulares.
Expresiones regulares, equivalencia con autómatas y Lema de Arden, operaciones sobre expresiones regulares. -
Gramáticas incontextuales.
Gramàticas incontextuales, lenguaje generado por una gramática, árbol de derivación, ambigüidad, operaciones sobre gramáticas, depuración de gramáticas. Algoritmo CYK y parsing. -
Autómatas con pila.
Autómatas con pila indeterministas y su equivalencia con los lenguajes incontextuales, autómatas con pila deterministas, autómatas con pila de aceptación única y su equivalencia con los lenguajes incontextuales no ambiguos, operaciones de cierre. -
No regularidad y no incontextualidad.
Demostraciones de no regularidad por el lema de bombeo, por propiedades de cierre y por extensiones distinguidoras. Demostraciones de no incontextualidad por el lema de bombeo para incontextuales y por propiedades de cierre. -
Máquinas de Turing.
Máquinas de Turing deterministas, indeterministas y con varias cintas, equivalencia de máquinas de Turing y algoritmos de alto nivel. Máquina de Turing universal y tesis de Church-Turing. -
Decidibilidad, semi-decidibilidad, computabilidad.
Lenguajes decidibles, lenguajes semi-decidibles, funciones computables, operaciones de cierre, teorema del complementario, teorema de proyección, jerarquía aritmética. -
No decidibilidad, no semi-decidibilidad, no computabilidad.
Diagonalización. Lenguajes semidecidibles pero indecidibles (K, HALT). Reducciones "many-one" para demostrar no decidibilitdad y no semi-decidibilidad, equivalencia entre no semi-decidibilidad y no computabilidad. Ejemplos de roblemas naturales indecidibles: intersección no vacía y ambigüedad de gramáticas incontextuales, totalidad de gramáticas incontextuales. -
Elementos de teoría de la complejidad
Definición formal de las clases P, NP y coNP. Reducciones en tiempo polinómico y NP-completitud. Teoremas de jerarquía de tiempo. Complejidad en espacio. Jerarquía polinómica.
Actividades
Actividad Acto evaluativo
Aprendizaje del tema "Teoría de lenguajes".
Los estudiantes asisten a clases de teoría (T: 2h) y completan los conceptos teóricos introducidos mediante el estudio de la bibliografía recomendada o visualizando los vídeos indicados para este tema (AA: 4h). Además, asisten a clases de resolución de problemas relacionadas con este tema (P: 2h).Objetivos: 3
Contenidos:
Teoría
2h
Problemas
2h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h
Aprendizaje del tema "Lenguajes regulares".
Los estudiantes asisten a clases de teoría sobre este tema (T: 4h) y completan los conceptos teóricos introducidos mediante el estudio de la bibliografía recomendada o visualizando los vídeos de este tema (AA: 7h). Asisten a sesiones de laboratorio y resuelven los problemas utilizando el ordenador (L: 3h). También trabajan en la resolución de los problemas asignados sobre este tema (AA: 7h) y asisten a las clases de problemas/laboratorio, donde todos los estudiantes presentan públicamente sus soluciones (P: 4h).Objetivos: 1 2 3
Contenidos:
Teoría
4h
Problemas
4h
Laboratorio
3h
Aprendizaje dirigido
0h
Aprendizaje autónomo
14h
Aprendizaje del tema "Lenguajes incontextuales".
Los estudiantes asisten a clases de teoría sobre este tema (T: 4h) y completan los conceptos teóricos introducidos mediante el estudio de la bibliografía recomendada o visualizando los vídeos de este tema (AA: 7h). Asisten a sesiones de laboratorio y resuelven los problemas utilizando el ordenador (L: 3h). También trabajan en la resolución de los problemas asignados sobre este tema (AA: 8h) y asisten a las clases de problemas/laboratorio, donde todos los estudiantes presentan públicamente sus soluciones (P: 4h). Esta parte incluye una revisión exhaustiva de la primera parte de la asignatura como preparación para el primer examen parcial (AD: 1,5h).Objetivos: 1 2 3
Contenidos:
Teoría
4h
Problemas
4h
Laboratorio
3h
Aprendizaje dirigido
1.5h
Aprendizaje autónomo
15h
Primer examen.
Un examen de 3h de duración, realizado parcialmente delante del ordenador y parcialmente por escrito, donde se evalúa la habilidad de describir lenguajes regulares e incontextuales.Objetivos: 1 2
Semana: 7
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
Aprendizaje del tema "Autómatas con pila".
Los estudiantes asisten a sesiones de laboratorio y resuelven los problemas utilizando el ordenador (L: 3h). También trabajan en la resolución de los problemas asignados sobre este tema (AA: 5h) y preparan la presentación pública de sus soluciones.Objetivos: 1 2 3
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
3h
Aprendizaje dirigido
0h
Aprendizaje autónomo
5h
Aprendizaje del tema "Teoría de la calculabilidad".
Los estudiantes asisten a clases de teoría sobre este tema (T: 4h) y completan los conceptos teóricos introducidos mediante el estudio de la bibliografía recomendada o visualizando los vídeos de este tema (AA: 5h). Asisten a sesiones de laboratorio y resuelven los problemas utilizando el ordenador (L: 3h). También trabajan en la resolución de los problemas asignados sobre este tema (AA: 6,5h) y asisten a las clases de problemas/laboratorio, donde todos los estudiantes presentan públicamente sus soluciones (P: 6,5h).Objetivos: 1 3
Contenidos:
Teoría
4h
Problemas
6.5h
Laboratorio
3h
Aprendizaje dirigido
0h
Aprendizaje autónomo
11.5h
Aprendizaje del tema "Elementos de la teoría de la complejidad".
Los estudiantes asisten a clases de teoría sobre este tema (T: 4h) y completan los conceptos teóricos introducidos mediante el estudio de la bibliografía recomendada o la visualización de los vídeos correspondientes a este tema (AA: 5h). También trabajan en la resolución de los problemas asignados sobre este tema (AA: 7h) y asisten a las clases de problemas, donde todos los estudiantes presentan públicamente sus soluciones (P: 6h). Esta parte incluye una revisión exhaustiva de la segunda parte de la asignatura como preparación para el segundo examen parcial y el examen final (AD: 1,5h).Objetivos: 1 3
Contenidos:
Teoría
4h
Problemas
6h
Laboratorio
0h
Aprendizaje dirigido
1.5h
Aprendizaje autónomo
12h
Segundo examen
Un examen de 3h de duración, realizado parcialmente delante del ordenador y parcialmente por escrito, donde se evalúa la habilidad de analizar la regularidad e incontextualidad de lenguajes, así como ladecidibilidad de problemas y de construir reducciones para demostrar no decidibilidad y no semi-decidibilidad.Objetivos: 1 2
Semana: 15 (Fuera de horario lectivo)
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
Metodología docente
En las clases de teoría, el profesor presenta los fundamentos teóricos básicos de cada tema y resuelve algunos problemas. Los estudiantes profundizan en la teoría durante su tiempo de estudio personal utilizando los recursos indicados por el profesor (libros, vídeos y otros materiales complementarios).En las clases de problemas y en las sesiones de laboratorio, los estudiantes exponen las soluciones a problemas que se les han asignado previamente. El profesor interviene durante las explicaciones para corregir errores o proponer mejoras. Además, toma notas sobre las presentaciones de los estudiantes para tenerlas en cuenta en la evaluación final de la asignatura. En las sesiones de laboratorio, los estudiantes resuelven problemas frente al ordenador que son evaluados automáticamente.
Método de evaluación
Esta asignatura puede superarse mediante evaluación continua o mediante un examen final.La nota de evaluación continua, C, se obtiene combinando las calificaciones de los dos exámenes parciales (cada uno con un peso del 40%) y la calificación correspondiente a la evaluación de las presentaciones en la pizarra de los problemas asignados a los estudiantes (con un peso del 20%).
Los estudiantes que no se presenten al examen final tendrán como nota final de la asignatura (NF) la nota C de evaluación continua.
Los estudiantes que se presenten al examen final (con nota F) renuncian a la nota C de evaluación continua como nota final de la asignatura, y la nueva nota final se calcula según la fórmula:
NF = max{ F, 0.5F + 0.5C }.
Los estudiantes que no se presenten a ningún examen (Parcial 1, Parcial 2 y Examen Final) obtendrán la calificación NP ("No Presentado").
La evaluación de las competencias G7.3, G9.1 y CCO1.1 es realizada individualmente por cada profesor para los estudiantes de su grupo, basándose en las presentaciones públicas realizadas durante la evaluación continua. La evaluación de estas competencias no afecta a la calificación de la asignatura.
Bibliografía
Básico
-
Introduction to the theory of computation
- Sipser, M,
Cengage Learning,
2013.
ISBN: 9781133187790
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004025429706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Llenguatges, gramàtiques i autòmats: curs bàsic
- Cases, R.; Màrquez, L,
Edicions UPC,
2003.
ISBN: 8483017288
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002699299706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Els Límits de la computació: indecidibilitat i NP-completesa
- Serna, M [et al.],
Edicions UPC,
2004.
ISBN: 8483017849
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004025469706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Vídeos que expliquen els continguts de l'assignatura (linkats des del final de la web de l'assignatura)
- Godoy, G,
2010.
www.lsi.upc.edu/~ggodoy/tc.html -
Introduction to automata theory, languages, and computation
- Hopcroft, J.E.; Motwani, R.; Ullman, J.D,
Pearson/Addison Wesley,
2007.
ISBN: 0321462254
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003933959706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Complementario
-
Video lectures
- Sipser, Michael,
https://ocw.mit.edu/courses/18-404j-theory-of-computation-fall-2020/video_galleries/video-lectures/ -
Automata and computability
- Kozen, Dexter,
Springer,
1997.
ISBN: 9781461273097
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991001527289706711&context=L&vid=34CSUC_UPC:VU1 -
Computers and intractability: a guide to the theory of NP-Completeness
- Garey, M.R.; Johnson, D.S,
W.H. Freeman,
1979.
ISBN: 9780716710455
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991000087999706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Automata and formal languages: an introduction
- Kelley, D,
Prentice Hall,
1995.
ISBN: 9780134977775
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991001224409706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Web links
- Pàgina web amb tota la informació de l'assignatura. http://www.cs.upc.edu/tc/
Capacidades previas
* Capacidad para expresar mediante fórmulas lógicas los enunciados descritos en lenguaje natural.* Capacidad para manipular fórmulas lógicas.
* Conocimientos algebraicos fundamentales, incluyendo aritmética modular.
* Conocimientos básicos de combinatoria.
* Conocimiento de las estructuras de datos básicas y de la algoritmia fundamental.
* Capacidad para evaluar la complejidad temporal de un algoritmo.