Page 28 - INTRODUCCIÓN AL ANÁLISIS DE ALGORITMOS
P. 28

INTRODUCCIÓN AL ANÁLISIS  DE ALGORITMOS


                  La relación de recurrencia es esta:

                  T(n) = 2 T(n/2) + O (n)

                  T (1) = O (1)

                  Y el problema es cómo deducir, a partir de esa definición, la complejidad del algoritmo completo.
                  Para resolverlo, se van aplicando pasos sucesivos de recursión:

                  T(n) = 2 T(n/2) + n

                  T(n) = 2 (2 T(n/4) + n/2) + n = 4 T(n/4) + 2n

                  T(n) = 8 T(n/8) + 3n

                  hasta que se vea un patrón

                  T(n) = 2k T(n/2k) + k n




                  Esta fórmula es válida siempre, en particular cuando n/2  = 1 y podemos escribir
                                                                       k
                  T(n) = 2  T (1) + k n
                         k
                  y como sabemos la condición de parada de la recursión

                  T(n) = 2  + k n
                         k
                  El valor de k que termina la recursión es:

                  n/2  = 1 => k = log2(n),
                     k
                  sustituyendo

                  T(n) = 2  log (n)  + log2(n) n
                            2
                  T(n) = n + n log(n) => O (n log(n))




                  El método descrito permite resolver numerosas relaciones de recurrencia. Algunas son muy habitua-
                  les (tabla 1.5).

















                                                               22
   23   24   25   26   27   28   29   30   31   32   33