140 likes | 638 Views
ALGORITMOS DIVIDE Y VENCERAS. Divide y Vencerás en su acepción más amplia, es algo más que una técnica de diseño de algoritmos, de hecho, suele ser considerada una filosofía general para resolver problemas.
E N D
Divide y Vencerás en su acepción más amplia, es algo más que una técnica de diseño de algoritmos, • de hecho, suele ser considerada una filosofía • general para resolver problemas. • Es una técnica de diseño de algoritmos que consiste en resolver problemas a partir de la solución de subproblemas del mismo tipo, pero de menor tamaño. • La técnica consiste en: • Dividir el problema en k subproblemas del mismo tipo pero de menor tamaño, donde 1 <=k <=n, donde n es el tamaño de la entrada del problema. • Resolver independientemente todos los subproblemas. • Combinar las soluciones de los subproblemas para obtener la solución general del problema.
método divideYVencerás(x) retorna y si x es suficientemente sencillo entonces // caso directo retorna algoritmoDirecto(x) fin si // caso recursivo descompone x en subproblemas x1, x2, .., xs desde i := 1 hasta s hacer // llamadas recursivasyi := divideYVencerás(xi)fhacer // combina las soluciones y := combinación de las soluciones parciales (yi) retorna yfmétodoejemplos de algoritmos divide y vencerasMergeSort (Ordenamiento)Busqueda Binaria (Busqueda) PSEUDOCODIGO DYV
Se obtiene aplicando el teorema principal de recurrencia: t(n) = a*t(n/b) + g(n) DONDE: a = cantidad de subproblemas n/b = tamaño de los subproblemas g(n) = El coste de dividir el problema principal en subproblemas mas pequeños y combinar soluciones. Orden de magnitud
Lentitud en el proceso recursivo • No se puede utilizar cuando un problema principal no se resuelve con la suma de las soluciones de los subproblemas ventajas desventajas • La ventaja de los algoritmos de dyv es que consiguen reducir el tamaño del problema en cada paso, por lo que sus tiempos de ejecución suelen ser muy buenos (normalmente de orden logarítmico o lineal).