La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Diseño y análisis de algoritmos Análisis de Algoritmos II.

Presentaciones similares


Presentación del tema: "Diseño y análisis de algoritmos Análisis de Algoritmos II."— Transcripción de la presentación:

1 Diseño y análisis de algoritmos Análisis de Algoritmos II

2 Temario Analisis, casos prácticos –Cálculo de Complejidad en algoritmos Ej:Alg1 Ej:Alg2 Ej:Alg3 Ej:Alg4 Conclusiones

3 Analisis, casos prácticos Alg1: ahorros Pseudocódigo Procedimiento BalanceAcumulado(n:integer) Inicio deposito:= 50.000 i:=1 interes:=0.005 balance:=100.00 mientras i <= n inicio balance:=balance+ deposito+ balance*interes i:=i+1 fin Objetivo: Contar (medir) el todal de operaciones, pasos que se llevarán a cabo Sea f(n) la “función” que denota el número total de operaciones.

4 Analisis, casos prácticos Alg1: Pseudocódigo Primer segmento: asignaciones, 4 Segundo segmento loop repetitivo mientras, se ejecuta n veces Detalle del bloque de repetición: - comparación - incremento balance asignación - dos sumas, una multiplicación y una asignación - incremento contador - suma y asignación Tercer segmento comparación final para salir del loop f(n) = 4 + 7n + 1 = 7n + 5 pert O(n), por lo que f pert O(n), es decir, conteo simple de sentencias WHILE. Por el momento queremos el polinomio exacto.

5 Analisis, casos prácticos Alg2: proceso de busqueda secuencial Pseudocódigo Procedimiento Búsqueda lineal(llave,n:integer;arr[n]:array of integer) Inicio i:=1 mientras (i arr[i]) inicio i:=i+1 fin si i <= n entonces ubicación:= i sino ubicación:=0 fin Objetivo: Contar (medir) el todal de operaciones, pasos que se llevarán a cabo Sea f(n) la “función” que denota el número total de operaciones.

6 Analisis, casos prácticos Alg2: proceso de busqueda secuencial Esencialmente,f(n)depende del número de elementos del arreglo. Mejor caso: El elemento a buscar es el primero del arreglo por lo que f(n)= 6, entonces se dice que en el mejor de los casos el algoritmo es O(1). (Independiente de la cantidad de datos). Peor caso: El elemento a buscar es el último del arreglo por lo que f(n)= 1+4n+1+2,f(n)=4n+4 entonces se dice que en el peor de los casos el algoritmo es O(n). (Independiente de la cantidad de datos). El peor caso, en general es el considerado para evaluar la complejidad de un algoritmo. Finalmente, cobtendremos el caso intermediosólo fijándose en el tamaño n del arreglo. Se asume que los n elementos son distintos y tienen igual probabilidad p de corresponder a la llave. La probabilidad de que la llave no esté en el arglo es q. Entonces: El caso promedio es determinado por los posibles elementos examinados: Si q=0, entonces la llave está en el arreglo y p=1/q y

7 Analisis, casos prácticos Alg3: función matemática Pseudocódigo Procedimiento potencia(a: real,n:integer) Inicio x:=1.0 for i :=1 to n do inicio x:= x*a fin Objetivo: Contar (medir) el todal de operaciones, pasos que se llevarán a cabo Sea f(n) = 1 + 1+4n + 1=4n+3 f(n) pert O(n)

8 Analisis, casos prácticos Alg3’: función matemática mejorada. Usod de floor() mayor entero Pseudocódigo Procedimiento potencia2(a: real,n:integer) Inicio x:=1.0 i:=1 mientras i >0 do inicio si i <> 2*floor(i/2) entonces {i es impar} x:= x*a i := floor(i/2) si i> 0 entonces a:=a*a fin Esta función acalcula a exp n, pero con una complejidad informalmente Se puede decir que el ciclo mientras no asegura O(n), en este caso i se va reduciendo Exponencialmente (base 2) por lo que la cantidad de ciclos es logarítmica.

9 Analisis, casos prácticos Alg4: Suma de Matrices Pseudocódigo Procedimiento suma(a,b:array [1..n,1..n] of Integer) Inicio total:=0 for i :=1 to n do for j :=1 to n do inicio aux[i,j]:=a[i,j]+b[i,j]; total:=total + aux[i,j] fin Antes de comenzar las iteraciones: - 1 operación En el primer ciclo n veces una comparación e incremento más la salida En el segundo ciclo n veces la segunda comparación e incremento más la salida Dentro del segundo loop 2 asignaciones y una suma.

10 Analisis, casos prácticos Alg4: Destalle del cálculo de la complejidad Recomendacón calculad “de adentro hacia fuera”: - 4 operaciones dentro del loop j más una comparación e incremento iplícitos en el for por cada columna 6n - La última comparación, 1 operación: 6n+ 1 - for de i más una comparación e incremento iplícitos en el for por cada fila: n(6n+1+2) - primera asignacón y ultima comparación para la salida del último for 3 + n(6n+3) =

11 Analisis, casos prácticos Conclusiones 1.Los ejemplos anteriores son utiles para manejar cantidades moderadas de n. Para pequeños valores de n, las consideraciones de complejidad no son muy relevantes pert 2.Suponga que algoritmos A1 y A2 tienen funciunes de compljidad f(n) y g(n), respectivamente, donde f(n) pert O(n) y g(n) pert O(n) 1.Se podría pensar que un algoritmo lineal es más eficiente que uno cuadrático 2.Para llegar a estas conclusiones se necesita más información antes 1.Ejemplo: si f(n)=1000n y g(n)=n, A2 terminará antes el problema de tamaño n = 1000 A1 O(n) se comportará mejor. 3.En la próxima figura, se graficarán las funciones de la tabla de las clases de funciones O(f(n)). 2 2

12 Analisis, casos prácticos Conclusiones

13 Analisis, casos prácticos Conclusiones

14 Analisis, casos prácticos Conclusiones Sin embargo, las estimaciones de esta tabla pueden creceráún más rápido. Suponga que se require ejecutar un programa cuya entrada es una arreglo A de n enteros. Los resultados de de este programa son generados en dos partes: 1.Primero, el programa iplementa un algoritmo que determina los subconjuntos A de tamaño 1. Entonces hay n de tales subconjuntos 2.Luego un segundo algoritmo es implementado para determinar TODOS los subconjuntos de A. Entonces hay 2 de tales subconjuntos n

15 Asuma que se tiene un SUPERCOMPUTADOR que puede determinar cada subconjunto de A en un microsegundo. Para el caso de |A| = 64, la salida de la primera Parte de la salida es ejecutada practicamente en forma instantámea, aprox 64 microsegundos....... Para la segunda parte, sin embargo, y aplicando la tabla anterior se tendrá aprox 1.84E19 Microsegundos. Levando a dias este reultado: SIGLOS 1.84E19[mseg] = 2.14E18 dias = 5845 SIGLOS Analisis, casos prácticos Conclusiones


Descargar ppt "Diseño y análisis de algoritmos Análisis de Algoritmos II."

Presentaciones similares


Anuncios Google