Semana 7 - leosaq/AnalisisDeAlgoritmos GitHub Wiki

Análisis del Caso Medio

El análisis del caso medio estima el comportamiento promedio de un algoritmo al considerar todas las posibles entradas de cierto tamaño y calcular una media ponderada del tiempo que tomaría ejecutarse.

¿Por qué es importante?

Mientras el peor caso indica el límite superior y el mejor caso el límite inferior, el caso medio nos da una visión más realista de cómo se desempeñará el algoritmo en la práctica.

Ejemplo:

En el algoritmo de búsqueda binaria, aunque el peor caso toma log₂(n) comparaciones, en promedio se suele encontrar el elemento antes, por lo que el análisis del caso medio ayuda a comprender ese rendimiento intermedio.


Análisis Amortizado

El análisis amortizado se utiliza para estudiar algoritmos donde algunas operaciones pueden ser costosas, pero su costo se distribuye equitativamente a lo largo de muchas ejecuciones, resultando en un costo promedio más bajo por operación.

Tipos de análisis amortizado:

  • Método agregado: Se calcula el costo total de una secuencia de operaciones y se divide entre ellas.
  • Método contable: Se asigna un "crédito" a cada operación para cubrir futuros gastos costosos.
  • Método del potencial: Se usa una función que mide el estado del sistema y ayuda a distribuir el costo.

Ejemplo:

El redimensionamiento de un arreglo dinámico (ArrayList) puede parecer costoso, pero si se analiza en conjunto, la mayoría de inserciones cuestan O(1), y solo algunas pocas requieren copiar todo el arreglo.


Recurrencias

Las recurrencias son ecuaciones que definen el tiempo de ejecución de un algoritmo de forma recursiva. Se usan comúnmente para analizar algoritmos recursivos, como los de tipo "divide y vencerás".

¿Cómo se resuelven?

Las recurrencias pueden resolverse usando métodos como:

  • Expansión repetida (desenrollar la recurrencia)
  • Árbol de recurrencia
  • Teorema Maestro (Master Theorem)

Ejemplo:

El algoritmo de Merge Sort tiene la recurrencia:

T(n) = 2T(n/2) + O(n)

Esto indica que divide el problema en 2 partes de tamaño n/2, y luego combina los resultados en tiempo lineal. Resolviendo esta recurrencia, obtenemos que su complejidad es O(n log n).


Taller 1 en Clase

image

Solución

Imagen de WhatsApp 2025-05-23 a las 11 56 53_3b19161f


Taller 2

image

Solución

Imagen de WhatsApp 2025-05-26 a las 19 15 55_483b18d2

Imagen de WhatsApp 2025-05-26 a las 19 16 08_733c8539

Imagen de WhatsApp 2025-05-26 a las 19 16 21_d1db98c1

Imagen de WhatsApp 2025-05-26 a las 19 16 35_047f416c

Se analizó el algoritmo de Fibonacci identificando su recurrencia, obteniendo su ecuación general mediante el método de ecuaciones características, y demostrando su validez por inducción matemática. Este análisis permite comprender el crecimiento del algoritmo y su comportamiento computacional.