Créditos
6
Tipos
Obligatoria
Requisitos
Esta asignatura no tiene requisitos
, pero tiene capacidades previas
Departamento
CS
Profesorado
Responsable
- Enric Rodriguez Carbonell ( erodri@cs.upc.edu )
Otros
- Albert Oliveras Llunell ( oliveras@cs.upc.edu )
Horas semanales
Teoría
2
Problemas
1
Laboratorio
1
Aprendizaje dirigido
0
Aprendizaje autónomo
6
Competencias
Competencias técnicas
Transversales
Básicas
Genéricas
Objetivos
-
Tomar conciencia de los límites de la computación: comprender las implicaciones de la pregunta "P=NP?", entender el enunciado del Teorema de Cook-Levin, reconocer y identificar varios problemas NP-completos clásicos.
Competencias relacionadas: CG5, -
Conocer, explicar, diseñar, analizar, comparar e implementar algoritmos de búsqueda exhaustiva usando la tècnica de backtracking.
Competencias relacionadas: CE2, CB5, -
Conocer el esquema de programación dinámica, identificar cuándo se puede aplicar y cómo, y familiarizarse con algunos algoritmos de programación dinámica fundamentales.
Competencias relacionadas: CE2, -
Conocer el esquema de los algoritmos voraces, identificar cuándo se pueden aplicar y cómo, conocer las técnicas más habituales para demostrar su corrección y familiarizarse con algunos algoritmos voraces fundamentales.
Competencias relacionadas: CE2, -
Completar y modificar implementaciones, en el lenguaje de programación Python, de varios algoritmos para resolver problemas de dificultad media.
Competencias relacionadas: CE2, CT6, -
Identificar y proponer soluciones a posibles problemas de eficiencia en programas escritos en el lenguaje de programación Python.
Competencias relacionadas: CE2, CT6, -
Desarrollar proyectos de tamaño medio como miembro de un equipo, aprendiendo así a dividir un proyecto en partes pequeñas, distribuirlas entre sus miembros y actuar con responsabilidad de forma coordinada para la correcta finalización de las tareas asignadas.
Competencias relacionadas: CE2, CT4, CT5, CT6, CT7, CG1, CG2, -
Conocer algoritmos basados en búsqueda local para resolver eficientemente problemas intratables. Conocer una variedad de metaheurísticas de diferente naturaleza y ser capaz de identificar cuándo y cómo se pueden aplicar en problemas concretos computacionalmente duros.
Competencias relacionadas: CE2, -
Conocer los fundamentos de autómatas finitos y expresiones regulares para poderlos usar en la práctica (búsqueda de patrones en textos, etc.).
Competencias relacionadas: CE7,
Contenidos
-
Tractabilidad: clases de problemas P y NP
Clases P y NP, Teorema de Cook-Levin, reducciones, NP-completitud. -
Búsqueda exhaustiva
Principios teóricos: espacio de soluciones, soluciones parciales, poda. Ejemplos: subconjuntos, permutaciones, viajante de comercio, suma de subconjuntos. -
Programación dinámica
Esquema top-down (memoización). Esquema bottom-up (tabulación). Ejemplos: Fibonacci, números binomiales, mochila, multiplicación de secuencias matrices. -
Algoritmos voraces
Principios teóricos: esquema general de los algoritmos voraces. Ejemplos: planificación de tareas, etc. mínimos. -
Metaheurísticas
Búsqueda local. Simulated Annealing, Tabu Search, GRASP, algoritmos genéticos. -
Autómatas finitos y expresiones regulares
Alfabetos, palabras, lenguajes. Autómatas finitos deterministas, autómatas finitos indeterministas, autómatas finitos con lambda-transiciones, equivalencia entre modelos de autómatas, minimización de autómatas. Expresiones regulares, equivalencia con autómatas. Operaciones.
Actividades
Actividad Acto evaluativo
Teoría
6h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
8h
Teoría
4h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
8h
Teoría
4h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
8h
Teoría
4h
Problemas
2h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
8h
Teoría
4h
Problemas
0h
Laboratorio
6h
Aprendizaje dirigido
0h
Aprendizaje autónomo
8h
Teoría
4h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
8h
Metodología docente
El temario se expone de forma muy práctica, a través de la presentación de muchos ejemplos.Las clases de teoría introducen todos los conceptos y técnicas necesarios, los cuales se posen en práctica en las clases de problemas y de laboratorio mediante una colección de problemas y ejercicios en un juez automático.
Las dos horas de clases de teoría se hacen semanalmente. Las dos horas de clases de laboratorio se hacen quincenalmente. Las dos horas de clases de problemas se hacen quincenalmente.
El proyecto integra los conocimientos y las competencias de todo el curso.
Método de evaluación
NPar = nota examen parcialNFT = nota examen final de teoría
NFL = nota examen final de laboratorio
NPro = nota proyecto
NOTA FINAL = max( 30%Npar + 30%NFT + 20%NFL + 20% NPro, 60%NFT + 20%NFL + 20% NPro)
La nota del examen de reevaluación, si hay y es más alta, sustituye la nota del examen final de teoría (NFT). Las notas de parcial, proyecto y laboratorio (NPar, NPro, NFL) se conservan.
Bibliografía
Básico
-
Introduction to algorithms
- Cormen, T.H [et al.],
MIT Press,
[2022].
ISBN: 9780262046305
https://research-ebsco-com.recursos.biblioteca.upc.edu/c/ik5pvi/search/details/lq2sgumirf?db=nlebk -
Computers and intractability: a guide to the theory of NP-Completeness
- Garey, M.R.; Johnson, D.S,
W.H. Freeman,
1979.
ISBN: 0716710447
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991000087999706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Foundations of algorithms
- Neapolitan, R.E,
Jones and Bartlett Learning,
2015.
ISBN: 9781284049190
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004097269706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Metaheuristics
- Siarry, P. (ed.),
Springer,
2017.
ISBN: 9783319832845
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004156469706711&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
Complementario
-
Handbook of metaheuristics
- Gendreau, M.; Potvin, J.-Y,
Springer,
2018.
ISBN: 9783319910857
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004151509706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Algorithms
- Dasgupta, S.; Papadimitriou, C.; Vazirani, U.,
Mc Graw Hill Higher Education,
2008.
ISBN: 9780073523408
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003202339706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Algorithms
- Sedgewick, R.; Wayne, K,
Addison-Wesley,
2011.
ISBN: 9780321573513
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004156419706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Algorithm design
- Kleinberg, J.; Tardos, É,
Pearson,
2014.
ISBN: 9781292023946
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004001669706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
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
Web links
- Jutge automàtic per les sessions de laboratori https://jutge.org/
Capacidades previas
- Familiaridad con las técnicas básicas de programación: iteraciones, alternativas, funciones recursivas, paso de parámetros, clases, objetos, métodos, ...- Conocimiento de conceptos algorítmicos básicos: eficiencia de algoritmos, notación asintótica, grafos, recorrido en grafos, estructuras de datos (listas, árboles de búsqueda, hash, heaps, ...)
- Conocimientos básicos de matemática discreta, álgebra lineal y cálculo
- Conocimientos básicos de teoría de la probabilidad y estadística