Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Divide y Vencerás
Cesar Liza Avila
website : www.cesarliza.com
e-mail : creadores@hotmail.com
Inicio
Si el problema es pequeño
resolverlo
Sino
descomponer en subproblemas
para cada subproblema
resolverlo
combinarlos
Fin
Θ(nk) si a<bk
Θ(nk log n ) si a=bk
Θ(nlog ba) si a>bk
César Liza Avila www.cesarliza.com
Ejemplo: Potencia entera de un número
Xn
cout<<pot(b, e)<<endl;
}
int pot (int b, int e)
{
if (e==0) return 1;
if (e==1) return b; ¿usa “divide y vencerás” la
if (e==2) return b*b; siguiente función?
-1 6 -2 5 -1 4 3 -4 3 1
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
2 1 4 3 6 7 8 5
3 4 1 2 7 8 5 6
4 3 2 1 8 5 6 7
5 6 7 8 1 4 3 2
6 5 8 7 2 1 4 3
7 8 5 6 3 2 1 4
8 7 6 5 4 3 2 1
Como ocurre una llamada recursiva, y como cada una de las 3 partes tiene
una complejidad cuadrática, tendremos: