Unidad 2: Diseño y Evaluación de Algoritmos#
Esta unidad se centra en la transición de la idea lógica a la construcción técnica de soluciones. Aprenderemos a estructurar datos, medir la eficiencia de nuestros procesos y aplicar técnicas de optimización para garantizar que los algoritmos sean escalables en entornos empresariales.
2.1 Conceptos de Algoritmos y Estructuras de Datos#
Un algoritmo es una secuencia finita de instrucciones precisas para resolver un problema. En el ámbito financiero, estas instrucciones deben ser inequívocas para evitar errores en el procesamiento de transacciones o cálculos de intereses.
Herramientas para el Diseño de Algoritmos#
Antes de implementar una solución en herramientas de bloques o código, debemos diseñarla usando estándares universales:
Diagramas de Flujo (Norma ANSI)#
Representación visual del flujo lógico mediante símbolos estandarizados:
Óvalo: Inicio/Fin del proceso.
Rectángulo: Proceso o acción (ej. «Calcular IVA»).
Rombo: Decisión o condición (ej. «¿El saldo es suficiente?»).
Paralelogramo: Entrada o salida de datos.
Pseudocódigo#
Es una forma de escribir el algoritmo utilizando una mezcla de lenguaje natural y estructuras de control (Si, Entonces, Mientras). Es la herramienta preferida para validar la lógica antes de la programación final.
ALGORITMO ValidarCredito
INICIO
LEER monto_solicitado
LEER puntaje_datacredito
SI puntaje_datacredito > 700 ENTONCES
IMPRIMIR "Crédito Pre-aprobado"
SINO
IMPRIMIR "Requiere estudio manual"
FIN SI
FIN
`
Estructuras de Datos#
Son las formas en que organizamos la información en la memoria de un sistema para que pueda ser utilizada de manera eficiente.
Listas y Arreglos: Conjuntos de datos ordenados (ej. una lista de facturas pendientes).
Diccionarios (Mapas): Estructuras que asocian una clave con un valor (ej. un NIT asociado a un nombre de proveedor).
Pilas y Colas: Formas de procesar datos según el orden de llegada (ej. una cola de solicitudes de crédito).
2.2 Complejidad Computacional y Eficiencia#
No todos los algoritmos son iguales. Algunos pueden resolver un problema en segundos con 10 datos, pero tardar horas si los datos suben a 10,000. La Complejidad Computacional nos permite medir este rendimiento.
Notación Big O#
Es el lenguaje que usamos para describir cuánto tiempo o espacio necesita un algoritmo a medida que crece el volumen de datos (\(n\)).
O(1) - Constante: El tiempo es el mismo sin importar el volumen (ej. consultar el saldo de una cuenta si se tiene el ID directo).
O(n) - Lineal: El tiempo crece proporcionalmente a los datos (ej. revisar una por una todas las facturas del mes para encontrar una específica).
O(n²) - Cuadrática: El tiempo aumenta drásticamente (ej. comparar cada cliente de una lista contra todos los demás clientes para encontrar duplicados).
2.3 Técnicas de Optimización en Algoritmos#
Optimizar consiste en modificar un algoritmo para que consuma menos recursos (tiempo de ejecución o memoria) sin cambiar el resultado final. En finanzas, la optimización es la diferencia entre un reporte que se genera en tiempo real y uno que bloquea el sistema.
Búsqueda Binaria: Una técnica de optimización para encontrar datos en listas ordenadas de forma mucho más rápida que una búsqueda secuencial.
Memorización: Almacenar resultados de cálculos costosos ya realizados para no tener que repetirlos (ideal para cálculos actuariales o de interés compuesto recurrente).
Refactorización: Simplificar la lógica del algoritmo para eliminar pasos innecesarios.