Diseño y análisis de algoritmos

Slides:



Advertisements
Presentaciones similares
Límites de Sucesiones de Números Reales
Advertisements

Complejidad Computacional
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Nuestro reto es educar al pensamiento, para que razone de acuerdo a ciertas reglas; con ello podremos ser más eficientes al momento en que ordenamos.
El conjunto de los números reales es Completo
FACTORIZACIÓN LU Bachilleres:
Programación II Recursividad
Valores y Vectores Propios
¿ Que es la complejidad de un algoritmo ?
MULTIPLICACION Y DIVISIÓN DE ENTEROS
Relaciones de equivalencia
KRIGING.
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Programación 1 Introducción
Ecuaciones diferenciales de 1er orden :
UNIDAD 1: LOS NúMEROS REALES
Matemáticas Discretas y Algoritmos
ESTRUCTURAS DE CONTROL
Programación de Computadores
EXPONENTES Y RADICALES
Representación de Números en un Registro Binario
Ecuaciones de recurrencia
Análisis de Algoritmos
DÍA 05 * 1º BAD CT SUCESIONES Y LÍMITES
A TRAVÉS DE LOS ESTÁNDARES DE EXCELENCIA EN MATEMÁTICAS Estándar 2:
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 )
Fundamentos de programación
Problemas, algoritmos y programas: Modelar: Simular o programar su solución en un computador. Algoritmos: Es un conjunto finito, y no ambiguo de etapas.
TEMA 4 TRANSFORMADA DE LAPLACE

Análisis de Algoritmos
Estructura de Datos y Algoritmos

M.S.C. Ivette Hernández Dávila
ESTRUCTURA DE DECISION LOGICA
Diseño y análisis de algoritmos
Descomposición Factorial Unidad 5
ECUACIONES LINEALES DEFINICIÓN
Fundamentos de Programación
Material de apoyo Unidad 4 Estructura de datos
Análisis de algoritmos
Inducción completa El principio del buen orden: todo conjunto no vacío de enteros positivos posee un mínimo.
Radicales y sus operaciones
Recurrencia Programación II de enero de 2009.
ESPAD III * TC 2 FRACCIONES.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 2: Orden de algoritmos.
Capítulo 6. ANÁLISIS DE ALGORITMOS
Tema 7: NOTACIONES ASINTÓTICAS
Representación de Algoritmos
Ecuaciones Algebraicas
CIFRAS SIGNIFICATIVAS
OPERACIONES ALGEBRAICAS
Potenciación y Radicación
ESTADO DE FLUJO DE EFECTIVO
Unidad V Recursión. Objetivos del Aprendizaje Explicar el concepto de recursión. Discutir las diferentes condiciones que deben ser satisfechas para que.
“CURSO PROPEDÉUTICO PARA EL MEJORAMIENTO DEL PENSAMIENTO MATEMÁTICO”
QUINTA CONFERENCIA Lugar: Oficinas Generales Fecha: 15 de Diciembre de 2007 Conferencista: Prof. Carlos Betancourt Monroy Centro de Estudios Científicos.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Matemática Básica (Ing.) 1 Sesión 12.1 Sistemas lineales y método de Gauss.
PROGRESIONES: Aritméticas y Geométricas
Soluciones en Serie de Ecuaciones Lineales
Ing. Haydeli del Rosario Roa Lopez
Logaritmo En análisis matemático, usualmente, el logaritmo de un número real positivo —en una base de logaritmo determinada— es el exponente al cual hay.
TEMA 3 SUCESIONES Y SERIES.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
1 Los números reales Los números racionales Los números irracionales
Transcripción de la presentación:

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

Temario Analisis, casos prácticos Operaciones sobre big O Notación Asintótica Cálculo de complejidad para recurrencias

Analisis, casos prácticos Operaciones sobre big O - Suma: Algoritmo1 Algoritmo2 Si algoritmo1 se comporta con una cierta complejidad y la misma entrada es usada por el Algoritmo 2 con otra complejidad, cual es el comportamiento del conjunto?? Ejemplo: tiene tres algoritmos que se ejecutan uno despues de otro, usando la misma Entrada, calcule la compljidad todal si:

Analisis, casos prácticos Operaciones sobre big O - Suma, caso general: Algoritmo1 Algoritmo2 El mismo caso anterior , pero ahora los algoritmos se comportan con una complejidad Bajo ciertas cirscunstancias y con otra bajo otras cirscunstancias. Cuál es la complejidad del todo. Ejemplo: Si los datos son primos Si los datos no son primos Si los datos son primos Si los datos no son primos datos son primos La regla se mantiene, pero ahora se aplica a cada clase de entrada datos no son primos

Analisis, casos prácticos Operaciones sobre big O - Multiplicacion de funciones: Si se tienen dos funciones de un cierto orden, cuál es el orden del producto de dichas funciones?: De esta regla se desprende el siguiente corolario: Demostración:si ocupamos la regla de multiplicación para las siguientes funciones Se obtiene pero se sabe que Ejemplo: calcular

Analisis, casos prácticos Notación Asintótica A parte de la introducción del “gran O” como manera de identificar clases de funciones que Acotan superior,emte a otras, se pueden definir otros tipos de acotamiento que serán Señalados por sus propios símbolos: Acotamiento inferior: La idea es eoncontrar una clase de funciones g que esté siempre acotada por f , es una especie de “inversa” del gran O. Se puede decir entonces que f(n) está acotada inferiormente por la clase de funciones g(n) tal que exista un m reales positivos y un k enteros positivos y se cumpla Entonces “gran omega” rpresenta todas las funciones que dominan a g Ejemplo: Corolario: Acotamiento estricto: La idea es eoncontrar una clase de funciones g que sea de la misma clase que f , simplemente, las dos funciones son del mismo orden, formalmente: Ejemplo, polinomios del mismo grado:

Analisis, casos prácticos Notación Asintótica Jerarquía: Repasemos la jerarquía de algunas funciones, en base a las nuevas definiciones Propiedad de transitividad de O: Entonces Propiedad de simétrica de:

Analisis, casos prácticos Cálculo de complejidad para recurrencias Introdución: Recursividad: técnica por la cual un problema se define en términos de sí mismo. Tiene valores o condiciones iniciales, operación en término de sí mimo y condición de parda: Ejemplo: definición del factorial n>=0: 0!=1 n!=n*(n-1)! Si n>0 (criterio de parada n=1) Es una herramienta potente, útil y sencilla. Ciertos problemas se adaptan de manera natural a las soluciones recursivas. Clasificación de funciones recursivas Según desde dónde se haga la llamadarecursiva: Recursividad directa:la función sel llama a sí misma Recursividad indirecta: la función A llama a la función B y ésta llama a A Según el número de llamadas recursivas generadas en tiempo de ejecución: Función recursiva lineal o simple : se genera una única llamada interna Función recursiva no lineal o múltiple : se generan dos o más llamadas internas.

Analisis, casos prácticos Cálculo de complejidad para recurrencias Introdución: Clasificación de funciones recursivas Según el punto donde se realice la llamada recursiva : Final (Tail Recursion):la llamada recursiva es la última instrucción de la función. No Final : Se hace alguna operación al volver de la llamada recursiva. Las funciones recursivas finales suelen ser más eficientes (en la constante multiplicativa en cuanto al tiempo y sobre todo en cuanto al espacio) que las no finales. (Algunos compiladores pueden optimizar automáticamente estas funciones transformándolas en iterativas) Diseño de funciones recursivas: El problema original se puede transformar en otro problema similar ‘mas simple’ Forma directa de solucionar problemas fácilmente definidos. Ejemplo:cálculo del factorial de un número entero no negativo.

Analisis, casos prácticos Cálculo de complejidad para recurrencias -Introducción Diseño de funciones recursivas : Análisis por casos del problema: Debe existir al menos una condición de termino en la cual no es necesaria una llamada recusiva. Son los casos triviales que se solucionan directamente. Si n=0 o n=1 , el factorial es 1. Convergenciade las llamadas recursivas: Cada llamada recursiva debe realizarce cada vez con “ datos más pequeños”, de forma que se alcance la condición de término. factorial(n)=n*factorial(n-1). Principio de inducción: Si las llamadas recursivas funcionan bien, la función completa funciona bien. factorial(0)=1,factorial(1)=1 para n>1, si se supone correcto el cálculo del factorial de (n-1), entonces factorial(n)=n*factorial(n-1) {correcto}

Analisis, casos prácticos Cálculo de complejidad para recurrencias -Ventajas e inconvenientes de la recursividas Ventajas: Solución de problemas de manera natural, sencilla, comprensible y elegante. Ejemplo: dado un número entero no negativo, escribir su equivalente en binario: procedimiento pasarbinario(N:entero); inicio si N<2 entonces escribir(N) sino pasabinario(N DIV 2) escribir(N MOD 2) fin Facilidad para comprobar que la solución es correcta

Analisis, casos prácticos Cálculo de complejidad para recurrencias -Ventajas e inconvenientes de la recursividas Desventajas: Solución de problemas es más ineficiente en tiempo y espacio que las versiones iterativas, debido a la llamada a subprogramas, la creación de variables dinámicas en la pila, etc. Para tamaño de problemas grande, la capacidad de la pila puede sobrepasarce En general cualquier función recursiva se puede transformar en una función iterativa. Ventaja de la función iterativa: más eficiente en tiemo y espacio Desventaja:en algunos casos puede ser muy complicada. Si la eficiencia es un parámetro crítico y la función se va a ejecutar frecuentemente, conviene usar una solución iterativa. La recursividad se puede simular con el uso de pilas para transformar un programa recursivo en iterativo. Las pilas se usan para almacenar los valores de los parámetros del subprograma, las variables locales y los resultados de la función.

Analisis, casos prácticos Cálculo de complejidad para recurrencias -Ventajas e inconvenientes de la recursividas Ejemplo cálculo del factorial de 3 1 1 2 2 1 3 3 3 2 6 n fact n fact n fact -Cálculo de la complejidad En un algoritmo recursivo la función g(n) que establece su tiempo de ejecución será llamada T(n), esta será una ecuación de recurrencia donde en la expresón aparece la propia función T. Para resolver este tipo de ecuaciones hay que encontrar una expresión no recursiva de T.

Analisis, casos prácticos Cálculo de complejidad para recurrencias - Cálculo de la complejidad Ejemplo: factorial, funcion factorial(n:entero):entero; inicio si n<=1 entonces factorial:=1 sino factorial:= n*factorial(n-1) fin Sea T(n) el tiempo de ejecución en el peor caso. Se escribe una ecuación de recurrencia que acota a T(n) superiormente como: , si n<=1 , si n>1 Donde es el tiempo de ejecución en el caso trivial n<=1 Si n>=1, el tiempo requerido por la función puede dividirse en dos partes: -T(n-1):la llamada recursiva a factorial con n-1

Analisis, casos prácticos Cálculo de complejidad para recurrencias - Cálculo de la complejidad :el tiempo de evaluar la condición (n>1) y multiplicar n Para resolver las ecuaciones de recurrencia se suelen usar tres métodos: Suponer una solución f(n), y usar la recurrencia para demostrar por inducción que T(n)=f(n) Sustituir las recurrencias por su igualdad hasta llegar a cierto T(n0) que sea conocido Usar soluciones generales para ciertas ecuaciones de recurrencia conocidas Usaremos el segundo método. Para el ejemplo: Si k=n-1 entonces

Analisis, casos prácticos Cálculo de complejidad para recurrencias - Cálculo de la complejidad Ejemplo: funcion rec(n:entero):entero; inicio si n<=1 entonces rec:=1 sino rec:= rec(n-1)+rec(n-1) fin , si n<=1 , si n>1 T(n)=2T(n-1)+1= =2(2T(n-2)+1)+1 = 2T(n-2)+(2-1) ....... =2T(n-k)+(2-1) Para k=n-1 2 2 k k

Analisis, casos prácticos Cálculo de complejidad para recurrencias - Cálculo de la complejidad Ejemplo: funcion rec2(n:entero):entero; inicio si n<=1 entonces rec2:=1 sino rec:= 2*rec(n DIV 2) fin , si n<=1 , si n>1 T(n)=T(n/2)+1= = T(n/2 )+1+1=T(n/2 ) +2 ....... =T(n/2 )+k Para formar T(1) es necesario resolver n/2 =1, lo que da 2 2 k k