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

Slides:



Advertisements
Presentaciones similares
Complejidad Computacional
Advertisements

Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Estructuras Repetitivas para
Estructuras de Repetición Algoritmos
Introducción a los Algoritmos
¿ Que es la complejidad de un algoritmo ?
CICLOS EN C – PARTE 2.
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Unidad 4: Análisis de algoritmos (parte II)
Estructuras de control
ALGORITMOS 2 DIGITALES II
Introducción a la Computación
Facultad de Ingeniería y Arquitectura Introducción a la Computación 2007 – I (11va Semana) Lunes 14 de Mayo Ing. Juan José Montero Román.
Estructuras de Repetición
Tema 3. Optimización de Código
Fundamentos de Programación
ESTRUCTURAS DE CONTROL
Programación de Computadores
Estructuras de Iteracion (Repetitivas ) while , for,, do-while
Programación en Matlab
Análisis de Algoritmos
Análisis de Algoritmos
Análisis y Diseño de Algoritmos. Propiedades : f ( n )  O ( f ( n ) ) a ) O ( f ( n ) )  O ( g ( n ) )  f ( n )  g ( n )
Introducción al análisis de algoritmos
Algoritmos.

Introducción a la Programación
Algoritmos de búsqueda
(Organización y Manejo de Archivos)
Divide y vencerás 1. Método general.
Parte 4: Estructura FOR Basada en diapositivas de Prof. Elizabeth Vidal Duarte.
Ciclos (Loops, Repeticiones) Permiten ejecutar una secuencia de sentencias mas de una vez. Hay 2 tipos de loops:  WHILE repite la acción un número indefinido.
Juego de Preguntas y Respuestas
Teoría – Alejandro Gonzalez
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Capítulo 7 Gestión de memoria.
ESTADÍSTICAS DESCRIPTIVA
Estructura de Control Repeticiones(Loops) Ejercicios
4.  Métodos matemáticos.
Estructuras de Control.
Análisis y Diseño de Algoritmos
Algoritmos de Ordenamiento y Complejidad
Estructuras de Repetición (Hacer-Mientras)
Análisis de Algoritmos
Estructuras de control Resolución de problemas y algoritmos.
Análisis de algoritmos Generalidades
Estructuras de Repetición (Hacer-Mientras)
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
Sesión 13: Python (4) – Estructura Repetición. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática.
Ordenamiento en lenguaje c
METODOS DE BUSQUEDA EN C++ Oscar Michel Ruiz León
Estadística Reporte Ejecutivo
Tema 3: Complejidad Estructura de Datos
Estructuras de Decisión
* Cuando nos permite desarrollar un programa que necesitamos para tomar un conjunto de buenas prácticas para hacer eso. Esto se debe a que podemos ahorrar.
2011/1 - CLASE 12. AGENDA 1 Introducción 2 Sentencia while 3 Sentencia for 14 Sentencia do-while 5 Instrucciones Especiales 6 Ciclos anidados.
Conceptos Generales Programación I Docente: Ing. Marleny Soria M.

Las funciones son librerías ya estandarizadas que permiten al usuario realizar sus respectivas programaciones. Una función es un conjunto de líneas de.
Matrices Pág. 1. Matrices Pág. 2 Se llama matriz traspuesta de A, y se representa por A t a la matriz que resulta de intercambiar las filas y las columnas.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
ESTRUCTURA DE CONTROL REPETITIVAS: WHILE, DO… WHILE
Conceptos Generales PROGRAMACIÓN I DOCENTE: ING. MARLENY SORIA M. 1.
Programación Básica Bachillerato Ingeniería en Informática Lic. Carlos H. Gutiérrez León.
Ciclos en Visual Basic Yaimira Pérez. Los ciclos son estructuras de repetición que ejecutan una o varias instrucciones durante la cantidad de veces que.
Ciclos condicionales y exactos Estructura de control de ciclos
Transcripción de la presentación:

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

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

Analisis, casos prácticos Alg1: ahorros Pseudocódigo Procedimiento BalanceAcumulado(n:integer) Inicio deposito:= i:=1 interes:=0.005 balance:= 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.

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.

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.

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

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) = n + 1=4n+3 f(n) pert O(n)

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.

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.

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) =

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

Analisis, casos prácticos Conclusiones

Analisis, casos prácticos Conclusiones

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

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