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

INTRODUCCIÓN AL ANÁLISIS  DE ALGORITMOS


            c = N;

            while (c > 1) {

            algo_de_ O (1);

            c/= 2;

            }

            Un razonamiento análogo nos lleva a log(N) iteraciones y, por tanto, a un orden O (log n) de comple-
            jidad.

            for (int i = 0; i < N; i++) {

            c = i;

            while (c > 0) {

            algo_de_ O (1);

            c/= 2;

            }

            }

            Tenemos un bucle interno de orden O (log  n) que se ejecuta N veces, luego el conjunto es de orden
                                                    2
            O (n log n).



                        •  Llamadas a procedimiento

                        La complejidad de llamar a un procedimiento viene dada por la complejidad del
                        contenido del procedimiento en sí. El coste de llamar no es sino una constante que
                        se puede obviar inmediatamente dentro de los análisis asintóticos.

                        El cálculo de la complejidad asociada a un procedimiento puede complicarse no-
                        tablemente si se trata de procedimientos recursivos.

                        •  Relaciones de recurrencia

                        En el cálculo de la complejidad de un algoritmo a menudo aparecen expresiones
                        recursivas para estimar el tiempo que se tarda en procesar un problema de un
                        cierto tamaño N.

                        Por ejemplo, se puede hallar un programa que para resolver un problema de ta-
                        maño N resuelve dos problemas de tamaño N/2 y luego combina las soluciones
                        parciales con una operación de complejidad O (n).




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