22.06.2015 Views

Capítulo 3 Complejidad de algoritmos recursivos ⎩ ⎨ ⎧ = > − = 0 1 0 ...

Capítulo 3 Complejidad de algoritmos recursivos ⎩ ⎨ ⎧ = > − = 0 1 0 ...

Capítulo 3 Complejidad de algoritmos recursivos ⎩ ⎨ ⎧ = > − = 0 1 0 ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Instituto Tecnológico <strong>de</strong> Ciudad Ma<strong>de</strong>ro<br />

Dra. Laura Cruz Reyes<br />

Unidad I COMPLEJIDAD DE ALGORITMOS<br />

Capítulo 3 <strong>Complejidad</strong> <strong>de</strong> <strong>algoritmos</strong> <strong>recursivos</strong><br />

Cuando el arreglo es <strong>de</strong> tamaño mayor <strong>de</strong> n, el número <strong>de</strong> comparaciones se pue<strong>de</strong> <strong>de</strong>rivar<br />

aplicando la fórmula para los <strong>algoritmos</strong> <strong>de</strong> tipo divi<strong>de</strong>-y-venceras.<br />

(<br />

⎢n<br />

⎥)<br />

W( n) = 2 W + ( n−1)<br />

, si n>1<br />

⎣ 2⎦<br />

Comparaciones para or<strong>de</strong>nar por<br />

separado las parte <strong>de</strong>recha e izquierda<br />

que son <strong>de</strong> tamaño ⎣n/2⎦ (b=2, c=2).<br />

Comparaciones para fusionar dos subarreglos<br />

or<strong>de</strong>nados <strong>de</strong> tamaño ⎣n/2⎦. En el peor caso se toma<br />

alternadamente un elemento <strong>de</strong> cada subarreglo,<br />

requiriendose n-1 comparaciones ( f(n) = n-1 ).<br />

Reuniendo en una sola expresión los casos base y recursivo, la complejidad <strong>de</strong>l algoritmo<br />

mergeSort en el peor caso es como sigue.<br />

( )<br />

W n<br />

⎧0 si n = 0<br />

⎪<br />

= ⎨ ⎛⎢n<br />

⎥ ⎞<br />

⎪2 W ⎜⎢ + ( n − 1) si n > 0<br />

2⎥⎟<br />

⎩ ⎝⎣<br />

⎦⎠<br />

3.3.2 Algoritmos basados en recorta-y-vencerás<br />

El problema principal <strong>de</strong> tamaño n se pue<strong>de</strong> recortar a b subproblemas (1

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!