Complejidad Programación II de febrero de 2009.

Slides:



Advertisements
Presentaciones similares
¿ Que es la complejidad de un algoritmo ?
Advertisements

Recurrencia Programación II 3-4 de febrero de 2009.
Complejidad Programación II de febrero de 2009.
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.
Recurrencia Programación II de enero de 2009.
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 Ordenamiento en tiempo lineal y Estadísticas de orden Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem 2002.
Algoritmos de Ordenamiento y Complejidad
Análisis de Algoritmos
Tema 7: NOTACIONES ASINTÓTICAS
Quick Sort Estructuras de Datos Universidad Autónoma de Tlaxcala Unidad Académica Multidisciplinaria 14 de Septiembre de 2012.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.
Análisis de los algoritmos Unidad 7. Análisis La resolución práctica de un problema – algoritmo o método de resolución – y por otra un programa o codificación.
MÉTODO CONGRUENCIALES David Chacón. Método Congruenciales Se han desarrollado básicamente tres métodos de congruenciales para generar números pseudoaleatorios,
Algebra lineal Raíces de un polinomio. Polinomio  En matemáticas, se denomina polinomio a la suma de varios monomios (llamados términos del polinomio).
ALGORITMOS Y TIPOS DE DATOS Un algoritmo es un método para resolver un problema. Para la creación de un programa (resolver un problema) en un lenguaje.
Unidad 4: Abstracciones de Datos y Algoritmia Concepto de Algoritmo. Recursos que requiere un algoritmo. Operación elemental. Principio de Invarianza.
1 Ordenación, Clasificación Introducción Algoritmos Complejidad.
Matemática Operaciones básicas. Aritmética Es la rama de la matemática cuyo objeto de estudio son los números y las operaciones elementales hechas con.
Jennifer Morales Clarke 2º Bach. A
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
VENTAJAS DEL ALGORITMO LMS
Ingeniería en Sistemas
Por; María Del C. Vélez Math. 4-6
RECURSIVIDAD.
Formulas y Funciones Básicas de Excel.
Estructuras de Datos Recursividad.
Estructura de Datos Introducción a:.
Unidades de almacenamiento
Figure: Algoritmos.
TUTORIAL PSeint.
Continuación Unidad 4. Control de flujo
Series de Fourier Las series de Fourier se aplican a señales periódicas. Fueros propuestas por el matemático francés Joseph Fourier en Con el uso.
EXPRESIONES Una expresión es una forma especial de asignación.
Unidad 2. Algoritmos Unidad 4. Control de flujo
Continuación Unidad 4. Control de flujo
CONCEPTOS PRELIMINARES (Cont)
Fundamentos de Programación. Estructuras de Control
Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.
Estructuras de control Resolución de problemas y algoritmos
UNIDAD 0105: SUCESIONES Y SERIES
EL ÁLGEBRA.
Programación: paradigma estructurado Mgs Christian Rosado.
Estructuras de Repetición Pseudocodigo1 Estructuras de Repetición Algoritmos Mientras Hacer-Mientras Para.
U NIVERSIDAD S AN P EDRO F ILIAL B ARRANCA F ACULTAD DE I NGENIERÍA E SCUELA P ROFESIONAL DE I NG. I NFORMÁTICA Y DE S ISTEMAS C URSO : ALGORITMOS Tema.
Excel Estadístico Medidas de Dispersión.
Fórmulas Recursivas y Aproximaciones
Recursividad Estructura de datos 2005.
Divide y vencerás 1. Método general.
Estructura de Datos M.C. J. Andrés V. F. FCC/BUAP
Curso de Programación Estructurada
Teoría Nº 3 Conceptos Básicos de Algoritmia Estructuras de Control
MATEMÁTICA TÉCNICA MAT1046R
Eficiencia de un Algoritmo  El análisis de algoritmos estudia desde el punto de vista teórico los recursos computacionales que necesita un programa para.
INTRODUCCIÓN A LA PROGRAMACIÓN ABRAHAM SOPLA MASLUCÁN MAESTRO EN CIENCIAS DE LA COMPUTACIÓN INSTITUTO TECNOLÓGICO DE MONTERREY.
Estructura general de un programa. Estructura general de un programa. Pseudocódigo Diagrama de flujo Concepto de programas. Concepto de programas. Instrucciones.
Aritmetica.  es la rama de la matemática cuyo objeto de estudio son los números y las operaciones elementales hechas con ellos: adición, sustracción,
METODOS DE ORDENAMIENTO CHRISTIAN MICHAEL OBANDO GARCES JOAO ADRIAN BARIONUEVO.
Recursividad 1 Análisis de algoritmos. Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más.
Nelson Baloian, José A. Pino
Complejidad algorítmica
Estructuras de Repetición Algoritmos
Ejemplo 1: Sea la sucesión de enteros b 0, b 1, b 2, b 3, b 4, b 5, ……. donde b n = 2n para todo N Entonces tenemos: b 0 = 2*0 = 0 b 1 = 2*1 = 1 b 2 =
Tratamientos secuenciales I
Se define una ecuación como una igualdad en la que intervienen tanto cantidades conocidas como desconocidas, llamadas estas últimas incógnitas. Encontrar.
EVOLUCIÓN DE LOS PARADIGMAS DE PROGRAMACIÓN Integrantes: Christian Abad, Kevin Colcha.
Estrategia algorítmica
Transcripción de la presentación:

Complejidad Programación II de febrero de 2009

Eficiencia de algoritmos ¿Cómo determinar si un algoritmo es mejor que otro? – Fácil a implementar – Fácil a entender – Fácil a modificar – Usa menos memoria – Menor tiempo de ejecución

Tiempo de ejecución El tiempo de ejecución de un programa depende de varios factores: – Los datos de entrada – La calidad del código generado por el compilador – La máquina donde se ejecuta el programa – La complejidad del algoritmo en que se basa

Complejidad Complejidad: número de operaciones elementales en función de la entrada Si n es la medida de los datos de entrada, T(n) denota el tiempo de ejecución T(n) no tiene unidad Hace referencia al caso peor (otras opciones: caso promedio, caso mejor)

Operaciones elementales Operaciones aritméticas (adición, sustracción, multiplicación, división, módulo) Asignación de valores a una variable Comparaciones Devolución del resultado

Composición de la complejidad 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)

Ejemplo: Factorial Calcular T(n) para la versión iterativa de Factorial(n) funcion Factorial(n:natural) devuelve natural resultado := 1; mientras (n > 0) hacer resultado := resultado * n; n := n – 1; fmientras devuelve resultado; ffuncion

Notación asintótica Mide la velocidad de crecimiento de una función Una función T(n) es O(f(n)) (O-grande de f(n)) si T(n) crece como f(n) Por ejemplo, la función T(n) = 5n + 3 es O(n), es decir, crece como n En general, es igual al término más grande (constantes excluidos)

Definición matemática n T(n) f(n) c*f(n) N O(f(n)) = {T(n) :  c,N,  n>N, T(n) < c*f(n)}

Funciones típicas Velocidad de crecimientoNombre de la función O(1)constante O(log(n))logarítmica O(n)lineal O(nlog(n))casi lineal O(n 2 )cuadrática O(n k )polinómica O(2 n )exponencial

Velocidad de crecimiento n kkkk log(n)3610 n nlog(n) n2n n3n n2n

Ejemplo: ordenación Complejidad en notación asintótica de los algoritmos de ordenación básicos – Algoritmo de la burbuja (Bubble Sort) – Ordenación por inserción (Insertion Sort) – Ordenación por selección (Selection Sort)

Doble bucle ¿Cuál es la complejidad de la suma …+n? Ejemplo del Principio de Inducción: …+n = n(n+1)/2 ¿Notación asintótica?

Funciones recursivas Establecer la ecuación de recurrencia: – Complejidad en el caso base – Complejidad en el caso recursivo Expandir la complejidad en el caso base en función del número de llamadas recursivas hechas Encontrar el número de llamadas necesarias para estar en el caso base

Ejemplo: Factorial Ecuación de recurrencia: – T(n) = a, n = 0 – T(n) = b + T(n-1), n > 0 Expandir en el caso recursivo: Llamadas recursivasT(n) 1b + T(n-1) 22b + T(n-2) kkb + T(n-k)

Ejemplo: Factorial T(n) = kb + T(n-k) Para eliminar la dependencia de T(), escoger k tal que estamos en el caso base Si k=n, T(n-k) = T(0) = a Si substituimos k=n en la expresión, obtenemos T(n) = bn + a ¿Notación asintótica?

Ejemplo: Búsqueda binaria funcion BB(V:vector; i,d,k:natural) devuelve booleano si (i = d) entonces devuelve (V[i] = k); sino si (V[(i+d)/2] < k) entonces devuelve BB(V, (i+d)/2 + 1, d, k); sino devuelve BB(V, i, (i+d)/2, k); fsi ffuncion

Ejemplo: Búsqueda binaria Ecuación de recurrencia (medida n=d – i): – T(n) = a, n = 0 – T(n) = b + T(n/2), n > 0 Expandir en el caso recursivo: Llamadas recursivasT(n) 1b + T(n/2) 22b + T(n/4) kkb + T(n/2 k )

Ejemplo: Búsqueda binaria T(n) = kb + T(n/2 k ) Para eliminar la dependencia de T(), escoger k tal que estamos en el caso base Problema: n/2 k = 0 => 2 k =  Idea: escoger n/2 k = 1  k = log(n) T(n) = b*log(n) + T(1) = b*log(n) + b + a ¿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 + c*n + 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 )

Un experimento Ordenar mil millones de elementos Procesador con frecuencia 1GHz Tiempo de ejecución aproximado – Bubble (Insertion, Selection) Sort: O(n 2 ) – Mergesort: O(nlog(n)) log(10 9 )  segundos  ¡32 años!

Ejemplo: Quicksort Caso mejor: como Mergesort Caso peor: ¡como Bubble Sort! Caso promedio: como Mergesort