Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 2: Divide y Vencerás Unidad 1: Nociones básicas.

Slides:



Advertisements
Presentaciones similares
Relaciones de recurrencia
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
Diseño y análisis de algoritmos
Programación de Computadores
Descomposición en Fracciones simples.
Programación Básica con NQC Pedro F. Toledo – Patricio Castillo 18/08/2006.
¿ Que es la complejidad de un algoritmo ?
MÉTODOS NUMÉRICOS. Explicación del método de L U. Realizado por:
Razonamiento Explícito y Experimentación en la Algoritmia
Tema 1: Programación dinámica
Son problemas secuenciales: El problema se puede dividir en etapas. Definición: Método que permite determinar de manera eficiente las decisiones que optimizan.
Bloque 2: Divide y Vencerás
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introducción Unidad 5: Matemáticas necesarias.
Unidad 4: Análisis de algoritmos (parte II)
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Algoritmos de Búsqueda
Actividad No.5 °INTEGRACIÓN POR FRACCIONES PARCIALES °ANTECEDENTES
DEFINICIONES Y TERMINOLOGÍA
2.1 Recursividad El hecho de que una función pueda llamarse a sí misma.
Estructuras de Control
Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte
Ecuaciones de recurrencia
Polinomios Álgebra Superior.
TIPOS DE MODELOS DE REGRESIÓN Y SUPUESTOS PARA EL MODELO A
Análisis de Algoritmos
TEMA 4 TRANSFORMADA DE LAPLACE

Análisis de Algoritmos
Introducción al análisis de algoritmos
Algoritmos.
Estructura de Datos y Algoritmos

Algoritmos de búsqueda
Divide y vencerás 1. Método general.
Análisis de algoritmos
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 3: Análisis de algoritmos (parte I)
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
4.  Métodos matemáticos.
La División Sintética Menú: Definición.
Titular: Agustín Salvia
Parte II. Algorítmica. 4. Programación dinámica.
Análisis de Algoritmos 2
Parte I. Estructuras de Datos.
Una introducción a la computación evolutiva
SIG. LAURA VELAZQUEZ MORELOS. Hace referencia a un refrán que implica resolver un problema difícil, dividiéndolo en partes más simples tantas veces como.
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.
Parte I. Estructuras de Datos.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 2: Orden de algoritmos.
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.
Parte I. Estructuras de Datos.
Capítulo 6. ANÁLISIS DE ALGORITMOS
Análisis de Algoritmos
ELO3201 Análisis de Algoritmos (cont.) Agustín J. González ELO320 1º sem 2002.
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
METODOS DE BUSQUEDA EN C++ Oscar Michel Ruiz León
Diagrama de Flujo Diagrama de flujo sencillo con los pasos a seguir si una lámpara no funciona. El diagrama de flujo o diagrama de actividades es la representación.
Sistemas de Ecuaciones Lineales Método de GAUSS.
Conalep Coacalco Algoritmos Recursivos
Ingeniería en Software Facultad de Ingeniería 2014
Introducción a los TADs

75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Hernández Camacho Víctor Jesus Islas Sánchez Karla Vanessa
Solución a Ecuaciones de Recurrencia Dr. Rogelio Dávila Pérez División de Posgrado Universidad Autónoma de Guadalajara
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 2: Divide y Vencerás Unidad 1: Nociones básicas

MTP: Metodología y Tecnología de la Programación 2 Introducción  La técnica divide y vencerás consiste en:  Descomponer el problema en un conjunto de subproblemas más pequeños  Resolver dichos subproblemas (normalmente, de forma recursiva)  Combinar las soluciones para obtener la solución del problema original  Es una técnica que produce buenos resultados para muchos problemas. Por ejemplo:  Multiplicación y exponenciación  Búsqueda y ordenación  Selección y determinación de la media

MTP: Metodología y Tecnología de la Programación 3 Esquema general  Esquema general: FUNCTION DyV(x) BEGIN if x es suficientemente simple then DyV:= solucionar(x) else begin descomponer x en varias instancias x 1, x 2,..., x l ; for i:= 1 to l do y i := DyV(x i ); DyV:= combinar(y 1, y 2,..., y l ); end; END; Se puede emplear o no un “algoritmo básico”

MTP: Metodología y Tecnología de la Programación 4 Análisis  Los algoritmos de DyV poseen una complejidad algorítmica definida por g(n)Si n  n 0 es suficientemente pequeño t(n) = l*t(n  b) + f(n)En otro caso  g(n): tiempo para calcular la solución para el caso base  f(n): tiempo adicional para calcular las sub-instancias del problema y combinar los resultados  Puede obtenerse una solución general por expansión de recurrencias

MTP: Metodología y Tecnología de la Programación 5 Análisis  En muchos casos, la función de interés f(n) es un polinomio n k  En este caso, la ecuación de recurrencia tiene una solución analíticamente más clara:  Puede observarse claramente que la complejidad del algoritmo DyV depende casi totalmente de f(n), y es independiente de g(n)  La solución de la ecuación de recurrencia anterior significa que, por ejemplo, si f(n) tuviera un orden lineal es posible que la complejidad del algoritmo DyV sea igualmente lineal, independientemente del coste de resolver el problema objetivo (esto es, g(n)) mejor peor

MTP: Metodología y Tecnología de la Programación 6 Restricciones  Para que pueda aplicarse la técnica divide y vencerás es necesario:  El problema original debe poder dividirse EFICIENTEMENTE en un conjunto reducido de subproblemas:  De menor tamaño que el problema original  Normalmente los subproblemas deben ser de tamaños parecidos  La solución de cada subproblema obtenerse independientemente las restantes  Necesitamos un método de resolver los problemas de tamaño pequeño (algoritmo básico)  Es necesario tener un método EFICIENTE de combinar los resultados de los subproblemas. f(n) g(n)

MTP: Metodología y Tecnología de la Programación 7 Umbral  Un problema de los algoritmos DyV es cuándo determinar que un problema x es suficientemente simple  Normalmente, un problema es suficientemente simple cuando su tamaño es menor que un determinado umbral  La importancia de determinar correctamente el umbral reside en que:  permitir una recursión hasta alcanzar un tamaño de problema de solución inmediata normalmente es más costoso que  solucionar un problema de tamaño reducido utilizando un “algoritmo básico”

MTP: Metodología y Tecnología de la Programación 8 Umbral  No obstante, el valor umbral no puede determinarse teóricamente, pues depende del valor de las constantes ocultas de las funciones de complejidad temporal  El valor umbral debe determinarse empíricamente conforme al siguiente esquema a)Determinar el valor de la constante oculta mediante ejecuciones repetidas de los algoritmos DyV y básico, utilizando técnicas de regresión  Notar que la notación  es una simplificación de las funciones de complejidad. Así, por ejemplo, una función  (n 2 ) es realmente de la forma an 2 +bn+c b)Determinar qué tamaño de instancia hace iguales los tiempos de ejecución de los algoritmos DyV y básico

MTP: Metodología y Tecnología de la Programación 9 Notas finales  En ciertas ocasiones, un algoritmo DyV no descompone un problema en varios subproblemas, sino que convierte un problema complejo en un problema más simple  Por ejemplo, búsqueda binaria  En este caso, en lugar de “Algoritmos Divide y Vencerás”, hablamos de “Simplificación”  Puede no existir (o no ser necesario) un algoritmo básico,  no existe recombinación de resultados y  l=1