Vous êtes sur la page 1sur 2

ClculodeComplejidad

EstructuradeDatos
FacultaddeCiencias
AlgoritmosRecursivos
2GradoIng.Informtica
UniversidaddeCantabria

PROCEDIMIENTOPARACALCULARLACOMPLEJIDADDEUN
ALGORITMORECURSIVOTIPODIVIDEYVENCERS

1. Introduccin
Un algoritmo tipo divide y vencers es un algoritmo recursivo que recibe un problema de un
cierto tamao, digamos n, y para resolver dicho problema lo que hace es dividirlo en
problemas de menor tamao, por ejemplo, n/2, hasta que el tamao del problema sea tan
pequeo que su resolucin resulte trivial. Una vez resuelto los subproblemas de menor
tamao,lassolucionesdecadaunodeellossecombinanofusionanpararesolverelproblema
detamaon.
Por ejemplo, para buscar el mximo de un vector de tamao n, podemos dividir dicho vector
en dos subvectores de tamao n/2. El mximo del vector de tamao n ser el mximo de los
mximos de los subvectores de tamao n/2. Si el vector tuviese tamao 1, el problema sera
trivial y no hara falta subdividir el vector. Por tanto, el problema de tamao n se resuelve
recursivamentemediantelaresolucindedosproblemasdetamaon/2ylacombinacin de
susresultados.
Estosalgoritmosrecursivostienenasociadaunaecuacinderecurrenciatipo,cuyaresolucin
esloqueseconocecomoelTeoremaMaestro.Laformadedichaecuacinderecurrencia,as
como el teorema maestro aparecen en la transparencia 21 del Tema 2 de la asignatura. La
demostracin de dicho teorema puede encontrarse en prcticamente cualquier libro serio
sobre algoritmia. En concreto, se recomienda, en caso de estar interesado, leer la
demostracindePea(2005).
Acontinuacinseexplicacmointerpretardichoteoremamaestro.
2. Aplicandoelteoremamaestro
Aplicar el teorema maestro implica identificar diversos parmetros de un algoritmo recursivo
tipodivideyvencers.DichosparmetrossemuestranenlaTabla1.
Parmetro Significado
a Nmerodellamadasrecursivasqueserealizanenelcasorecursivo
b Factorporelcualsedivideeltamaodelproblema encada llamadarecursiva
k Mayorexponentedelas polinomiosasociadosalas complejidades delcasobaseydela
parte no recursiva de la rama recursiva del algoritmo, asumiendo que en ambos casos
setratadecomplejidadespolinmicas
Tabla1.Parmetrosacalcularparaaplicarelteoremamaestro

ClculodeComplejidad
EstructuradeDatos
FacultaddeCiencias
AlgoritmosRecursivos
2GradoIng.Informtica
UniversidaddeCantabria

Portanto,elprocedimientoparaaplicarelteoremamaestroestalcomosigue:
(1) Identificar cules son las ramas recursivas del algoritmo y cules corresponden al caso
base.
(2) Identificar el nmero de llamadas recursivas (parmetro a) que se realizan en el caso
recursivo. Porejemplo,enelcasodelmximodeunvector,planteadoenlaintroduccin
deestedocumento,elnmerodellamadasrecursivassera2.
(3) Identificar la razn (parmetro b) por la cual se divide el tamao del problema en cada
llamada recursiva. Por ejemplo, en el caso del mximo de un vector, planteado en la
introduccindeestedocumento,dicharaznsera2,dadoqueelproblemasereduceala
mitad.
(4) Calcularlacomplejidaddelcasobase,comosisetrataseunalgoritmoiterativonormal.La
complejidad resultante, para aplicar el teorema maestro, debe ser polinmica. Sea k el
gradodedichopolinomio
1
.
(5) Calcular la complejidad de todas aquellas instrucciones que no sean llamadas recursivas
dentro del caso recursivo, tal como si fuese un algoritmo iterativo normal. Normalmente
estas instrucciones se corresponden con el cdigo necesario para preparar las llamadas
recursivas y para combinar los resultados devueltos por las llamadas recursivas. La
complejidad resultante, para aplicar el teorema maestro, debe ser polinmica. Sea k el
gradodedichopolinomio.
(6) Elteoremamaestroasumequelascomplejidadesdelcasobaseydelaparteiterativadel
caso recursivo son polinmicas y poseen el mismo grado. Por tanto, tomaremos como
dicho grado al mayor de los grados de los polinomios asociados a las complejidades del
casobaseydelaparteiterativadelcasorecursivo.Esdecir,k=max(k,k).Estoesposible
gracias a que un algoritmo de complejidad O(n
a
) se puede siempre convertir en otro
equivalente de complejidad O(n
b
), siempre que b > a. Pensad que bastara con anidar el
algoritmo de complejidad O(n
a
) en tantos bucles sin sentido como hiciese falta para
incrementarlelacomplejidadhastaquellegaseab.
(7) A continuacin se calcula la relacin entre a y b
k
y se aplica el teorema maestro,
sustituyendolosvaloresdekyatalcomocorresponda.

Ricardo Pea. Diseo de Programas: Formalismo y Abstraccin. Pearson Education, 3 Ed.


(2005).

PabloSnchezBarreiro.

1
Sielalgoritmotienecomplejidadconstante,esdecir,O(1),k=0,yaquen
0
=1.

Vous aimerez peut-être aussi