Está en la página 1de 3

Dividir y conquistar

Consiste en
1. descomponer la instancia del problema a resolver en un conjunto de instancias más pequeñas
del mismo problema.
2. resolver independientemente cada una de estas subinstancias. No se guardan resultados de
instancias previamente calculadas, como en PD.
3. combinar estas soluciones en una solución a la instancia original.
Para que DYC sea eficiente las subinstancias deben ser todas de aproximadamente el mismo tamaño y
se debe elegir bien el umbral. Cuando el tamaño de mi subinstancia es <= al umbral, corto y no divido
más, uso el algoritmo básico.
Correctitud: Se supone la correctitud del algoritmo básico y se prueba por inducción sobre el tamaño de
la instancia que la solución obtenida es correcta suponiendo la correctitud de las instancias más chicas.

Resolución de recurrencias
Teorema maestro

Ecuación característica
se aplica a ciertas recurrencias lineales con coeficientes constantes de la forma:
T(n) = a1T(n−1) +a2T(n−2) +···+akT(n−k) +bn p(n) donde ai ,1 ≤ i ≤ k,b son constantes y p(n) es un polinomio
en n de grado s.

1. Encontrar las raíces no nulas de la ecuación característica:

6
Raíces: ri ,1 ≤ i ≤ l ≤ k, cada una con multiplicidad mi
2. las soluciones son de la forma de combinaciones lineales de estas raíces de acuerdo a su
multiplicidad

3. si se necesita, se encuentran valores para las constantes cij,1 ≤ i ≤ l,0 ≤ j ≤ mi−1 y di ,0 ≤ i ≤ s−1
según la recurrencia original y las condiciones iniciales (valores de la recurrencia para n = 0,1,...)
Cambio de variable

Diferencias DyC y PD:

Tanto el enfoque de "divide y conquista" como el de programación dinámica son técnicas algorítmicas
utilizadas para resolver problemas complejos. Si bien comparten algunas similitudes, también existen
diferencias notables entre ambas aproximaciones.

7
Similitudes:

1. Descomposición del problema: Ambas técnicas implican descomponer un problema complejo en


subproblemas más pequeños y manejables.
2. Subproblemas superpuestos: Ambas técnicas pueden aprovechar subproblemas superpuestos, lo
que significa que las soluciones a algunos subproblemas pueden reutilizarse varias veces.

Diferencias:

1. Enfoque:
a. Divide y conquista: Esta técnica implica dividir el problema en subproblemas independientes,
resolver cada subproblema de forma independiente y luego combinar las soluciones de los
subproblemas para obtener la solución final.
b. Programación dinámica: Esta técnica implica descomponer el problema en subproblemas
superpuestos y resolverlos de manera ascendente o descendente, generalmente utilizando la
memorización o la tabulación para evitar cálculos redundantes.

2. Dependencia de subproblemas:
a. Divide y conquista: En esta técnica, los subproblemas suelen ser independientes entre sí, y
resolver un subproblema no depende de la solución de otro.
b. Programación dinámica: Los subproblemas en programación dinámica a menudo dependen
entre sí, y la solución de un subproblema depende de las soluciones de sus subproblemas
más pequeños.

3. Resolución de subproblemas:
a. Divide y conquista: Los subproblemas se resuelven de forma recursiva, lo que generalmente
da lugar a una fase de división, una fase de conquista y una fase de combinación.
b. Programación dinámica: Los subproblemas se resuelven de manera iterativa, ya sea de forma
ascendente (comenzando desde los subproblemas más pequeños y resolviendo
progresivamente los más grandes) o de forma descendente (resolviendo los subproblemas
más grandes mediante la resolución recursiva de los más pequeños).
c.
4. Complejidad temporal:
a. Divide y conquista: La complejidad temporal de los algoritmos de divide y conquista se
expresa a menudo en términos de una relación recurrente, y varía según cómo se divida el
problema.
b. Programación dinámica: La complejidad temporal de los algoritmos de programación dinámica
depende del número de subproblemas distintos y del tiempo requerido para resolver cada
subproblema.

En resumen, tanto el enfoque de "divide y conquista" como el de programación dinámica son técnicas de
resolución de problemas que implican descomponer los problemas en partes más pequeñas. Sin embargo,
"divide y conquista" generalmente aborda subproblemas independientes, mientras que la programación
dinámica se ocupa de subproblemas superpuestos con dependencias. El enfoque, la resolución de
subproblemas y la complejidad temporal difieren entre las dos técnicas.

También podría gustarte