ELO320 Estructuras de Datos y Algoritmos. Complejidad. Tomás Arredondo Vidal

Tamaño: px
Comenzar la demostración a partir de la página:

Download "ELO320 Estructuras de Datos y Algoritmos. Complejidad. Tomás Arredondo Vidal"

Transcripción

1 ELO320 Estructuras de Datos y Algoritmos Complejidad Tomás Arredondo Vidal Este material está basado en: Robert Sedgewick, "Algorithms in C", (third edition), Addison-Wesley, 2001 Thomas Cormen et al, Algorithms, (eighth edition), MIT Press, material del curso ELO320 del Prof. Leopoldo Silva material en el sitio 7: Complejidad 1

2 7-Complejidad 7.1 Tiempo de ejecución: T(n) 7.2 Complejidad: O(n) 7.3 Complejidad: Θ(n) 7.4 Algoritmos 7: Complejidad 2

3 Tiempo de ejecución: T(n) Se desea tener una medida de la duración del tiempo de ejecución de un algoritmo en función del tamaño de la entrada n. A través de llamados al sistema operativo se puede conocer el valor del reloj del procesador. Invocando el reloj (e.g. usando clock( ) en Unix), antes y después de realizar el algoritmo se tendrá una medida de la duración del tiempo de ejecución: T(n). Esta medida es muy dependiente del hardware (memoria, reloj, procesador) y software (sistema operativo). 7: Complejidad 3

4 Tiempo de ejecución: T(n) (cont) Por la razón anterior como una medida del tiempo de ejecución, se considera contar las instrucciones del lenguaje de alto nivel que son necesarias realizar. El tamaño de la entrada (n) debe ser precisado con más detalle. En forma tradicional n se considera como el número de elementos o componentes básicos que son sometidos al proceso o algoritmo siendo medido. También se suele denominar a T(n) como una complejidad temporal. 7: Complejidad 4

5 Tiempo de ejecución: T(n) (cont) La función T(n) mide el tiempo que el algoritmo requiere para procesar los n elementos de entrada. El tiempo de ejecución de un algoritmo es la suma de los tiempos de cada línea ejecutada (i.e. statement) Una línea de código i que toma tiempo C i (e.g. pasos o ciclos del reloj) para ejecutar y se ejecuta n veces va a contribuir nc i al tiempo de ejecución del programa. Se debe sumar el tiempo de todas las líneas del programa para obtener T(n). Afecta al tiempo de ejecución el orden en que se presentan los elementos de entrada: un caso típico o promedio (e.g. random), el mejor caso posible, el peor caso posible (típicamente el caso mas importante). 7: Complejidad 5

6 Tipos de funciones de T(n) Las funciones T(n) pueden ser de varios tipos: Funciones constantes: T (n) = 5, T (n) = 10 Funciones logarítmicas: T (n) = log(n), T (n) = nlog(n) Funciones polinomiales: T (n) = 2n 2, T (n) = 8 n 2 + 5n Funciones exponenciales: T (n) = 2 n, T (n) = 2 5n Mezclas de las anteriores, Cualquier función de n en un caso general. 7: Complejidad 6

7 Ejemplo: Cálculo de T(n) (cont) Se calculan los tiempos asociadas a cada línea considerando como operaciones elementales a: comparaciones, asignaciones, sumas, restas, acceso a elementos. Cada operación elemental tiene asociado una unidad de tiempo (e.g. una constante o simplemente el valor 1). También se podría considerar esta unidad como cualquier constante (i.e. O(1)). 7: Complejidad 7

8 Ejemplo: Cálculo de T(n), (1era approx.) Algoritmo de ordenamiento (peor caso): (t i - 1) void Alg1(int a[], int n) { int i, j, temp; line cost times for (i=0; i<n-1; i++) //1 : C 1 t 1 = Σ i for (j=n-1; j>=i+1; j--) //2 : C 2 t 2 = Σ i (Σ j (...)) } if(a[j-1] > a[j]) { //3 : C 3 t 2-1 } temp=a[j-1]; //4 : C 4 t 2-1 a[j-1]=a[j]; //5 : C 5 t 2-1 a[j]=temp; //6 : C 6 t 2-1 7: Complejidad 8

9 Ejemplo: Cálculo de T(n) (2nda approx.) Sumando las operaciones ejecutadas por cada línea (peor caso) en su inicialización, iteración y salida: C 1 = ops 1 = en cada iteración + 2 C 2 = ops 2 = en cada iteración + 2 C 3 = ops 3 = 4 C 4 = ops 4 = 3 C 5 = ops 5 = 4 C 6 = ops 6 = 2 Las operaciones internas se realizan: (n-1) - (i+1) + 1 = (n-i-1) veces Considerando el for interno, T(n) tiene un costo: n 1 ( ) = 2 + T n ( ) + 2 = j= i ( n i 1) Considerando el for externo, T(n) tiene un costo: T ( n) = 1+ n 2 i= 0 (4 + (4 + 17( n i 1))) + 2 7: Complejidad 9

10 Ejemplo: Cálculo de T(n) (2nda approx.) El for externo tiene un costo: T ( n) = 1+ n 2 i= 0 (4 + (4 + 17( n i 1))) + 2 Arreglando y considerando los términos que no dependen de i se suman (n-1) veces: T ( n) = 3+ = 3 + n 2 i= 0 n 2 i= 0 (8 + 17( n i 1)) (8 + 17n 17 17i)) = 3 + (8 + 17n 17)( n 1) 17 n 2 i= 0 ( n 2)( n 1) = 3 + (8 + 17n 17)( n 1) = (17n n + 7) / 2 i 7: Complejidad 10

11 7-Complejidad 7.1 Tiempo de ejecución: T(n) 7.2 Complejidad: O(n) 7.3 Complejidad: Θ(n) 7.4 Algoritmos 7: Complejidad 11

12 O(n): Acotamiento de funciones El acotamiento de funciones permite clasificar las funciones por su orden de magnitud. Interesa encontrar una cota superior del crecimiento de la función T(n) a medida que n. Consideremos la siguiente definición preliminar de la función O mayúscula, con la intención de clasificar funciones de n. Ejemplo: se dice que T(n) es O(n i ), si existen constantes c 0 y n 0 tales que T(n) <= c 0 n i para todos los n >= n 0 7: Complejidad 12

13 Ejemplo: O(n) Sea T(n) = (n + 1) 2. Para el menor i posible... Hay que encontrar c 0 y n 0 tales que: (n + 1) 2 <= c 0 n i. 7: Complejidad 13

14 Ejemplo: O(n) (cont) Dado que T(n) = (n +1) 2. T (n) es O(n i ) si para el menor i posible se encuentran c 0 y n 0 tales que: T(n) <= c 0 n i (n+1) 2 <= c 0 n i. Si suponemos que i = 3: la desigualdad anterior se cumple para c = 4 y n >= 1 la desigualdad anterior se cumple para c = 2 y n >= 1,4376 Si suponemos que i = 2: la desigualdad anterior se cumple para c = 4 y n >= 1 Si suponemos que i = 1 la desigualdad no se cumple. Lo cual prueba que: T(n) = O(n 2 ). 7: Complejidad 14

15 O(n): Complejidad (O-notation) Definición de O(n): Se dice que T(n) es O( f(n) ) solo si existen c y n 0 tales que: T(n) <= c f(n) con n >= n 0 Sin embargo es posible acotar mejor el orden o magnitud de una función. Esto considerando el primer ejemplo, en el que se podía decir que T(n) era O(n 3 ) y también que era O(n 2 ). Θ(n) acota T(n) superior e inferiormente 7: Complejidad 15

16 Actividad: Probar que: T (n) = 3n 3 + 2n 2 es O(n 3 ) 7: Complejidad 16

17 O(n): Costo Unitario Aplicando la definición puede comprobarse que las funciones T(n) constantes tienen complejidad O(1). Ejemplo: Sea T(n) = 5. Se puede escribir: 5 <= c 1 con n >= n 0 Es simple encontrar: c = 6 y cualquier n 0 Es decir f(n) = 1. Con lo cual, se puede afirmar que : T(n) = 5 es O(1) para todo n. Una de las mayores simplificaciones para cálculos de complejidad es considerar que las acciones primitivas del lenguaje son de costo unitario. 7: Complejidad 17

18 O(n): Teorema de acciones secuénciales Teorema de acciones secuenciales: Se realiza la acción A, como la secuencia dos acciones A 1 y A 2 de complejidades temporales T 1 (n) y T 2 (n) respectivamente. Si T 1 (n) es O(f(n)) y T 2 (n) es O(g(n)) entonces A es de complejidad O( max( f(n), g(n) ). 7: Complejidad 18

19 O(n): Teorema de productos Teorema de productos. Si T 1 (n) es O(f(n)) y T 2 (n) es O(g(n)) entonces: T 1 (n)t 2 (n) es O( f(n) g(n) ). Ejemplos: O( 3 n 2 ) =? O( 3 n 2 ) = O (n 2 ) ya que 3 es O(1), y n 2 es O(n 2 ). Si c es una constante y n el tamaño de la entrada: O(c) = c*o(1) = O(1) O(cn) = c*o(n) = O(n) La regla del producto también puede aplicarse en: n*o( n ) = O (n 2 ) 7: Complejidad 19

20 O(n): Teorema de alternativas Teorema de alternativa if (...) then A1 else A2 A1(n) es O(f(n)) y A2(n) es O(g(n)) Se toma la complejidad de la acción de mayor orden, entonces esta condición es O( max(f(n), g(n) )). 7: Complejidad 20

21 O(n): Teorema de iteraciones Teorema de iteración for ( i = 0; i < n; i++) { } a; Por regla de sumas se tiene n veces la complejidad temporal de la acción a. Si la acción del bloque a es O(1) entonces el for es de complejidad n *O(1) = O(n) 7: Complejidad 21

22 7-Complejidad 7.1 Tiempo de ejecución: T(n) 7.2 Complejidad: O(n) 7.3 Complejidad: Θ(n) 7.4 Algoritmos 7: Complejidad 22

23 Θ(n): Acotamiento superior e inferior Una mejor definición para acotar funciones, es la función Big Theta Θ(n) que define simultáneamente cotas superior e inferiores para T(n). Es la definición preferencial de complejidad. Definición de Θ(n): Se dice que T(n) es Θ( f(n) ), si existen c 1, c 2 y n 0 tales que: c 1 f(n) <= T(n) <= c 2 f(n) con n >= n 0 7: Complejidad 23

24 Ejemplo Θ(n): Para el ejemplo anterior, c 1 = 3, y c 2 = 5, con n 0 =1. 7: Complejidad 24

25 Actividad Θ(n): Se tienen tres for anidados: for (i = 1; i <= n-1; i++) for( j = i+1; j <= n; j++) for (k = 1; k <= j; k++) { a[i]=a[j+2] ; } Calcular Θ(n). 7: Complejidad 25

26 7-Complejidad 7.1 Tiempo de ejecución: T(n) 7.2 Complejidad: O(n) 7.3 Complejidad: Θ(n) 7.4 Algoritmos 7: Complejidad 26

27 Evaluando la complejidad en función del tiempo: Dado que T(n) refleja el número de instrucciones de costo unitario que deben realizarse para n entradas Si T(1) es equivalente a 1 [μseg], se puede construir la siguiente tabla de tiempos de ejecución: El teorema de sumas nos da que: O(3n 2 + 7n) = O(n 2 ). La tabla muestra que las complejidades de los dos algoritmos cuadráticos son comparables en el orden de magnitud. 7: Complejidad 27

28 Relaciones de recurrencia: En varios casos de mucho interés se conoce la complejidad temporal de un algoritmo mediante una relación de recurrencia. Por ejemplo: T(n) = T(n/2) + c con T(1) = c. Es decir el algoritmo aplicado a una entrada de tamaño n, puede descomponerse en un problema de la mitad del tamaño. El costo de la descomposición es una constante de valor c. Para resolver una relación de recurrencia es preciso conocer el costo para una entrada dada; en este caso para entrada unitaria T(1) el costo es la constante c. 7: Complejidad 28

29 Relaciones de recurrencia: T(n)=O(log 2 n) Esto ocurre en programas que en cada pasada descartan la mitad de los datos de entrada Si a partir del caso conocido se van evaluando casos más complejos, pueden obtenerse una expresión general: T(n) Tiempo T(1) = c = c = 0 + c T(2) = T(1) + c = 2c = c + c T(4) = T(2) + c = 3c = 2c + c T(8) = T(4) + c = 4c = 3c + c T(16) =T(8) + c = 5c = 4c + c T(2 i ) = T(2 i-1 ) + c = (i+1)c= ic + c = c(i+1) 7: Complejidad 29

30 Relaciones de recurrencia: T(n)=O(log 2 n) Se han evaluado en números que son potencias de dos, para obtener con una expresión para el término general: Con 2 i = n, sacando logaritmo de dos en ambos lados: log 2 (2 i ) = log 2 (n), pero log 2 (2 i ) = i log 2 (2) = i. Resultando: i = log 2 (n). Reemplazando en la expresion general T(n) = c(i+1): T(n) = c(log 2 (n) + 1) 7: Complejidad 30

31 Relaciones de recurrencia: T(n)=O(log 2 n) Las gráficas muestran que para T(n) existen c1 y c2 que la acotan por encima y por debajo, para n > 2,2. Finalmente, se tiene que la solución de la ecuación de recurrencia es: T(n) = O( log 2 (n) ) 7: Complejidad 31

32 Relaciones de recurrencia: T(n)=O(log 2 n) Las gráficas comparan el costo lineal versus el logarítmico. 7: Complejidad 32

33 Búsqueda secuencial La búsqueda secuencial compara una clave con cada una de las n componentes. La primera vez que encuentre un elemento del arreglo igual al valor buscado se detiene el proceso. No encuentra claves repetidas y no se requiere que el arreglo esté ordenado. Si lo recorre en su totalidad, cuidando de no exceder los rangos del arreglo, y no lo encuentra debe indicarlo con algún valor específico de retorno. Se retornar el índice de la componente que cumple el criterio de búsqueda, un retorno con valor -1 (ya que no es un índice válido), indicará que el valor no fue hallado. 7: Complejidad 33

34 Búsqueda secuencial (cont) Indice BusquedaSecuencial(Tipo A[], Indice Inf, Indice Sup, Tipo Clave) { } Indice i; for (i = Inf; i <= Sup; i++) if (A[i] == Clave) return(i); return (-1) ; // no se encontró La iniciación del for es O(1). La condición del if es O(1), también el retorno es O(1). El test de la condición del for es O(1), también el incremento de i es O(1). El bloque se repite (Sup-Inf+1) veces en peor caso. T(n) = O(1) + (Sup-Inf + 1)*( O(1) + (O(1) + O(1)) + O(1) ) + O(1) Simplificando: T(n) = (Sup-Inf+1) O(1) + O(1) = O(Sup-Inf+1) La entrada n, es el número de componentes en las que se busca. Si n = Sup Inf+1, se tiene finalmente: T(n) = O(n). 7: Complejidad 34

35 Búsqueda binaria Se requiere tener un arreglo ordenado en forma ascendente. El algoritmo está basado en ubicar, mediante la variable auxiliar M, la mitad del arreglo aproximadamente: Entonces o se lo encuentra justo en el medio; el costo de encontrar la mitad es de costo constante. o en la mitad con índices menores que M si el valor buscado es menor que el de la componente ubicada en la mitad; o en la mitad con índices mayores que M si el valor buscado es mayor. El ajustar los índices también es de costo constante, corresponde a los dos if then else anidados. Si se tienen n componentes, la complejidad puede describir según: T(n) = T(n/2) + c La solución de esta ecuación de recurrencia es: T(n) = O(log(n)). 7: Complejidad 35

36 Búsqueda binaria (cont) int BusquedaBinaria(Tipo A[], Indice Inf, Indice Sup, Tipo Clave) { Indice M; while (verdadero) { M = (Inf + Sup)/2; if (Clave < A[M]) Sup = M - 1; else if (Clave > A[M]) Inf = M + 1; else return M; if (Inf > Sup) return (noencontrado) ; } } 7: Complejidad 36

37 Algoritmos de multiplicación Un algoritmo primitivo para efectuar multiplicaciones es mediante la suma repetitiva de uno de los operandos. Por ejemplo el producto de dos números de 4 bits: 0101* Este algoritmo requiere n sumas si los operandos son de n bits Lo cual implica un costo O(n 2 ) para la multiplicación, considerando que cada suma es de costo O(n). Razón por la cual se suelen diseñar unidades de multiplicación, en hardware, con mejores algoritmos. Cual es la complejidad considerando la suma como O(n)? 7: Complejidad 37

38 Algoritmos de multiplicación (cont) En un ambiente de microcontroladores o microprocesadores que no tengan implementadas la operación multiplicación o división, pero que si tengan: sumas, restas y desplazamientos a la izquierda y derecha en un bit, se pueden considerar esas instrucciones de costo O(1). Consideremos, en este último contexto, dos algoritmos para multiplicar: 7: Complejidad 38

39 Algoritmos de multiplicación (cont) /* retorna m*n */ unsigned int multiplique1(unsigned int m, unsigned int n) { } unsigned int r=0; while ( n>0 ) { } r+=m; n--; return(r); Cual es la complejidad? El bloque se repite n veces, y está constituido por un test de condición, una suma y un incremento. Todas operaciones que pueden traducirse a instrucciones de máquina, y se consideran de costo O(1). Entonces esta multiplicación es de costo O(n) o lineal. 7: Complejidad 39

40 Algoritmos de multiplicación (cont) /* retorna m*n */ unsigned int multiplique2(unsigned int m, { unsigned int r=0; while ( n>0 ) { } if(n&1) r+=m; m*=2; n/=2; return(r); } unsigned int n) Cual es la complejidad? En cada ciclo del while se divide por dos el valor de n. Multiplicación por dos (o left shift << 1) La división por dos equivale a un right shift (>> 1) El test del bit menos significativo se realiza con una operación and; acumular el producto parcial en la local r, se efectúa con una suma. Todas estas operaciones, en este ambiente se consideran de costo constante: con T(1) = O(1). El algoritmo puede describirse : T(n) = T(n/2) + O(1) = O(log 2 n) 7: Complejidad 40

41 Algoritmos de división Consideremos un algoritmo primitivo de división, basado en restas sucesivas. /* Retorna cuociente q y resto r. n = q*d + r. */ unsigned int divide1( unsigned int n, unsigned int d, unsigned int *r) { unsigned int q=0; while (n >= d) { } n -= d; q++; *r = n; //escribe el resto return(q); } Cual es la complejidad? En su peor caso, con denominador unitario, y n el máximo representable, se tiene costo: O(n). Entonces esta multiplicación es de costo O(n) o lineal. 7: Complejidad 41

42 Algoritmos de división (cont) // n/d -> q, r. Retorna cuociente q // y resto r. Con n = q*d + r. unsigned int divide2( unsigned int n, unsigned int d, unsigned int *r) { unsigned int dd=d, q=0; *r = n; while (dd <= n) dd*=2; while (dd > d) { dd/=2; q= q*2; if (dd <= *r) { *r-=dd; q++; } } return(q); } Cual es la complejidad? El primer while duplica el den. hasta que sea mayor que el num. Para 8 bits, el mayor numerador será: bin o 255dec. Si d es 1, el while genera lo siguiente para dd: 2, 4, 8, 16, 32, , 256. Y se realiza 8 veces. Lo cual también se puede calcular mediante log 2 (256) = log 2 (2 8 ) = 8. En el peor caso con d=1 y con el máx valor para n, se tienen log 2 n repeticiones. El segundo while divide por 2 el tamaño de dd que despues del primer loop es = n, su costo es: O(log 2 n) O(log 2 n) + O(log 2 n) = O(log 2 n) 7: Complejidad 42

43 Relaciones de recurrencia: T(n)=O(nlog 2 n) Esto ocurre en programas que en cada pasada descartan la mitad de los datos de entrada pero con un costo proporcional a n en cada iteración. Aparece en métodos basados en particiones (dividir para conquistar). Si a partir del caso conocido se van evaluando casos más complejos, pueden obtenerse: T(n) T(1) = c = c Tiempo T(2) = 2*T(1) + 2*c = 4c = 2c * 2 T(4) = 2*T(2) + 4*c = 12c = 4c * 3 T(8) = 2*T(4) + 8*c = 32c = 8c * 4 T(16) = 2*T(8) + 16*c = 80c = 16c * 5 T(2 i ) = 2*T(2 i-1 ) + 2 i c = (i+1)c= ic + c = 2 i c*(i+1) 7: Complejidad 43

44 Relaciones de recurrencia: T(n)=O(nlog 2 n) Se han evaluado en números que son potencias de dos, para obtener con una expresión para el término general: Con 2 i = n, sacando logaritmo de dos en ambos lados: log 2 (2 i ) = log 2 (n), pero log 2 (2 i ) = i log 2 (2) = i. Resultando: i = log 2 (n). Reemplazando en la expresión T(n) = 2 i c*(i+1): T(n) = nc * (log 2 (n) + 1) 7: Complejidad 44

45 Relaciones de recurrencia: T(n)=O(nlog 2 n) Las gráficas muestran que para T(n) existen c1 y c2 que la acotan por encima y por debajo, para n >= 2. Finalmente, se tiene que la solución de la ecuación de recurrencia es: T(n) = O( nlog 2 (n) ) 7: Complejidad 45

46 Comparación entre algunas complejidades 7: Complejidad 46

Estructura de Datos. Complejidad de Algoritmos. Algoritmo. Algoritmo. Mauricio Solar Lorna Figueroa

Estructura de Datos. Complejidad de Algoritmos. Algoritmo. Algoritmo. Mauricio Solar Lorna Figueroa Estructura de Datos Complejidad de Algoritmos Mauricio Solar Lorna Figueroa 2010 1 Algoritmo Definición: Un algoritmo es un conjunto finito de instrucciones que sirven para resolver un problema si fueron

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 05: no recursivos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido no recursivos La notación de Landau O La notación O Principio

Más detalles

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande Complejidad computacional Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Algoritmos - clase 10 Introducción a la complejidad computacional y

Más detalles

Notación Asintótica. Temas. Introducción Notación O Notación Omega Notación Theta. Análisis de Algoritmos

Notación Asintótica. Temas. Introducción Notación O Notación Omega Notación Theta. Análisis de Algoritmos Notación Asintótica Análisis de Algoritmos Temas Introducción Notación O Notación Omega Notación Theta 1 Introducción Por qué el análisis de algoritmos? Determinar tiempos de respuesta (runtime) Determinar

Más detalles

Análisis y Diseño de Algoritmos. Complejidad Computacional

Análisis y Diseño de Algoritmos. Complejidad Computacional Análisis y Diseño de Algoritmos Complejidad Computacional Multiplicación Método Tradicional Método Russé Método Particiones Complejidad Computacional Tan pronto como una máquina análitica exista, será

Más detalles

Estructuras de Datos y Algoritmos

Estructuras de Datos y Algoritmos Ejercicio 1: Estructuras de Datos y Algoritmos Año 2018 Práctico 2: Evaluación de Algoritmos (Finalización: 27/08) Ingeniería en Computación - Ingeniería en Informática - Profesorado en Computación Dados

Más detalles

NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo.

NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo. NOTACIÓN O GRANDE El análisis de algoritmos estima el consumo de recursos de un algoritmo. Esto nos permite comparar los costos relativos de dos o más algoritmos para resolver el mismo problema. El análisis

Más detalles

Estructuras de Datos y Algoritmos

Estructuras de Datos y Algoritmos Estructuras de Datos y Algoritmos Práctico 2: Evaluación de Algoritmos (Finalización: 03/09) Ingeniería en Computación - Ingeniería en Informática Año 2015 Ejercicio 1: Dados los siguientes vectores, correspondientes

Más detalles

Programación Análisis de Algoritmos: Tiempo de Ejecución (Introducción)

Programación Análisis de Algoritmos: Tiempo de Ejecución (Introducción) Programación 2 5 - Análisis de Algoritmos: Tiempo de Ejecución (Introducción) 1 Análisis de Algoritmos: Introducción Qué algoritmos elegir para resolver un problema? Que sean fáciles de entender, codificar

Más detalles

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Notación Asintótica DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Introducción Por qué el análisis de algoritmos? Determinar tiempos de respuesta (runtime)

Más detalles

Decrementa y vencerás II

Decrementa y vencerás II Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 21 de febrero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás II 21 de febrero de 2018 1 / 22 1 Decrementa y vencerás II Dr. Eduardo

Más detalles

ELO320 Estructuras de Datos y Algoritmos. Heap & HeapSort. Tomás Arredondo Vidal

ELO320 Estructuras de Datos y Algoritmos. Heap & HeapSort. Tomás Arredondo Vidal ELO320 Estructuras de Datos y Algoritmos Heap & HeapSort Tomás Arredondo Vidal Este material está basado en: Robert Sedgewick, "Algorithms in C", (third edition), Addison-Wesley, 2001 Thomas Cormen et

Más detalles

Programación II. Mario Aldea Rivas Programación II 04/04/11 1. Mario Aldea Rivas Programación II 04/04/11 2

Programación II. Mario Aldea Rivas Programación II 04/04/11 1. Mario Aldea Rivas Programación II 04/04/11 2 Programación II Bloque temático 1. Lenguajes de programación Bloque temático 2. Metodología de programación Bloque temático 3. Esquemas algorítmicos Tema 5. Algoritmos voraces, heurísticos y aproximados

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 08: Divide y vencerás (DyV) M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Introducción Divide y vencerás Observaciones

Más detalles

Tiempo de Ejecución. Midiendo el Tiempo de Ejecución

Tiempo de Ejecución. Midiendo el Tiempo de Ejecución Tiempo de Ejecución Arturo Díaz Pérez Sección de Computación Departamento de Ingeniería Eléctrica CINVESTAV-IPN Av. Instituto Politécnico Nacional No. 2508 Col. San Pedro Zacatenco México, D. F. CP 07300

Más detalles

Diseño y Análisis de Algoritmos

Diseño y Análisis de Algoritmos 1. Recursividad 2. "Dividir para Reinar" 3. Recursividad y Tabulación (Programación Dinámica) 4. Métodos Matemáticos Funciones discretas Notación O Ecuaciones de recurrencia 5. Casos de Estudio Breve descripción

Más detalles

ELO311 Estructuras de Computadores Digitales. Algoritmos de Multiplicación y División

ELO311 Estructuras de Computadores Digitales. Algoritmos de Multiplicación y División ELO311 Estructuras de Computadores Digitales Algoritmos de Multiplicación y División Tomás Arredondo Vidal Este material está basado en: material de apoyo del texto de David Patterson, John Hennessy, "Computer

Más detalles

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande Complejidad computacional Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2015 Departamento de Computación - FCEyN - UBA Algoritmos - clase 10 Introducción a la complejidad computacional y

Más detalles

Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos

Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos Estructura de Datos y Algoritmos Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos 1. Algorimos de ordenación Discutiremos el problema de ordenar un array de elementos. A los efectos de simplificar

Más detalles

dit UPM Tema 1: Algoritmos /complejidad /java Análisis y diseño de software José A. Mañas

dit UPM Tema 1: Algoritmos /complejidad /java Análisis y diseño de software José A. Mañas Análisis y diseño de software dit UPM Tema 1: Algoritmos /complejidad /java José A. Mañas http://jungla.dit.upm.es/~pepe/doc/adsw/index.html 21.2.2018 referencias http://www.dit.upm.es/~pepe/doc/adsw/

Más detalles

Introducción al Análisis del Coste de Algoritmos

Introducción al Análisis del Coste de Algoritmos 1/11 Introducción al Análisis del Coste de Algoritmos Josefina Sierra Santibáñez 7 de noviembre de 2017 2/11 Eficiencia de un Algoritmo Analizar un algoritmo significa, en el contexto de este curso, predecir

Más detalles

Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas

Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas Arreglos Algoritmos y Estructuras de Datos I Primer cuatrimestre 2007 Teórica de imperativo 3 Algoritmos de búsqueda secuencias de una cantidad fija de variables del mismo tipo se declaran con un nombre,,

Más detalles

1. Introducción al análisis de algoritmos

1. Introducción al análisis de algoritmos 1. Introducción al análisis de algoritmos 1. Introducción al concepto de algoritmia 2. Eficiencia de un algoritmo 3. Notación asintótica 4. Reglas generales Bibliografía Brassard y Bratley, 97; capítulos

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos Análisis de Algoritmos IIC1253 IIC1253 Análisis de Algoritmos 1 / 36 Complejidad de un algoritmo Un algoritmo A puede ser pensado como una función A : {0,1} {0,1} Qué tan general es esta representación?

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos Análisis de Algoritmos IIC1253 IIC1253 Análisis de Algoritmos 1 / 36 Complejidad de un algoritmo Un algoritmo A puede ser pensado como una función A : {0,1} {0,1} Qué tan general es esta representación?

Más detalles

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos 1! 1. Algoritmos recursivos " 1.1 Algoritmos recursivos. Recursión simple " 1.2 Algoritmos con vuelta atrás y ejemplos! 2. Complejidad de

Más detalles

Tema 5- Diseño Recursivo y Eficiente. Tema 5- Diseño Recursivo y. Descomposición recursiva ascendente de un vector. Etapas del diseño recursivo

Tema 5- Diseño Recursivo y Eficiente. Tema 5- Diseño Recursivo y. Descomposición recursiva ascendente de un vector. Etapas del diseño recursivo Tema 5- Diseño Recursivo y Eficiente Tema 5- Diseño Recursivo y Eficiente Germán Moltó Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia Índice general: 1. Introducción

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 03: Análisis temporal M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Caso de entrada Ejemplo 1 (Búsqueda lineal) Operación

Más detalles

ANÁLISIS Y DISEÑO DE ALGORITMOS

ANÁLISIS Y DISEÑO DE ALGORITMOS ANÁLISIS Y DISEÑO DE ALGORITMOS CURSO 2005/2006 BOLETÍN DE PROBLEMAS: DIVIDE Y VENCERÁS Ejercicio 1 Dado un vector ordenado y rotado k veces: diseñar un algoritmo O(log n) que encuentre el elemento mayor

Más detalles

Técnicas y Herramientas. Algoritmos y Complejidad. Técnicas de Demostración. Técnicas y Herramientas. Herramientas Matemáticas Básicas

Técnicas y Herramientas. Algoritmos y Complejidad. Técnicas de Demostración. Técnicas y Herramientas. Herramientas Matemáticas Básicas Técnicas y Herramientas Técnicas y Herramientas Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Primer Cuatrimestre 2014 Técnicas de Demostración Herramientas

Más detalles

Diseño de algoritmos

Diseño de algoritmos Diseño de algoritmos Jesús Bermúdez de Andrés. UPV-EHU Guías para la solución de ejercicios: Análisis de algoritmos Curso 2008-09 1. Con un algoritmo de función de coste temporal f(n) = n 3 resolvemos

Más detalles

Algoritmos y Complejidad

Algoritmos y Complejidad Algoritmos y Complejidad Técnicas y Herramientas Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Primer Cuatrimestre 2014 Técnicas y Herramientas Técnicas

Más detalles

Complejidad de los Algoritmos

Complejidad de los Algoritmos Que es un Algoritmo? Complejidad de los Algoritmos Webster: cualquier método especial para resolver cierta clase de problemas. Horowitz: método preciso utilizable en una computadora para la solución de

Más detalles

Algoritmos de Búsqueda

Algoritmos de Búsqueda Introducción a la Computación Algoritmos de Búsqueda Esteban E. Mocskos (emocskos@dc.uba.ar) Facultad de Ciencias Exactas y Naturales, UBA CONICET 11/10/2017 E. Mocskos (UBA CONICET) Algoritmos de Búsqueda

Más detalles

Guía práctica de estudio 4 Algoritmos de búsqueda parte 1

Guía práctica de estudio 4 Algoritmos de búsqueda parte 1 Guía práctica de estudio 4 Algoritmos de búsqueda parte 1 Elaborado por: Revisión: Ing. Laura Sandoval Montaño Facultad de Ingeniería U.N.A.M. Guía Práctica 4 Estructura de datos y Algoritmos II Algoritmos

Más detalles

Divide-y-vencerás, backtracking y programación dinámica

Divide-y-vencerás, backtracking y programación dinámica Divide-y-vencerás, backtracking y programación dinámica Diseño y Análisis de Algoritmos Cátedra de Programación Carrera de Ingeniería de Sistemas Prof. Isabel Besembel Carrera Noviembre, 2012 Prof. Isabel

Más detalles

Notación Asintótica 2

Notación Asintótica 2 Notación Asintótica 2 mat-151 1 Éxamen Rápido (6 minutos) Cada operación fundamental usa c milisegundos, cuánto tiempo toma contar hasta 1,000,000? Cuál es el valor de N? Cuál es el órden de complejidad

Más detalles

ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios AVL. Tomás Arredondo Vidal

ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios AVL. Tomás Arredondo Vidal ELO320 Estructuras de Datos y Algoritmos Arboles Binarios AVL Tomás Arredondo Vidal Este material está basado en: Robert Sedgewick, "Algorithms in C", (third edition), Addison-Wesley, 2001 Thomas Cormen

Más detalles

Tema 01: Fundamentos del Análisis Asintótico de Algoritmos

Tema 01: Fundamentos del Análisis Asintótico de Algoritmos Tema 01: Fundamentos del Análisis Asintótico de Algoritmos Noviembre, 2003 CS0218: Algoritmos y Programación II Introducción En Ciencias de la Computación se presenta con frecuencia la situación de analizar

Más detalles

Departamento de Informática Primer semestre de 2009 Ejercicios resueltos de temas del Certamen n o 3

Departamento de Informática Primer semestre de 2009 Ejercicios resueltos de temas del Certamen n o 3 Universidad Técnica Federico Santa María Fundamentos de Informática I Departamento de Informática Primer semestre de 2009 Ejercicios resueltos de temas del Certamen n o 3 1 Combinatoria 1. Se lanzan cuatro

Más detalles

Algorítmica y Lenguajes de Programación. Eficiencia y notación asintótica (ii)

Algorítmica y Lenguajes de Programación. Eficiencia y notación asintótica (ii) Algorítmica y Lenguajes de Programación Eficiencia y notación asintótica (ii) Eficiencia y notación asintótica. Análisis de algoritmos En la lección anterior el concepto de eficiencia asintótica. En ésta

Más detalles

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios 6.1.(Clase) Un programa que utiliza la técnica divide y vencerás, divide un problema de tamaño n en a subproblemas de tamaño n/b. El tiempo g(n) de la resolución directa (caso base) se considerará constante.

Más detalles

Introducción y Comportamiento Asintótico

Introducción y Comportamiento Asintótico Introducción y Comportamiento Asintótico M. Andrea Rodríguez-Tastets Ayudante: Erick Elejalde Universidad de Concepción,Chile www.inf.udec.cl\ andrea andrea@udec.cl I Semestre - 2014 1/64 Problemas and

Más detalles

ELO320 Estructuras de Datos y Algoritmos. Codificación Binaria. Tomás Arredondo Vidal

ELO320 Estructuras de Datos y Algoritmos. Codificación Binaria. Tomás Arredondo Vidal ELO320 Estructuras de Datos y Algoritmos Codificación Binaria Tomás Arredondo Vidal Este material está basado en: Robert Sedgewick, "Algorithms in C", (third edition), Addison-Wesley, ISBN 0-201-31663-3,

Más detalles

Estructuras de Datos. Andrea Rueda. Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas

Estructuras de Datos. Andrea Rueda. Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Estructuras de Datos Andrea Rueda Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Fundamentos de complejidad Es eficiente un algoritmo? Análisis de los recursos que el algoritmo

Más detalles

Algorítmica y Complejidad. Tema 5 Divide y Vencerás.

Algorítmica y Complejidad. Tema 5 Divide y Vencerás. Algorítmica y Complejidad Tema Divide y Vencerás. . Método.. Un ejemplo sencillo.. Complejidad del método.. Ejemplo: El máximo subarray.. Ejemplo: Multiplicación de enteros. . Método.. Un ejemplo sencillo..

Más detalles

Análisis de Algoritmos CB-102

Análisis de Algoritmos CB-102 Análisis de Algoritmos CB-102 Algoritmos en Paralelo Centro de Manufactura / Centro de Sistema Inteligentes ITESM Algoritmos en Paralelo TC-4001 - p. 1/22 Hasta este punto, nuestro modelo de computación

Más detalles

Introducción al análisis de algoritmos

Introducción al análisis de algoritmos Estructura de Datos y Algoritmos Introducción al análisis de algoritmos 1. Eficiencia en tiempo de Ejecución Cuando resolvemos un problema nos vemos frecuentemente enfrentando una elección de programas,

Más detalles

1/16. Coste de Algoritmos. 8 de abril de 2018

1/16. Coste de Algoritmos. 8 de abril de 2018 1/16 Coste de Algoritmos Josefina Sierra Santibáñez 8 de abril de 2018 2/16 Coste de un Algoritmo Analizar un algoritmo significa, en el contexto de este curso, estimar los recursos que requiere. Aunque

Más detalles

4.1. Polinomios y teoría de ecuaciones

4.1. Polinomios y teoría de ecuaciones CAPÍTULO 4 Polinomios y teoría de ecuaciones 4.1. Polinomios y teoría de ecuaciones Un polinomio real en x, o simplemente polinomio en x es una expresión algebraica de la forma a n x n + a n 1 x n 1 +

Más detalles

Tema 3. Análisis de costes

Tema 3. Análisis de costes Tema 3. Análisis de costes http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información

Más detalles

Estructuras de Datos y Algoritmos. Curso 2009/2010. Tema 3: Divide y Vencerás

Estructuras de Datos y Algoritmos. Curso 2009/2010. Tema 3: Divide y Vencerás Estructuras de Datos y Algoritmos Facultad de Informática Universidad Politécnica de Valencia Curso 2009/2010 Tema 3: Divide y Vencerás FI UPV: Curso 2009/2010 TEMA 3. Divide y Vencerás Objetivos Estudio

Más detalles

1. 1. Introducción al concepto de algoritmia

1. 1. Introducción al concepto de algoritmia 1. Introducción al análisis de algoritmos 1. Introducción al concepto de algoritmia 2. Eficiencia de un algoritmo 3. Notación asintótica 4. Reglas generales Bibliografía Básica: Aho, Hopcroft y Ullman,

Más detalles

La eficiencia de los programas

La eficiencia de los programas La eficiencia de los programas Jordi Linares Pellicer EPSA-DSIC Índice General 1 Introducción... 2 2 El coste temporal y espacial de los programas... 2 2.1 El coste temporal medido en función de tiempos

Más detalles

Notación Asintótica. Programación Avanzada

Notación Asintótica. Programación Avanzada Notación Asintótica Programación Avanzada Orden de crecimiento asintótico Ayuda a: Identificar el comportamiento de un algoritmo en el peor, el mejor o el caso promedio. Tener una idea del comportamiento

Más detalles

Programación. Curso 2005/2006. Tema 3: Complejidad computacional

Programación. Curso 2005/2006. Tema 3: Complejidad computacional Programación Facultad de Informática Universidad Politécnica de Valencia Curso 2005/2006 Tema 3: FI UPV: 29 de noviembre de 2005 Índice 1 Introducción 2 2 Consumo de recursos: costes espaciales y temporales

Más detalles

Algorítmica: Análisis de Algoritmos

Algorítmica: Análisis de Algoritmos Algorítmica: Análisis de Algoritmos Conrado Martínez U. Politècnica Catalunya Q1-2011-2012 Eficiencia de un algoritmo = consumo de recursos de cómputo: tiempo de ejecución y espacio de memoria Análisis

Más detalles

ELO320 Estructuras de Datos y Algoritmos. Listas. Tomás Arredondo Vidal

ELO320 Estructuras de Datos y Algoritmos. Listas. Tomás Arredondo Vidal ELO320 Estructuras de Datos y Algoritmos Listas Tomás Arredondo Vidal Este material está basado en: Robert Sedgewick, "Algorithms in C", (third edition), Addison-Wesley, ISBN 0-201-31663-3. 2001 material

Más detalles

Análisis de la Complejidad de Algoritmos

Análisis de la Complejidad de Algoritmos Análisis de la Complejidad de Algoritmos Gráficas estadística y minería de datos con python Miguel Cárdenas Montes Centro de Investigaciones Energéticas Medioambientales y Tecnológicas, Madrid, Spain miguel.cardenas@ciemat.es

Más detalles

11-Ordenar Definiciones 11.2 Selección 11.3 Intercambio 11.4 Inserción 11.5 Shellsort 11.6 Quicksort 11.7 Mergesort.

11-Ordenar Definiciones 11.2 Selección 11.3 Intercambio 11.4 Inserción 11.5 Shellsort 11.6 Quicksort 11.7 Mergesort. 11-Ordenar 11.1 Definiciones 11.2 Selección 11.3 Intercambio 11.4 Inserción 11.5 Shellsort 11.6 Quicksort 11.7 Mergesort 11: Ordenar 2 Definiciones Se desea ordenar un set de estructuras, que contienen

Más detalles

Técnicas de diseño de algoritmos Divide y Vencerás

Técnicas de diseño de algoritmos Divide y Vencerás Técnicas de diseño de algoritmos Divide y Vencerás Luis Javier Rodríguez Fuentes Amparo Varona Fernández Departamento de Electricidad y Electrónica Facultad de Ciencia y Tecnología, UPV/EHU luisjavier.rodriguez@ehu.es

Más detalles

CI2612: Algoritmos y Estructuras de Datos II. Nociones básicas. Objetivos. Algoritmos. Blai Bonet

CI2612: Algoritmos y Estructuras de Datos II. Nociones básicas. Objetivos. Algoritmos. Blai Bonet CI2612: Algoritmos y Estructuras de Datos II Blai Bonet Nociones básicas Universidad Simón Boĺıvar, Caracas, Venezuela Objetivos Algoritmos Concepto de algoritmo y modelo computacional Complejidad en tiempo

Más detalles

Tema 2 Fundamentos de Complejidad Algorítmica

Tema 2 Fundamentos de Complejidad Algorítmica Tema 2 Fundamentos de Complejidad Algorítmica Pablo Sánchez Dpto. Matemáticas, Estadística y Computación Universidad de Cantabria Santander (Cantabria, España) p.sanchez@unican.es Pablo Sánchez (MATESCO)

Más detalles

Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2

Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2 Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2 Diseño de algoritmos recursivos 1. Dado un vector de enteros de longitud N,

Más detalles

1. Definiciones previas

1. Definiciones previas Universidad de Chile Facultad de Ciencias Físicas y Matemáticas Departamento de Ingeniería Matemática MA47A: Optimización Combinatorial Profesor: Roberto Cominetti Auxiliares: Raul Aliaga Diaz, Cristóbal

Más detalles

Conceptos Fundamentales del Análisis de Algoritmos II

Conceptos Fundamentales del Análisis de Algoritmos II Conceptos Fundamentales del Análisis de Algoritmos II Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 17 de enero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II

Más detalles

Tema 3. Estructuras de control

Tema 3. Estructuras de control Tema 3. Estructuras de control 3.1. Secuencial 3.2. Selección 3.3. Repetición 2 Objetivos Objetivos del tema: Conocer y saber la utilidad de las tres estructuras de control (secuencial, alternativa y repetitiva)

Más detalles

IN34A - Optimización

IN34A - Optimización IN34A - Optimización Complejidad Leonardo López H. lelopez@ing.uchile.cl Primavera 2008 1 / 33 Contenidos Problemas y Procedimientos de solución Problemas de optimización v/s problemas de decisión Métodos,

Más detalles

Complejidad computacional y asintótica

Complejidad computacional y asintótica Complejidad computacional y asintótica Complejidad computacional Indica el esfuerzo que hay que realizar para aplicar un algoritmo y lo costoso que éste resulta. La eficiencia suele medirse en términos

Más detalles

Complejidad de algoritmos recursivos

Complejidad de algoritmos recursivos Tema 3. Complejidad de algoritmos recursivos 1. INTRODUCCIÓN... 1 CLASIFICACIÓN DE FUNCIONES RECURSIVAS... 1 DISEÑO DE FUNCIONES RECURSIVAS... 2 2. VENTAJAS E INCONVENIENTES DE LA RECURSIVIDAD... 4 3.

Más detalles

Multiplicación de matrices simétricas

Multiplicación de matrices simétricas Multiplicación de matrices simétricas La traspuesta de una matriz A n n es definida como una matriz A T n n tal que A T [i, j] =A[j, i] paracadai, j 2{1,...,n} Además, una matriz A es simétrica si A =

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos Análisis de Algoritmos Amalia Duch Barcelona, marzo de 2007 Índice 1. Costes en tiempo y en espacio 1 2. Coste en los casos mejor, promedio y peor 3 3. Notación asintótica 4 4. Coste de los algoritmos

Más detalles

ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios. Tomás Arredondo Vidal

ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios. Tomás Arredondo Vidal ELO320 Estructuras de Datos y Algoritmos Arboles Binarios Tomás Arredondo Vidal Este material está basado en: Robert Sedgewick, "Algorithms in C", (third edition), Addison-Wesley, 2001 Thomas Cormen et

Más detalles

ALGORITMOS INTRODUCCIÓN ALGORITMOS INTRODUCCIÓN AL ANÁLISIS Y AL DISEÑO DE AL ANÁLISIS Y AL DISEÑO DE UNIVERSIDAD AUTÓNOMA METROPOLITANA

ALGORITMOS INTRODUCCIÓN ALGORITMOS INTRODUCCIÓN AL ANÁLISIS Y AL DISEÑO DE AL ANÁLISIS Y AL DISEÑO DE UNIVERSIDAD AUTÓNOMA METROPOLITANA INTRODUCCIÓN AL ANÁLISIS Y AL DISEÑO DE ALGORITMOS El análisis de la complejidad de algoritmos, así como la discusión de las ventajas/desventajas, que tienen diferentes soluciones a los problemas clásicos,

Más detalles

Temario. Tipos de recursión. Eficiencia y recursión

Temario. Tipos de recursión. Eficiencia y recursión RECURSION Temario Tipos de recursión Eficiencia y recursión Tipos de RECURSION Según desde donde se realice el llamado recursivo: Directa: la función se llama a sí misma. Indirecta: la función A llama

Más detalles

Lenguaje de Diseño. Primera Parte. Resolución de Problemas y Algoritmos. Primer Cuatrimestre Ing. En Informática e Ing.

Lenguaje de Diseño. Primera Parte. Resolución de Problemas y Algoritmos. Primer Cuatrimestre Ing. En Informática e Ing. Primera Parte Resolución de Problemas y Algoritmos Ing. En Informática e Ing. En Computación Primer Cuatrimestre 2017 1 Lenguajes Algorítmicos Los algoritmos pueden describirse, en mayor o menor detalle,

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos January 15, 010 1 Pseudocódigo 3 Modelos de referencia Antes de analizar un algoritmo debemos tener un modelo de la implementación de la tecnología que se va a usar, incluyendo un modelo para los recursos

Más detalles

Estructuras de Datos. Clase 3 Análisis de algoritmos recursivos

Estructuras de Datos. Clase 3 Análisis de algoritmos recursivos Clase 3 Análisis de algoritmos recursivos http://cs.uns.edu.ar/~sag Bahía Blanca, Argentina Notación asintótica (Big-Oh) Sean f(n) y g(n) : N R f(n) es O(g(n)) ssiexisten c real con c>0 y n 0 natural con

Más detalles

Lenguaje de Diseño. Primera Parte. Segundo Cuatrimestre 2017

Lenguaje de Diseño. Primera Parte. Segundo Cuatrimestre 2017 Primera Parte Fund. de la Informática Int. a la Programación Int. a la Computación Resolución de Problemas y Algoritmos Segundo Cuatrimestre 2017 1 Etapas en el proceso de resolver un problema: 1- Comprender

Más detalles

Carlos Delgado Kloos Ingeniería Telemática Univ. Carlos III de Madrid. Java: Complejidad / 1

Carlos Delgado Kloos Ingeniería Telemática Univ. Carlos III de Madrid. Java: Complejidad / 1 Complejidad Carlos Delgado Kloos Ingeniería Telemática Univ. Carlos III de Madrid cdk@it.uc3m.es Java: Complejidad / 1 Comparación long fib (int n) {if (n

Más detalles

Algoritmos Recursivos de Búsqueda y Ordenación y sus tiempos

Algoritmos Recursivos de Búsqueda y Ordenación y sus tiempos Estructura de Datos y Algoritmos Algoritmos Recursivos de Búsqueda y Ordenación y sus tiempos 1. Algoritmos de ordenación recursivos 1.1. Mergesort, Ordenamiento por fusión Mergesort se ejecuta en un tiempo

Más detalles

Algoritmos Secuenciales y Recursivos

Algoritmos Secuenciales y Recursivos Algoritmos Secuenciales y Recursivos M. Andrea Rodríguez-Tastets Ayudante: Erick Elejalde Universidad de Concepción,Chile www.inf.udec.cl\ andrea andrea@udec.cl I Semestre - 2014 1/45 Análisis secuencial

Más detalles

Ordenamiento (Sorting)

Ordenamiento (Sorting) Ordenamiento (Sorting) El problema del ordenamiento Ordenar: arreglo[α] arreglo[α], donde α es un tipo tal que está definida la relación < α Uno de los problemas más clásicos, útiles y estudiados de la

Más detalles

1. Algoritmo, programa y pseudocódigo. Introducción al estudio de algoritmos. Ejemplos

1. Algoritmo, programa y pseudocódigo. Introducción al estudio de algoritmos. Ejemplos Introducción al estudio de algoritmos 1. Algoritmo, programa y pseudocódigo 2. Eficiencia y el principio de invarianza 3. Operaciones elementales 4. Casos mejor, peor y medio 5. Notación asintótica 6.

Más detalles

Análisis de algoritmos.

Análisis de algoritmos. Análisis de algoritmos. - Introducción. - Notaciones asintóticas. - Ecuaciones de recurrencia. - Ejemplos. 1 Introducción Algoritmo: Conjunto de reglas para resolver un problema. Su ejecución requiere

Más detalles

Muchas de las ecuaciones de recurrencia que vamos a usar en este curso tienen la siguiente forma: ( c n =0 T (n) = a T (b n b.

Muchas de las ecuaciones de recurrencia que vamos a usar en este curso tienen la siguiente forma: ( c n =0 T (n) = a T (b n b. El Teorema Maestro Muchas de las ecuaciones de recurrencia que vamos a usar en este curso tienen la siguiente forma: ( c n =0 T (n) = a T (b n b c)+f (n) n 1 donde a, b y c son constantes, y f (n) es una

Más detalles

Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera

Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera RECURSIÓN La recursión es una técnica fundamental en el diseño de algoritmos, que está basada en la solución de versiones más pequeñas del

Más detalles

CI2612: Algoritmos y Estructuras de Datos II. Recurrencias y el principio de dividir y conquistar. Recurrencias. Objetivos.

CI2612: Algoritmos y Estructuras de Datos II. Recurrencias y el principio de dividir y conquistar. Recurrencias. Objetivos. CI2612: Algoritmos y Estructuras de Datos II Blai Bonet Universidad Simón Boĺıvar, Caracas, Venezuela Recurrencias y el principio de dividir y conquistar Objetivos Recurrencias Repasar los conceptos de

Más detalles

Recurrencias y cómo resolverlas

Recurrencias y cómo resolverlas Recurrencias y cómo resolverlas Algoritmos y Estructuras de Datos II Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires 8 de septiembre de 2017 Algo2 (DC-FCEyN-UBA)

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 02: Complejidad de los algoritmos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Algoritmo Algoritmo vs. Proceso Computacional

Más detalles

UNIDAD 1 NUMEROS COMPLEJOS

UNIDAD 1 NUMEROS COMPLEJOS UNIDAD 1 NUMEROS COMPLEJOS El conjunto de los números complejos fue creado para poder resolver algunos problemas matemáticos que no tienen solución dentro del conjunto de los números reales. Por ejemplo

Más detalles

ELO320 Estructuras de Datos y Algoritmos. Stacks y Colas. Tomás Arredondo Vidal

ELO320 Estructuras de Datos y Algoritmos. Stacks y Colas. Tomás Arredondo Vidal ELO320 Estructuras de Datos y Algoritmos Stacks y Colas Tomás Arredondo Vidal Este material está basado en: Robert Sedgewick, "Algorithms in C", (third edition), Addison-Wesley, ISBN 0-201-31663-3. 2001

Más detalles

Algoritmos: Análisis de algoritmos

Algoritmos: Análisis de algoritmos Algoritmos: Análisis de algoritmos Alberto Valderruten LFCIA - Departamento de Computación Facultad de Informática Universidad de A Coruña, España www.lfcia.org/alg www.fi.udc.es Contenido Análisis de

Más detalles

COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS

COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS UNIVERSIDAD NACIONAL DE SANTIAGO DEL ESTERO Facultad de Ciencias Exactas y Tecnologías Licenciatura en Sistemas de Información 2009 COMPLEJIDAD Y EFICIENCIA DE ALGORITMOS 1 TEORÍA DE LA COMPLEJIDAD Dado

Más detalles