Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1.3 Complejidad Algoritmo. 1.3.1 Tiempo de Ejecucin de un Algoritmo. 1.3.2 Complejidad en Espacio.
INTRODUCCIN:
Antes de que se comiencen a desarrollar los temas antes citados, dar una breve explicacin o introduccin de lo que es un algoritmo. Tal vez al escuchar esta palabra muchas personas que no tienen conocimiento alguno sobre una ciencia computacional o en ocasiones aunque la tengan empiezan a cuestionarse, siendo que se encuentran en un contacto cotidiano con el significado de esta palabra. Al hacer nfasis en que las personas se encuentran en contacto cotidiano con el significado de la palabra es porque siempre tenemos que resolver algn problema, como ejemplo podemos citar un recetario el cual es usado por un chef, que sigue los pasos que se describen en el recetario para crear un cierto platillo, otro ejemplo son los instructivos que nos especifican los pasos para armar un cierto producto. A continuacin se define Qu es un algoritmo? Un algoritmo es una serie ordenada de instrucciones, procesos o pasos que llevan a la solucin de un determinado problema, este a su vez debe ser comprensible, preciso y finito, como as tambin debe tener una entrada un proceso y una salida. Comprensible: un algoritmo debe de ser claro en la funcin que realiza, de tal manera que sea entendible para aquel que ejecute los pasos del mismo ya sea hombre o maquina. Preciso: al hablar de precisin se implica determinismo, quiere decir que el orden en que se ejecutan las instrucciones debe estar perfectamente indicado. Finito: debe de ser finito ya que debe poder realizarse, es decir debe terminar despus de una cierta cantidad finita de pasos.
Existen rdenes de complejidad que son referentes a la notacin O Se dice que O(f(n)) define un "orden de complejidad". Escogeremos como representante de este orden a la funcin f(n) ms sencilla del mismo. As tendremos: O(1) orden constante O(log n) orden logartmico O(n) orden lineal O(n log logaritmo lineal n) O(n2) orden cuadrtico orden polinomial (a O(na) > 2) orden exponencial (a O(an) > 2) O (n!) orden factorial Es ms, se puede identificar una jerarqua de rdenes de complejidad que coincide con el orden de la tabla anterior; jerarqua en el sentido de que cada orden de complejidad superior tiene a los inferiores como subconjuntos. Si un algoritmo A se puede demostrar de un cierto orden O1, es cierto que tambin pertenece a todos los rdenes superiores; pero en la prctica lo til es encontrar el menor orden de complejidad que lo cubra.
EJEMPLO: Obtengo que la complejidad de un algoritmo es 6n3+5n+1, es correcto decir que la complejidad de ese algoritmo es del orden de O (6n3+5n+1), ya que todas la funciones de ese orden, incluida 6n3+5n+1 estn asintticamente acotadas por ella. Pero con esas reglas, tambin podemos decir que la complejidad es del orden de O (6n3+5n), y tambin del O (6n3) y tambin del orden O (n3), porque: O (6n3+5n+1) O (6n3+5n) O (6n3) O (n3) Pero normalmente, nos basta con saber que un algoritmo tiene un orden O (n3), que es uno de los rdenes de uso comn en lugar de afinar ms y decir que el orden es O (6n3+5n+1).
20 = 1 2 = 2 * 2n 1, para n > 0
Una alternativa sera considerar el caso n > 0 de forma diferente: sumando dos veces 2n 1 en vez de multiplicando por 2. Esto es: 20 = 1 n n1 2 =2 + 2n 1, para n > 0 Puede verse claramente que ambas soluciones son matemticamente equivalentes. A continuacin, el cdigo en lenguaje pascal de las dos soluciones (pow1 y pow2, respectivamente). Por simplicidad se ha declarado el exponente a calcular como una constante igual a 10: pow1.pas pow2.pas 1-program pow1; 1-program pow2; 2-const exp = 10; 2-const exp = 10; 3-function pow(n: integer): integer; 3-function pow(n: integer): integer; 4-begin 4-begin 5- if n = 0 then 5- if n = 0 then 6pow := 1 6pow := 1 7- else 7- else 8- pow := 2 * pow(n-1); 8- pow := pow(n-1) + pow(n-1); 9-end; 9-end;
En el caso de pow1 vemos que la primera llamada a pow se hace asignando a n el valor inicial exp, y luego en cada llamada recursiva este valor se decrementa en 1. Esto significa que para calcular 2n se harn n llamadas recursivas (multiplicando en cada caso el valor resultante por 2), lo cual insumir n unidades de tiempo. En el caso de pow2 la situacin es diferente: en cada llamada a pow se hacen dos nuevas llamadas recursivas, para luego sumar los resultados. Esto significa que para calcular 2n se harn 2n llamadas recursivas (sumando en cada caso los valores resultantes), lo cual insumir 2n unidades de tiempo. De este anlisis se desprende que pow1 requiere de un tiempo del orden de n (lineal), en tanto que pow2 requiere de un tiempo del orden de 2n (exponencial). En trminos prcticos todo esto significa, que pow1 es un programa que resuelve el problema de forma razonable (aunque podra ser mucho ms eficiente), en tanto que pow2 es (al menos si pensamos en valores grandes de n) una decepcin. Supongamos que tenemos una computadora capaz de ejecutar 1.000 operaciones por segundo. La siguiente tabla muestra aproximadamente cunto tardara la ejecucin de cada uno de nuestros programas para distintos valores de n. n pow1 pow2 0,01 10 1 seg seg. 0,02 20 17 min seg 0,03 30 12 das seg 0,04 40 34 aos seg 0,05 50 35.700 aos seg 3.000 millones de 10 1 seg veces 0 la edad del universo
T(N)= t1+t2...+tn*N Donde: t1, t2tn: son el tiempo que lleva ejecutar la serie de sentencias a la que pertenecen. N: numero de datos. Un punto que tambin es necesario tener en mente al querer medir el tiempo de ejecucin es conocer del hardware (procesador, reloj, memoria, disco, etc.) y software (sistema operativo, lenguaje, compilador, etc.).
CONCLUSIN
En conclusin la complejidad algortmica nos da a entender que antes de la elaboracin de un programa, es adecuado elegir un buen algoritmo, el cual utilice la menor cantidad de recursos, siendo los ms importantes el tiempo y el espacio, ya que no todos los algoritmos son iguales aunque tengan como propsito el solucionar un mismo fin. Todo esto atendiendo tambin a ciertas funciones que nos facilitan un poco ms el entender el trmino de complejidad.
LINCOGRAFIA