Complejidad Programación II 17-18 de febrero de 2009.

Slides:



Advertisements
Presentaciones similares
Relaciones de recurrencia
Advertisements

Funciones/Funciones Elementales/Polinomios.
Diseño y análisis de algoritmos
Complejidad de Algoritmos
¿ Que es la complejidad de un algoritmo ?
1.- Definiciones. 2.- Fórmulas. 3.- Esquema. 4.- Ejercicios.
Bloque 2: Divide y Vencerás
Evaluacion de algoritmos
A.- PRODUCTO DE POTENCIAS DE IGUAL BASE.
Eficiencia de los algoritmos
2 Acciones y funciones 2.1 Concepto
JOCELYN DÁVILA HERNÁNDEZ JORGE QUECHOLAC ZAMBRANO.
Recurrencia Programación II 3-4 de febrero de 2009.
Fundamentos de Programación
Ejercicios de funciones
Ecuaciones de recurrencia
Unidad II Aplicaciones con Arreglos en Java y C++
Método de Steffensen.
Algoritmos numéricos. Método de “aproximación sucesiva”: se genera una hipótesis sobre la respuesta y en cada iteración se utiliza dicha hipóte- sis para.
Expresiones algebraicas
Análisis y Diseño de Algoritmos. Propiedades : f ( n )  O ( f ( n ) ) a ) O ( f ( n ) )  O ( g ( n ) )  f ( n )  g ( n )

Autora: Francisca Montañez Muñoz. Hojas de cálculo, II 1 09 Fórmulas en Excel Una fórmula es una ecuación que calcula un nuevo valor a partir de otros.
Ecuaciones Lineales.
Operaciones combinadas
Resolución de recurrencias, por cambio de variable
Búsqueda y ordenación Programación II 7-8 de enero de 2009.
Divide y vencerás 1. Método general.
Recurrencia Programación II de enero de 2009.
4.  Métodos matemáticos.
Recurrencia Programación II de enero de 2009.
Funciones Presentado por: Tammy Roterman y Orli Glogower
Potencias de Exponente Natural.
POTENCIAS III medio electivo 6 horas.
Operaciones con números complejos
Análisis de Algoritmos 2
1  Una Ecuaci ó n de Recurrencia Lineal de Orden n a Coeficientes Constantes se define seg ú n la ecuaci ó n: ∑ d K a K = g(n) donde d K son constantes.
1 Potencias y raíces Conceptos Potencia
Algoritmos de Ordenamiento y Complejidad
Ordenación El ordenamiento por inserción (insertion sort en inglés) es una manera muy natural de ordenar para un ser humano, y puede usarse fácilmente.
Parte I. Estructuras de Datos.
M.C. Meliza Contreras González 1.  Es normal que un algoritmo se base en procedimientos auxiliares, haga llamadas recursivas para tamaños menores o reduzca.
Sesión 7 Tema: Operatoria con raíces y logaritmos.
3. COMPONENTES PRINCIPALES
Capítulo 6. ANÁLISIS DE ALGORITMOS
LA UNIDAD ARITMÉTICA Y LÓGICA
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 2: Divide y Vencerás Unidad 1: Nociones básicas.
1.1 – Clasificación de los números reales
Ecuaciones de primer grado
LOGARITMOS.
LOGARITMOS.
FUNCIONES PARA OPERAR CON EXPRESIONES ALGEBRAICAS
Quick Sort Estructuras de Datos Universidad Autónoma de Tlaxcala Unidad Académica Multidisciplinaria 14 de Septiembre de 2012.
Calculo de Limite de Funciones
MTRA. HILDA V. MARTÍNEZ GUZMÁN
Ingeniería en Software Facultad de Ingeniería 2014
CURSO DE MATEMATICAS TEMAS DE MATEMATICAS Matemáti cas 1 Matemá ticas 2 Matemá ticas 4 Matemá ticas 3 Calculo Diferencial Calculo Integral.
Conceptos Generales Programación I Docente: Ing. Marleny Soria M.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
LOGARITMOS.
OPERACIONES CON POTENCIAS
Programación I Docente: Ing. Marleny Soria M..  Es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar.
Se lee “tres elevado a cuatro es ochenta y uno”
@ Angel Prieto BenitoMatemáticas Aplicadas CS I1 U.D. 2 MATEMÁTICA FINANCIERA.
Conceptos Generales PROGRAMACIÓN I DOCENTE: ING. MARLENY SORIA M. 1.
Solución a Ecuaciones de Recurrencia Dr. Rogelio Dávila Pérez División de Posgrado Universidad Autónoma de Guadalajara
Programación Dinámica  La programación dinámica se suele utilizar en problemas de optimización, donde una solución está formada por una serie de decisiones.
Operaciones algebraicas
EL BINOMIO DE NEWTON.
Complejidad Programación II de febrero de 2009.
Transcripción de la presentación:

Complejidad Programación II de febrero de 2009

Complejidad Complejidad T(n): número de operaciones elementales en función de la medida n Hace referencia al caso peor Notación asintótica: término de T(n) que crece más rápido en función de n O(logn)logarítmica O(n)lineal O(nlogn)casi-lineal O(n 2 )cuadrática

Funciones iterativas Secuencia: la complejidad se suma Condicional: la complejidad en el caso peor es el máximo de las dos opciones Bucles: la complejidad es el producto del número de iteraciones y la complejidad interior del bucle (incluida la condición)

Funciones recursivas Establecer la ecuación de recurrencia: – T(n) en el caso base – T(n) en el caso recursivo En el caso recursivo, T(n) depende de T(f(n)) (p.ej. f(n)=n-1, f(n)=n/2) Expandir T(f(n)) hasta que la expresión para T(n) sólo depende del caso base

Logaritmos log(n) = el exponente a la que 2 se ha de elevar para obtener n Ej: log(8) = 3 (porque 2 3 = 8) Ej: log(1024) = 10 (porque 2 10 = 1024) Aritmética: log(xy) = log(x) + log(y) Ej: log(1024*1024*1024) = = 30 Consecuencia: log(n) = número de veces que se ha de dividir n entre 2 para tener 1

Torres de Hanoi

accion MoverTorre(n:natural; X,Y,Z:barra) si (n > 0) entonces MoverTorre(n-1, X, Z, Y); MoverDisco(X, Y); MoverTorre(n-1, Z, Y, X); fsi faccion

Torres de Hanoi Ecuación de recurrencia: – T(n) = a, n = 0 – T(n) = b + 2T(n-1) LlamadasT(n) 1b + 2T(n-1) 23b + 4T(n-2) k(2 k -1)b + 2 k T(n-k)

Torres de Hanoi Eliminar la dependencia de T() k=n  T(n-k) = T(0) = a T(n) = (2 k – 1)b + 2 k a = (a+b)2 k – b ¿Notación asintótica?

Ejemplo: Mergesort Medida: n = D – E Depende de la complejidad de Combina Los bucles de Combina se repiten un número de veces igual al número total de elementos de V 1 y V 2 Ecuación de recurrencia: – T(n) = a, n = 0 – T(n) = b + cn + 2T(n/2)

Ejemplo: Mergesort n/2 k = 1  k = log(n) T(n) = bn + cnlog(n) + an ¿Notación asintótica? LlamadasT(n) 1b + cn + 2T(n/2) 23b + 2cn + 4T(n/4) k(2 k -1)b + kcn + 2 k T(n/2 k )

Ordenación Algoritmos de ordenación básicos: O(n 2 ) – Algoritmo de la burbuja (Bubble Sort) – Ordenación por inserción (Insertion Sort) – Ordenación por selección (Selection Sort) Mergesort: O(nlogn) Quicksort???

Ecuaciones de recurrencia ProblemaT(n) (caso base) T(n) (caso recursivo) O(f(n)) Factorialab + T(n-1)n Búsqueda binaria ab + T(n/2)logn Torres de Hanoi ab + 2T(n-1)2n2n Mergesortab + cn + 2T(n/2)nlogn

Estudio: Fibonacci funcion F(n:natural) devuelve natural si (n <= 1) entonces devuelve 1; sino devuelve F(n-2)+F(n-1); fsi ffuncion

Estudio: Fibonacci Ecuación de recurrencia: – T(n) = a, n <= 1 – T(n) = b + T(n-1) + T(n-2), n > 1 Llam.T(n) 1b + T(n-1) + T(n-2) 22b + 2T(n-2) + T(n-3) 34b + 3T(n-3) + 2T(n-4) 47b + 5T(n-4) + 3T(n-5) k(F(k+1)-1)b + F(k)T(n-k) + F(k-1)T(n-k-1)

Estudio: Fibonacci k = n-1  T(n-k) = T(1) = T(n-k-1) = T(0) = a T(n) = (F(n)-1)b + F(n-1)T(1) + F(n-2)T(0) Notación asintótica: T(n) = ¡O(F(n))! Aproximación: O(F(n)) = O(1,6 n ) ¡Complejidad exponencial!

Estudio: Fibonacci Versión iterativa funcion F(n:natural) devuelve natural variable f1,f2,tmp:natural; f1 := f2 := 1; mientras (n > 1) hacer tmp := f2; f2 := f1 + f2; f1 := tmp; n := n – 1; fmientras devuelve f2; ffuncion

Estudio: Fibonacci ¿Complejidad versión iterativa?

Estudio: Fibonacci La actualización de F(i),F(i+1) se puede ver como la multiplicación con una matriz = Por lo tanto, obtenemos= F(i) F(i+1) F(i-1) F(i) F(n) F(n+1) F(0) F(1) n n 1 1

Estudio: Fibonacci Podemos calcular el exponente de la matriz de manera recursiva = = n par = n impar n2n n2n n n n2n2 n2n2

Estudio: Fibonacci funcion Exp(n:natural) devuelve matriz de natural variable A,B:matriz (2x2) de natural; si (n = 0) entonces devuelve [[1,0],[0,1]]; sino A := Exp(n div 2); B := A * A; // multiplicacion de matrices 2x2 si (n mod 2 > 0) entonces B := B * [[0,1],[1,1]]; fsi devuelve B; fsi ffuncion

Estudio: Fibonacci funcion F(n:natural) devuelve natural variable A:matriz (2x2) de natural; A := Exp(n); devuelve A(1,1) + A(1,2); ffuncion

Estudio: Fibonacci ¿Complejidad Exp(n)? ¿Complejidad F(n)?

Estudio: Fibonacci Fibonacci recursivo original: O(1,6 n ) Fibonacci iterativo: O(n) Fibonacci recursivo c/ exponente: O(logn) n=10n=100n=1000 O(1,6 n )1102,6* ,3* O(n) O(logn)3710