martes 7/3: Introducción. Ordenación por selección.
jueves 9/3: Análisis de la ordenación por selección. Ordenación por inserción. Análisis. Comparación. Mejor caso, peor caso, caso promedio. Significado. Operación elemental. Aproximación.
martes 14/3: Notación O: motivación, definición, propiedades básicas, regla del límite, jerarquía de funciones según su ritmo de crecimiento.
jueves 16/3: Propiedades auxiliares de O. Definiciones auxiliares: Omega, Theta. Ejemplos: búsqueda lineal, búsqueda lineal ordenada, búsqueda binaria. Análisis. Notación auxiliar O(f(n)|P(n), Omega(f(n)|P(n), Theta(f(n)|P(n). Crecimiento del logaritmo.
martes 21/3: Función eventualmente no decreciente, i-suave, suave. Equivalencia entre i-suave y suave. Regla de suavidad. Ejemplo: búsqueda binaria. Recurrencias divide y vencerás. Método de resolución. Ejemplo: búsqueda binaria. Ordenación rápida.
jueves 23/3: Recurrencias homogéneas. Método de resolución. Ejemplos.
martes 28/3:
jueves 30/3: Recurrencias no homogéneas. Método de resolución. Ejemplo.
martes 4/4: Estructuras de datos. Tipos concretos: arreglos, listas, tuplas, punteros.
jueves 6/4:
martes 11/4: primer parcial.
martes 18/4: Tipos abstractos. Notación semi-formal. Listas. Pilas. Control de paréntesis balanceados. Colas.
jueves 20/4:
martes 25/4: Implementación de pilas y colas utilizando arreglos. Implementación de pilas utilizando listas enlazadas.
jueves 27/4: Implementación de colas utilizando listas enlazadas. Listas con puntero al primero y al último nodos. Listas circulares. Árboles. Árboles binarios.
martes 2/5: Árboles binarios de búsqueda. Implementación.
jueves 4/5: Colas de prioridades. Heap.
martes 9/5: Implementación de heap. Algoritmos divide y vencerás. Forma general. Repaso de ordenación rápida y búsqueda binaria.
jueves 11/5: Ordenación por interacalación. Exponenciación. Multiplicación de números grandes.
martes 16/5: Algoritmos voraces. Forma general. Problema de la moneda. Problema de la mochila. Camino de costo mínimo. Algoritmo de Dijkstra.
jueves 18/5: Nodos especiales. Caminos especiales. Invariante del algoritmo de Dijkstra. Correctitud. Árboles generadores de costo mínimo. Criterios de elección de nuevas aristas. Algoritmo de Prim. Algoritmo de Kruskal.
martes 30/5: segundo parcial.
jueves 1/6: Problema Union-Find. Programación dinámica. Número de Fibonacci. Problema de la moneda.
martes 6/6: Problema de la mochila. Algoritmo de Floyd.
jueves 8/6: Recorrida de grafos. Árboles binarios: pre-orden, in-orden, pos-orden (derecha a izquierda e izquierda a derecha). Árboles finitarios: pre-orden y pos-orden. Precondicionamiento. Grafos: DFS recursivo e iterativo, BFS.
martes 13/6: Backtracking. Problema de la mochila. 8 reinas.