1 / 9

Bloque 2: Divide y Vencerás

Bloque 2: Divide y Vencerás. Unidad 1: Nociones básicas. 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)

taryn
Télécharger la présentation

Bloque 2: Divide y Vencerás

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bloque 2: Divide y Vencerás Unidad 1: Nociones básicas

  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. Esquema general Se puede emplear o no un “algoritmo básico” • Esquema general: FUNCTION DyV(x) BEGIN if x es suficientemente simple then DyV:= solucionar(x) else begin descomponer x en varias instancias x1, x2, ..., xl; for i:= 1 to l do yi:= DyV(xi); DyV:= combinar(y1, y2, ..., yl); end; END;

  4. Análisis • Los algoritmos de DyV poseen una complejidad algorítmica definida por g(n) Si nn0 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. Análisis • En muchos casos, la función de interés f(n) es un polinomio nk • 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. 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. g(n) f(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. 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 • 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 (n2) es realmente de la forma an2+bn+c • Determinar qué tamaño de instancia hace iguales los tiempos de ejecución de los algoritmos DyV y básico

  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

More Related