Esta asignatura se centra en estructuras de datos y algoritmos para el análisis eficiente de datos en problemas bioinformaticos. La materia abarca árboles, diccionarios, grafos y colas de prioridad, y explica los algoritmos relacionados con estas estructuras de datos, así como algoritmos eficientes para explorar espacios de búsqueda complejos. El curso introduce la teoría de la intractabilidad computacional y sus respectivas clases.
Profesorado
Responsable
Caroline König (
)
Horas semanales
Teoría
2
Problemas
1
Laboratorio
1
Aprendizaje dirigido
0
Aprendizaje autónomo
6
Objetivos
Conocer las estructuras de datos clave utilizadas en la computación bioinformática.
Competencias relacionadas:
K3,
K4,
S7,
S8,
C6,
Subcompetences:
Conocer problemas relevantes en la computación bioinformática que se resuelven apoyándose en estructuras de datos específicas.
Comprender el diseño y la implementación de estructuras de datos básicas para una gestión de datos eficiente en algoritmos avanzados.
Competencias relacionadas:
K3,
K4,
S7,
S8,
C6,
Subcompetences:
Conocer, comprender, diseñar estructura de datos para implementar diccionarios.
Conocer, comprender, diseñar estructura de datos para implementar colas de prioridad.
Conocer, comprender, diseñar estructuras de datos para implementar árboles.
Conocer, comprender, diseñar estructura de datos para implementar pilas y colas.
Conocimiento sobre algoritmos que resuelvan problemas clásicos en grafos.
Competencias relacionadas:
K3,
K4,
S7,
S8,
C6,
Subcompetences:
Conocer, diseñar, comparar e implementar algoritmos de camino más corto en grafos.
Conocer, diseñar, comparar e implementar algoritmos para ordenación topológica.
Conocer, diseñar, comparar e implementar algoritmos de recorrido de grafos.
Comprender, diseñar, comparar e implementar algoritmos de string matching.
Competencias relacionadas:
K3,
K4,
S7,
S8,
C6,
Conocer, diseñar e implementar algoritmos de búsqueda exhaustivos.
Competencias relacionadas:
K3,
K4,
S7,
S8,
C6,
Subcompetences:
Comprender, diseñar e implementar algoritmos para explorar el espacio de búsqueda: Backtracking y Branch and Bound.
Analizar los límites de la computación a través del estudio de la completitud computacional.
Competencias relacionadas:
K3,
K4,
S7,
S8,
C6,
Subcompetences:
Comprender el Teorema de Cook-Levin como base para demostrar la NP-completitud de problemas.
Reconocer y clasificar diversos problemas NP-completos, explorando sus dificultades y posibles aproximaciones algorítmicas para abordarlos.
Contenidos
Introducción a estructura de datos en bioinformatica
Introducción a las estructuras de datos clave y descripción general de su aplicación en problemas bioinformáticos relevantes.
Algoritmos sobre arboles
Estructura de datos para arboles. Arboles binarios de búsqueda. Arboles AVL.
Diccionarios
Implementaciones basicas: tablas y listas. Implementaciones avanzadas: tablas de dispersiçón, arboles binarios de búsqueda.
Colas de prioridad
Operaciones con colas de prioridad. Implementación con heaps. Heapsort
Algoritmes sobre strings
Algoritmos exactos y aproximados de string matching
Algoritmos básicos de grafos
Representaciones: Matriz de adjacencia, lista de adjacencia. Búsqueda en profundidad, Búsqueda por anchura. Algoritmo de Dijkstra y Bellman-Ford del camino más corto.
Algoritmos avanzados sobre grafos
Ordenación topológica, Árboles de recubrimiento mínimo, Algoritmo de Kruskal, Algoritmo de Prim
Algoritmos de búsqueda exhaustiva
Principios: espacio de soluciones, generación de subconjuntos, permutaciones. Backtracking y Branch and Bound.
Nociones de intratabilidad
Clase P y NP. NP-completitud y reducabilidad.
Actividades
ActividadActo evaluativo
Introducción a las estructuras de datos en la computación bioinformática
Objetivos:253641 Semana:
18 (Fuera de horario lectivo)
Teoría
3h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h
Metodología docente
Las clases teóricas presentan conceptos y técnicas fundamentales, que luego se aplican en sesiones de resolución de problemas y laboratorio mediante una colección de ejercicios evaluados por un juez automático.
Las sesiones teóricas se realizan semanalmente durante dos horas, mientras que las clases de laboratorio y resolución de problemas tienen lugar cada dos semanas, también con una duración de dos horas cada una.
El curso se basa en la programación con Python.
Método de evaluación
EP = nota del examen parcial (entre 0 i 10)
EF = nota del examen final (entre 0 i 10)
AC= activitades de evalucacicón continuada (problemas)
EJ= ejercicios de programación (jutge)
NOTA = 10.0%AC + 10.0%EJ+ 35.0%EP + 45.0%EF
La nota del examen de reevaluación sustituye la nota del examen parcial y del examen final.
MIT OpenCourseWare: it is a free publication of the materials of the courses of the Massachusets Institute of Technology (MIT) that shows most of the topics that are taught in MIT. Contains notes, exercises, solved exercises, exams and videos of classes. http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science
Se requiere que los estudiantes tengan una base en programación imperativa orientada a objetos, incluyendo el paso de parámetros, clases, objetos, métodos, punteros, memoria dinámica, recursividad e iteradores. También deben conocer Python y tener nociones básicas de cálculo de eficiencia de algoritmos, incluyendo la notación asintótica y el análisis de coste en tiempo y espacio.