Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porAarón Contreras Maldonado Modificado hace 10 años
1
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 2: Divide y Vencerás Unidad 1: Nociones básicas
2
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
3
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”
4
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
5
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
6
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)
7
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”
8
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
9
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
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.