Divide y vencerás

Definición

Paradigma que divide un problema en subproblemas más pequeños, los resuelve —normalmente de forma recursiva— y combina sus soluciones.

Intuición

La técnica funciona cuando resolver varias versiones menores del mismo problema y ensamblar sus resultados es más sencillo que atacar directamente la instancia completa. Debe existir un caso base y cada llamada debe reducir el tamaño del problema.

Formulación

Un esquema frecuente es:

donde es el número de subproblemas, su tamaño y el costo de dividir y combinar.

Ejemplo mínimo

Ordenamiento por mezcla divide el arreglo en dos mitades, ordena cada mitad y después las mezcla.

QuickSort particiona alrededor de un pivote, ordena las regiones obtenidas y aprovecha que la partición ya establece la relación entre ambos lados.

Contraejemplo o límites

Si los subproblemas se traslapan mucho y se recalculan, puede convenir programación dinámica.

Relaciones

Procedencia