Abrir el simulador
Máximo, suma, vector creciente y búsqueda binaria en C, con el trozo de cada llamada y su coste.
Lo que vas a aprender
- El esquema general de divide y vencerás.
- Cómo se aplica a vectores dividiendo por la mitad.
- La búsqueda binaria.
- Calcular el coste con ecuaciones de recurrencia.
- Cuándo compensa y cuándo no.
Cómo se usa el simulador
- Elige el problema: máximo, suma, ¿creciente? o búsqueda binaria.
- Datos: número de elementos (2 – 16) y disposición: aleatorio, creciente o casi creciente. 🎲 Nuevos datos genera otros.
- Avanza con ⏮, ◀, ▶ Ejecutar, ▶ y ⏭.
- Se resalta el trozo del vector que trata cada llamada y su mitad, la línea del código en C y el árbol de subproblemas. Los contadores dan las llamadas, las comparaciones y el tamaño de la pila.
- Cómo funciona muestra la ecuación de recurrencia y su solución.
Fundamentos teóricos
El esquema
Con vectores
Búsqueda binaria
En un vector ordenado, se mira el centro: si es el buscado, termina; si es mayor, se busca solo en la mitad izquierda; si es menor, en la derecha. Solo se resuelve una mitad.Ecuaciones de recurrencia
El coste se expresa en función del coste de los subproblemas:
Regla general (teorema maestro simplificado) para :
- Si : .
- Si : .
- Si : .
¿Cuándo compensa?
Buscar el máximo por divide y vencerás hace las mismas comparaciones que un bucle: no gana nada. Compensa cuando la combinación aprovecha el trabajo (merge sort frente a ordenación por inserción) o cuando se descarta parte del problema (búsqueda binaria).Ejemplos resueltos
Ejemplo 1 · Máximo de {4, 9, 2, 7}
Ejemplo 1 · Máximo de {4, 9, 2, 7}
maximo(0, 3) → maximo(0, 1) y maximo(2, 3). maximo(0, 1) = max(4, 9) = 9; maximo(2, 3) = max(2, 7) = 7. Resultado: max(9, 7) = 9.7 llamadas y 3 comparaciones ().
Ejemplo 2 · Búsqueda binaria
Ejemplo 2 · Búsqueda binaria
En un vector ordenado de 1000 elementos, la búsqueda binaria necesita como mucho comparaciones. Una búsqueda secuencial, hasta 1000.
Ejemplo 3 · Recurrencia de merge sort
Ejemplo 3 · Recurrencia de merge sort
: , , , así que y .
Experimenta con el simulador
1
El árbol
Con el máximo y 8 elementos, cuenta las llamadas del árbol. ¿Cuántas son con 16?
2
Binaria
Con la búsqueda binaria, mira cuántas llamadas hace con 16 elementos.
3
¿Creciente?
Con datos casi crecientes, mira dónde se detecta el fallo.
Errores frecuentes
- Calcular mal la mitad y dejar trozos vacíos o solapados.
- Olvidar el caso trivial.
- Aplicar búsqueda binaria a un vector desordenado.
Herramientas relacionadas
Recursión en C
La base de divide y vencerás.
Algoritmos de ordenación
Merge sort y quicksort.
Mejor y peor caso
Medir el coste.