Divide y Venceras
Divide y Venceras
2.1.- Introduccin
Condiciones que debe cumplir un problema P para que se pueda resolver utilizando la tcnica Divide y Vencers (DYV): debe ser divisible en subproblemas P1, P2, (funcin de descomposicin) Todos los Pi deben ser de la misma naturaleza que P, pero de menor tamao Cada uno de estos Pi se puede resolver (utilizando la misma tcnica u otro algoritmo clsico) para obtener soluciones Si Con la combinacin de todas las Si (se debe poder!!) se obtiene la solucin S al problema original P (funcin de combinacin) NOTA: Por la naturaleza de la tcnica, el mtodo se expresa de manera natural mediante un algoritmo recursivo
Factor importante para la eficiencia prctica de cualquier algoritmo Divide y Vencers: clculo del umbral n0 El algoritmo Divide y Vencers puede resultar mas lento que el algoritmo clsico para casos que sean demasiado pequeos Un algoritmo Divide y Vencers debe evitar seguir avanzando recursivamente cuando el tamao de los casos ya no lo justifique
Restricciones que se imponen al algoritmo DYV genrico: La funciones de descomposicin y combinacin han de ser eficientes El nmero de subproblemas generados no debe ser muy grande La determinacin del umbral n0 ha de ser ptima El tamao de cada uno de los subproblemas ha de ser lo ms similar posible y no debe haber solapamiento entre ellos
Esquema general de los algoritmos Divide y Vencers: Funcion Divide_y_Venceras(P: problema) { Devuelve la solucin del ejemplar P } Inicio Si P es suficientemente pequeo o simple Entonces devolver( solucion_simple(P) ) Si_No descomponer P en k partes (P1,P2,...,Pk); Para (i=1;i<=k;i++) Si=Divide_y_Venceras(Pi); devolver( combinar(P1, P2, ..., Pk) ); Fin
Ejercicio 1: Mediante el Algoritmo de Divide y Venceras realizar una Bsqueda del mayor y del menor elemento de un vector (El vector no esta ordenado y tampoco se debe ordenar). Nota: Se recomienda hacer dos llamadas recursivas a la funcin, una realizando la busqueda en la subparte menor del arreglo y otra realizando la busqueda en la subparte mayor del arreglo.