Algorismes i Estructures de Dades

Esteu aquí

Crèdits
6
Tipus
Obligatòria
Requisits
Aquesta assignatura no té requisits, però té capacitats prèvies
Departament
CS
Mail
Aquesta assignatura se centra en estructures de dades i algorismes per a l'anàlisi eficient de dades en problemes bioinformàtics. La matèria cobreix arbres, diccionaris, grafs i cues de prioritat, i explica els algorismes relacionats amb aquestes estructures de dades, així com algorismes eficients per explorar espais de cerca complexos. El curs introdueix la teoria de la intractabilitat computacional i les seves respectives classes.

Professorat

Responsable

  • Caroline König ( )

Hores setmanals

Teoria
2
Problemes
1
Laboratori
1
Aprenentatge dirigit
0
Aprenentatge autònom
6

Objectius

  1. Conèixer les principals estructures de dades utilitzades en la bioinformàtica.
    Competències relacionades: K3, K4, S7, S8, C6,
    Subcompetences:
    • Conèixer problemes rellevants en computació bioinformàtica que es resolen basant-se en estructures de dades específiques.
  2. Comprendre el disseny i la implementació d'estructures de dades bàsiques per a una gestió eficient de dades en algoritmes avançats.
    Competències relacionades: K3, K4, S7, S8, C6,
    Subcompetences:
    • Conèixer, comprendre, dissenyar estructura de dades per implementar diccionaris.
    • Conèixer, comprendre, dissenyar estructura de dades per implementar cues de prioridad.
    • Conèixer, comprendre, dissenyar estructuras de dades per a implementar arbres.
    • Conèixer, comprendre, dissenyar estructura de dades per implementar piles i cues.
  3. Coneixements sobre algorismes que resolguin problemes clàssics en grafs.
    Competències relacionades: K3, K4, S7, S8, C6,
    Subcompetences:
    • Conèixer, dissenyar, comparar i implementar algoritmes de camí més curt en grafs.
    • Conèixer, dissenyar, comparar i implementar algoritmes d'ordenació topològica.
    • Conèixer, dissenyar, comparar i implementar algoritmes de recorregut de grafs.
  4. Comprendre, dissenyar, comparar i implementar algoritmes de string matching.
    Competències relacionades: K3, K4, S7, S8, C6,
  5. Conèixer, dissenyar i implementar algoritmes de cerca exhaustius.
    Competències relacionades: K3, K4, S7, S8, C6,
    Subcompetences:
    • Comprendre, dissenyar i implementar algoritmes per explorar l'espai de cerca: Backtracking i Branch and Bound.
  6. Analitzar els límits de la computació a través de l'estudi de la completesa computacional. C
    Competències relacionades: K3, K4, S7, S8, C6,
    Subcompetences:
    • Comprendre el Teorema de Cook-Levin com a base per demostrar la NP-completesa de problemes.
    • Reconèixer i classificar diversos problemes NP-complets, explorant les seves dificultats i les possibles aproximacions algorítmiques per abordar-los.

Continguts

  1. Introducció a estructures de dades en bioinformatica
    Introducció a les estructures de dades clau i visió general de la seva aplicació en problemes bioinformàtics rellevants.
  2. Algorismes sobre arbres
    Estructura de dades per arbres. Arbres binaris de cerca. Arbres AVL.
  3. Diccionaris
    Implementacions bàsiques: taules and llistes. Implementacions advancades: taules de dispersió, arbores de cerca binaria
  4. Cues de prioritat
    Operacions amb cuas de prioritat. Implementació amb heaps. Heapsort.
  5. Algorismes sobre strings
    Algorisme exacte i aproximat de tipus string matching.
  6. Algorismes bàsics de grafs
    Representacions: Matriu d'adjacència, llista d'adjacència. Cerca en profunditat, cerca en amplada. Algorisme de Dijkstra i Bellman-Ford del cami més curt.
  7. Algorismes sobre grafos avançats
    Ordenació topològica, Arbres de recobriment mínim, Algorisme de Kruskal, Algorisme de Prim
  8. Algorismes de cerca exhaustiva
    Principis: espai de solucions, generació de subconjunts i permutacions. Backtracking i Branch and Bound.
  9. Nocions d'intractabliitat
    Classe P i NP. NP-completesa y reducabilitat.

Activitats

Activitat Acte avaluatiu


Introducció a les estructures de dades en la computació bioinformàtica


Objectius: 1
Teoria
2h
Problemes
0h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
4h

Algorismes sobre arbes


Objectius: 2
Teoria
4h
Problemes
2h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h

Diccionaris


Objectius: 2
Teoria
2h
Problemes
0h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
4h

Cua de prioritata


Objectius: 2
Teoria
2h
Problemes
2h
Laboratori
1h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h

Algorismes sobre strings


Objectius: 4
Teoria
3h
Problemes
2h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h

Examen parcial


Objectius: 2 4 1
Setmana: 8 (Fora d'horari lectiu)
Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h

Algorismes bàsics sobre grafos


Objectius: 3
Teoria
4h
Problemes
2h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h

Algorismes avançats sobre grafs


Objectius: 3
Teoria
2h
Problemes
1h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
6h

Algorismes de cerca exhaustiva


Objectius: 5
Teoria
4h
Problemes
2h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h

Nocions d'intractabilitat


Objectius: 6
Teoria
2h
Problemes
4h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h

Examen final


Objectius: 2 5 3 6 4 1
Setmana: 18 (Fora d'horari lectiu)
Teoria
3h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h

Metodologia docent

Les classes de teoria presenten els conceptes i tècniques fonamentals, que es treballen de manera pràctica a les sessions de problemes i laboratori mitjançant una col·lecció d'exercicis resolts en un jutge automàtic.

La teoria es desenvolupa en sessions setmanals de dues hores, mentre que les classes de laboratori i problemes es realitzen cada quinze dies, també amb una durada de dues hores cadascuna.

El curs es basa en la programació amb Python.

Mètode d'avaluació

EP = nota de l'examen parcial (entre 0 i 10)
EF = nota de l'examen final (entre 0 i 10)
AC= activitats d'avaluació continuada (problemes)
EJ= exercicis de programació en el jutge

NOTA = 10.0%AC + 10.0%EJ+ 35.0%EP + 45.0%EF

La nota de la reavaluació substitueix la nota del examen parcial i final.

Bibliografia

Bàsica:

Complementaria:

Web links

Capacitats prèvies

Es requereix que els estudiants tinguin una base en programació imperativa orientada a objectes, incloent-hi el pas de paràmetres, classes, objectes, mètodes, punters, memòria dinàmica, recursivitat i iteradors. També han de conèixer Python i tenir nocions bàsiques de càlcul d'eficiència d'algorismes, incloent la notació asimptòtica i l'anàlisi de cost en temps i espai.