Escudo ITSL Personaje
Unidad I

1.5 Análisis de Algoritmos

Complejidad en tiempo, espacio y eficiencia
M.A.T.S.I. Juan Agustín Aragón Guardado
▶ Usa las flechas para avanzar
TecNM Instituto Tecnológico Superior de Lerdo
TecNM · ITSL
Antes de empezar

¿Cuánto te cuesta
encontrar algo?

Imagina que pierdes las llaves en tu casa.

Opción ABuscar cuarto por cuarto, sin orden — "a lo tonto".
Costo: hasta 8 de 8 cuartos revisados.
Opción BPensar "¿dónde las dejé la última vez?" y empezar por ahí.
Costo: casi siempre 1 solo lugar revisado.
Toca cada opción para ver su costo

Ambas estrategias encuentran las llaves. La pregunta que nos interesa hoy no es si las encuentran, sino cuánto les cuesta encontrarlas.

¿Y si te dijera que hay una forma de saber, sin adivinar, cuál estrategia es mejor? 👀
Avatar
1.5.1 · Motivación

¿Por qué nos importa
la eficiencia?

Un algoritmo lento no se nota con pocos datos. Con millones de datos, sí. Mueve el control y compruébalo tú mismo.

Número de elementosBúsqueda simple · O(n)Búsqueda binaria · O(log n)
1010 ms3 ms
100100 ms7 ms
10,00010 seg14 ms
1,000,000,00011 días32 ms
n = 10,000
Búsqueda simple · O(n)
—
Búsqueda binaria · O(log n)
—
❓
Participa

¿Cuánto creen que tarda buscar un dato entre 1,000 millones, revisando uno por uno?

Así es. Revisar mil millones de elementos uno por uno (O(n)) puede tomar del orden de 11 días. Con búsqueda binaria (O(log n)), el mismo dato se encuentra en unos 32 milisegundos. Esa diferencia es lo que estudiaremos hoy.
Avatar
No hay respuesta incorrecta todavía... ¡arriesga un número! 🎲
1.5.1 · La idea central
No medimos el tiempo
en segundos,
medimos el tiempo
en pasos.
Complejidad algorítmica: la cantidad de recursos (temporales) que necesita un algoritmo para resolver un problema — y por tanto, qué tan eficiente es.
Guárdate esta frase: te va a servir en TODA la materia. 💡
Avatar
1.5.1 · Complejidad en el tiempo

¿Qué es la
complejidad temporal?

Es el número de operaciones que realiza un algoritmo para completar su tarea (considerando que cada operación dura lo mismo).

Regla práctica: el algoritmo que resuelve la tarea con menos operaciones es el más eficiente en tiempo.

"Menos pasos = más rápido", sin importar en qué computadora se ejecute.

Tamaño N: 20
0 pasos ejecutados
Personaje explicando
1.5.1 · Notación Big-O

Tres formas de
buscar una receta

Toca cada tarjeta para ver el ejemplo con datos reales

O(1)
Ya está listo

Sirves el platillo directo — sabes exactamente dónde está.

Buscar por índice
toca para ver ↻
O(1)

Ejemplo: arreglo[57] — sin importar si el arreglo tiene 10 o 10 millones de elementos, acceder a la posición 57 siempre cuesta 1 paso.

toca para regresar ↺
O(n)
Receta por receta

Revisas el recetario de principio a fin hasta encontrar la que buscas.

Búsqueda simple
toca para ver ↻
O(n)

Con 100 recetas, en el peor caso revisas las 100. Con 10,000 recetas, hasta 10,000. El costo crece igual de rápido que los datos.

toca para regresar ↺
O(log n)
Está alfabetizado

Abres por la mitad y descartas la mitad que no sirve, una y otra vez.

Búsqueda binaria
toca para ver ↻
O(log n)

Con 10,000 recetas alfabetizadas, necesitas apenas ~14 comparaciones para encontrar cualquiera. Duplicar los datos solo suma 1 paso más.

toca para regresar ↺
1.5.1 · Notación Big-O

¿Qué nos dice
realmente Big-O?

Nos dice cómo se va a comportar un algoritmo en función del tamaño de los datos — no cuántos segundos exactos tarda.

O(n) — búsqueda simple O(log n) — búsqueda binaria
Arrastra para cambiar el tamaño de los datosn = 1,000
Tamaño de datos (n) → Esfuerzo
1.5.1 · Formalizando

Ahora sí: la fórmula

Un trozo sencillo de programa:

S1;
for (int i = 0; i < N; i++)
  S2;
T(N) = t1 + t2 · N
2
3
10
T(N) = 32
Avatar
Mueve los controles: ¿qué crece más rápido, t1 o t2·N? 🤔
Cierre de la unidad

Antes de irnos... repasemos

Elige tu respuesta
1¿Qué medimos cuando hablamos de complejidad: segundos o pasos?
Medimos pasos, no segundos, porque el tiempo en segundos depende de la computadora.
2Entre O(n) y O(log n), ¿cuál crece más lento al aumentar los datos?
O(log n) crece mucho más lento — por eso la búsqueda binaria sigue siendo rápida incluso con miles de millones de datos.
3En T(N) = t1 + t2·N, ¿qué representa t2·N?
t1 es la preparación (una sola vez); t2·N es repetir la tarea N veces.
Puntaje: 0 / 3
Idea que se queda: menos pasos = más eficiente, sin importar el lenguaje ni la máquina.
TecNM · Instituto Tecnológico Superior de Lerdo · M.A.T.S.I. Juan Agustín Aragón Guardado
Avatar
¡Bien hecho llegando hasta aquí! Ahora demuéstralo 👇
1 / 10