Actividades Guiadas
Actividad Guiada 1
Divide y Vencerás
Técnica Voráz
Backtracking
Big O Notation
Implementación y análisis de complejidad computacional (Big
O) de algoritmos clásicos. Este módulo explora la resolución
de problemas fundamentales mediante diferentes estrategias de
diseño, evaluando la eficiencia espacial y temporal de cada
enfoque.
- Torres de Hanoi (Divide y Vencerás / Variante Iterativa)
- Cambio de monedas (Técnica Voraz)
- N-Reinas (Backtracking)
- [Ejercicio Extra] Par de puntos más cercanos en 1-Dimensión, 2-Dimensiones y 3-Dimensiones (Divide y Vencerás)
Ver AG1
Actividad Guiada 2
Programación Dinámica
Ramificación y Poda
Descenso del Gradiente
Desarrollo y análisis de estrategias de optimización exacta y
continua. Este módulo aborda la resolución de problemas
complejos mediante la exploración inteligente de espacios de
estados (evaluando empíricamente los límites de tratabilidad
computacional) y transiciona hacia la minimización de
funciones matemáticas continúas utilizando cálculo numérico
guiado por derivadas.
- Viaje por el río (Programación Dinámica / Variante con Dijkstra)
- Problema de Asignación de tareas (Ramificación y Poda / Variante con estrategia Best First Search)
- [Ejercicio Extra] Estimar límite computacional aceptable para el problema de Asignación de tareas.
- Descenso del Gradiente
- [Ejercicio Extra] Obtener el descenso de gradiente de función. (Aproximación con dos variantes de derivación para determinar el gradiente)
Ver AG2
Actividad Guiada 3
TSP
Búsqueda Local
VNS (Búsqueda de Entornos Variables)
SA (Recocido Simulado)
Estrategia Heurística
Estudio e implementación de algoritmos aproximados para la
resolución de problemas de optimización combinatoria
NP-duros. Este módulo se centra en el diseño de
metaheurísticas basadas en trayectorias (VNS, SA) y en
inteligencia de enjambres (Colonia de Hormigas) para escapar
sistemáticamente de óptimos locales, calibrando
probabilísticamente la exploración del espacio de búsqueda y
los esquemas de enfriamiento.
- Problema del Agente Viajero (TSP).
- Búsqueda Aleatoria.
- Búsqueda Local.
- [Ejercicio Extra] Búsqueda local con Entornos Variables (VNS).
- Simulated Annealing (Recocido Simulado).
- [Ejercicio Extra] Mejor búsqueda de Vecindad (y mejor criterio de Cooling Schedule).
- [Ejercicio Extra] (Ant Colony Optimization) Colonia de Hormigas.
Ver AG3 - VNS & SA
Ver AG3 - ACO
Actividad Guiada 4
TSP
Algoritmo Genético (GA)
Estrategia Heurística
Implementación en Python de un Algoritmo Genético optimizado
para resolver el Problema del Viajero (TSP). La
arquitectura evolutiva destaca por el uso de inicialización
híbrida (inoculación voraz para acelerar la convergencia),
operadores de cruce con reparación topológica de cromosomas,
y un motor de selección por torneo con elitismo estricto para
evitar el estancamiento en óptimos locales.
- Problema del Agente Viajero (TSP).
- Aplicación del Algoritmo Genético para el TSP.
Ver AG4
Trabajo Práctico
Sesión de Doblaje
Estrategia Heurística
VNS
SA
Modelado y resolución de un problema logístico complejo
centrado en la minimización de costos salariales ("tarifa
plana") bajo restricciones estrictas de asignación diaria. El
estudio emplea una validación cruzada entre dos
metaheurísticas de trayectoria (Búsqueda de Entornos
Variables y Recocido Simulado) para garantizar la robustez
del óptimo encontrado.
- Diseño de un modelo de datos unidimensional optimizado para la evaluación ultrarrápida de vecindades y control natural de restricciones.
- Implementación concurrente de Recocido Simulado (enfriamiento de Lundy-Mees) y VNS.
- Validación empírica del óptimo global al demostrar la convergencia de ambas estrategias estocásticas hacia el mismo límite de costo (27 unidades salariales).
- Análisis de la topología del problema: descubrimiento, filtrado de isomorfismos y almacenamiento de más de 170 planes de rodaje estructuralmente únicos e igualmente óptimos.
Ver Trabajo Práctico
Configuración de Tribunales
Estrategia Heurística
SA
Modelado y resolución algorítmica de un problema de
asignación de horarios y recursos caracterizado por un
espacio de búsqueda hiper-restringido de $10^{65}$ estados.
El motor estocástico garantiza la factibilidad operativa de
los calendarios y optimiza la distribución de carga de
trabajo docente.
- Evaluación de viabilidad computacional en tiempo $O(1)$
empleando codificación de roles mediante máscaras de bits
asimétricas y matrices tensoriales estáticas.
- Implementación de Recocido Simulado con esquema de
enfriamiento de Lundy-Mees, superando barreras de
infactibilidad en un paisaje topológico altamente
irregular.
- Demostración de convergencia hacia el límite inferior
matemático del problema ($P_{soft} = 2.5$), logrando un
balanceo de carga estadísticamente perfecto.
Ver Trabajo Práctico
Aportes al Foro
Encontrar elementos en Común entre dos listas
Big O Notation
HashSet
Ordenamiento y Binary Search
Este aporte surgió a partir de una interrogante presentada en
clases al yo sugerir que se podría realizar esta tarea con
una complejidad temporal lineal. Por lo que me propuse a
explorar tanto las variantes propuestas en clases por otros
compañeros, mi propuesta en clases, y variantes extras con
base en una segunda interrogante sobre si no existía `hash` en
el lenguaje de programacion a trabajar (caso hipotético).
- Variante 1: Uso de HashSet O(N)
- Variante 2: List Comprehension O(N²)
- Variante 3: Ciclo for anidado O(N²)
- Variante 4: Un Hibrido entre Set Comprehension y List Comprehension O(N)
- Variante 5: Ordenamiento y Búsqueda Binaria O(N log M)
Ver Aporte 1
Ver Evidencia en el Foro
El problema de la sucesión de Fibonacci
Big O Notation
Recursividad
Divide y Vencerás
Ramificación y Poda
Potenciación Matricial
Este aporte se dio en consecuencia a una propuesta del
profesor de si era posible mejorar la implementación
recursiva del algoritmo para encontrar el k-ésimo término de
la serie de fibonacci.
En este caso propongo un estudio exhaustivo sobre la
optimización extrema para el cálculo del k-ésimo término de
Fibonacci. Este análisis evalúa empíricamente cinco
paradigmas algorítmicos, escalando la eficiencia
computacional hasta lograr calcular el 5000 término.
- Variante 1: Recursividad, Divide y Vencerás O(2ⁿ)
- Variante 2: Recursividad, Divide y Vencerás y Memoization (Memoization local vs Memoization Global) O(N)
- Variante 3: Método Iterativo O(N)
- Variante 4: Exponencial Matricial (naive-numpy vs
Exponentiation Binaria O(log M) sin considerar costos
ocultos)
- Variante 5: Fast Doubling O(log N) (sin considerar costos
ocultos)
Ver Aporte 2
Ver Evidencia en el Foro