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.