Vous êtes sur la page 1sur 3

Por: Ortiz Macas Jairo Uriel

Algoritmo Divide y vencers


Se trata de una forma de enfrentar un problema complejo dividindolo en
otros ms sencillos y de resolucin directa, o al menos con esa tendencia.
Esquema.
Plantear el problema de forma que se pueda dividir en sub-problemas
ms pequeos del mismo tipo, (divisin).
Resolver estos sub-problemas independientemente, a estos problemas se
les llama casos base.
Combinar las soluciones de los casos base para obtener la solucin del
problema original.
Ejemplo:
Buscar el nmero 9 en un vector de tamao 5.
1. Divisin---- dividir el problema bsqueda en 5 sub-problemas de
comparacin.

Comparacin [0] [1] [2] [3] [4]
I 2 4 1 9 7
X 9 9 9 9 9
k - - - * -
IVector XObjetivo KSoluciones de los sub-problemas o
casos base
Uniendo todos los resultados de los sub-problemas, se obtiene que en los
campos i[0], i[1], i[2], i[4], el contenido del vector es diferente del objetivo
(9), y slo en el campo i[3], el contenido del vector es igual al objetivo (9), lo
que constituye la solucin del problema inicial.

Por: Ortiz Macas Jairo Uriel
Algoritmos Voraces.
Para resolver el problema de optimizacin hay que encontrar un conjunto de
candidatos que optimiza la funcin objetivo. Los algoritmos voraces proceden
por pasos. Inicialmente el conjunto de candidatos es vaco. A continuacin, en
cada paso, se intenta aadir al conjunto el mejor candidato de los an no
escogidos, utilizando la funcin de seleccin. Si el conjunto resultante no es
completable, se rechaza el candidato y no se le vuelve a considerar en el
futuro. En caso contrario, se incorpora al conjunto de candidatos escogidos y
permanece siempre en l. Tras cada incorporacin se comprueba si el conjunto
resultante es una solucin del problema. Un algoritmo voraz es correcto si la
solucin as encontrada es siempre ptima. El esquema genrico del algoritmo
voraz es:

Los algoritmos voraces se utilizan en su mayora para problemas de
optimizacin, y las partes que lo componen e intervienen son:
un conjunto de candidatos;
un conjunto de decisiones ya tomadas (candidatos ya escogidos);
una funcin que determina si un conjunto de candidatos es
una solucin al problema;
una funcin que determina si un conjunto es completable, es decir, si
aadiendo a este conjunto nuevos candidatos es posible alcanzar una
solucin al problema, suponiendo que esta exista;
una funcin de seleccin que escoge el candidato an no seleccionado
que es ms prometedor;
una funcin objetivo que da el valor/coste de una solucin (tiempo total
del proceso, la longitud del camino, etc.) y que es la que se pretende
maximizar o minimizar;







Por: Ortiz Macas Jairo Uriel
funcin voraz(C:conjunto):conjunto
{ C es el conjunto de todos los candidatos }
S <= vacio { S es el conjunto en el que se construye la solucin}
mientras solucin(S) y C <> vaciohacer
x <= el elemento de C que maximiza seleccionar(x)
C <= C \ {x}
si completable(S U {x}) entonces S <= S U {x}
si solucion(S)
entonces devolver S
si no devolver no hay solucin

El nombre voraz proviene de que, en cada paso, el algoritmo escoge el mejor
"pedazo" que es capaz de "comer" sin preocuparse del futuro. Nunca deshace
una decisin ya tomada: una vez incorporado un candidato a la solucin
permanece ah hasta el final; y cada vez que un candidato es rechazado, lo es
para siempre.

Ejemplo:
Se desea pagar una cantidad de dinero a un cliente empleando el menor
nmero posible de monedas. Los elementos del esquema anterior se
convierten en:
candidato: conjunto finito de monedas de, por ejemplo, 1, 5, 10 y 25
unidades, con una moneda de cada tipo por lo menos;
solucin: conjunto de monedas cuya suma es la cantidad a pagar;
completarle: la suma de las monedas escogidas en un momento dado no
supera la cantidad a pagar;
funcin de seleccin: la moneda de mayor valor en el conjunto de
candidatos an no considerados;
funcin objetivo: nmero de monedas utilizadas en la solucin.

Vous aimerez peut-être aussi