Está en la página 1de 2

ClculodeComplejidad AlgoritmosRecursivos

EstructuradeDatos 2GradoIng.Informtica
FacultaddeCiencias UniversidaddeCantabria

PROCEDIMIENTOPARACALCULARLACOMPLEJIDADDEUN
ALGORITMORECURSIVOTIPODIVIDEYVENCERS

1. Introduccin
Unalgoritmotipodivideyvencersesunalgoritmorecursivoquerecibeunproblemadeun
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.
Porejemplo,parabuscarelmximodeunvectordetamaon,podemosdividirdichovector
endossubvectoresdetamaon/2.Elmximodelvectordetamaonserelmximodelos
mximosdelossubvectoresdetamaon/2.Sielvectortuviesetamao1,elproblemasera
trivial y no hara falta subdividir el vector. Por tanto, el problema de tamao n se resuelve
recursivamentemediantelaresolucindedosproblemasdetamaon/2ylacombinacinde
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
Aplicarelteoremamaestroimplicaidentificardiversosparmetrosdeunalgoritmorecursivo
tipodivideyvencers.DichosparmetrossemuestranenlaTabla1.
Parmetro
a
b
k

Significado
Nmerodellamadasrecursivasqueserealizanenelcasorecursivo
Factorporelcualsedivideeltamaodelproblema encada llamadarecursiva
Mayorexponentedelas polinomiosasociadosalas complejidades delcasobaseydela
partenorecursivadelaramarecursivadelalgoritmo,asumiendoqueenamboscasos
setratadecomplejidadespolinmicas
Tabla1.Parmetrosacalcularparaaplicarelteoremamaestro

ClculodeComplejidad AlgoritmosRecursivos
EstructuradeDatos 2GradoIng.Informtica
FacultaddeCiencias 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
gradodedichopolinomio1.
(5) Calcular la complejidad de todas aquellas instrucciones que no sean llamadas recursivas
dentrodelcasorecursivo,talcomosifueseunalgoritmoiterativonormal.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(na) se puede siempre convertir en otro
equivalente de complejidad O(nb), siempre que b > a. Pensad que bastara con anidar el
algoritmo de complejidad O(na) en tantos bucles sin sentido como hiciese falta para
incrementarlelacomplejidadhastaquellegaseab.
(7) A continuacin se calcula la relacin entre a y bk y se aplica el teorema maestro,
sustituyendolosvaloresdekyatalcomocorresponda.

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


(2005).

PabloSnchezBarreiro.

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

También podría gustarte