2-Algoritmos Voraces

download 2-Algoritmos Voraces

of 97

Transcript of 2-Algoritmos Voraces

Algoritmos voracesv v v v v v v v v v v

Introduccin y primer ejemplo El problema de la mochila Caminos mnimos en grafos rboles de recubrimiento de coste mnimo Consideraciones sobre la correccin del esquema voraz Cdigos de Huffman El problema de la seleccin de actividades El problema de la minimizacin del tiempo de espera Fundamentos tericos del esquema voraz Un problema de planificacin de tareas a plazo fijo Heursticas voraces Coloreado de grafos El problema del viajante de comercio

2 8 16 38 54 57 65 69 73 83 8989 92

J. Campos - C.P.S.

Esquemas algortmicos - Algoritmos voraces Pg. 1

El esquema voraz: Introduccin y primer ejemplov v

Es uno de los esquemas ms simples y al mismo tiempo de los ms utilizados. Tpicamente se emplea para resolver problemas de optimizacin: existe una entrada de tamao n que son los candidatos a formar parte de la solucin; existe un subconjunto de esos n candidatos que satisface ciertas restricciones: se llama solucin factible; hay que obtener la solucin factible que maximice o minimice una cierta funcin objetivo: se llama solucin ptima.

v

Ejemplos: encontrar la secuencia ptima para procesar un conjunto de tareas por un computador, hallar un camino mnimo en un grafo, problema de la mochila,

J. Campos - C.P.S.

Esquemas algortmicos - Algoritmos voraces Pg. 2

El esquema voraz: Introduccin y primer ejemplov

El esquema voraz procede por pasos: inicialmente el conjunto de candidatos escogidos es vaco; en cada paso, se intenta aadir al conjunto de los escogidos el mejor de los no escogidos (sin pensar en el futuro), utilizando una funcin de seleccin basada en algn criterio de optimizacin (puede ser o no ser la funcin objetivo); tras cada paso, hay que ver si el conjunto seleccionado es completable (i.e., si aadiendo ms candidatos se puede llegar a una solucin); u si el conjunto no es completable, se rechaza el ltimo candidato elegido y no se vuelve a considerar en el futuro; u si es completable, se incorpora al conjunto de escogidos y permanece siempre en l; tras cada incorporacin se comprueba si el conjunto resultante es una solucin; el algoritmo termina cuando se obtiene una solucin; el algoritmo es correcto si la solucin encontrada es siempre ptima;

J. Campos - C.P.S.

Esquemas algortmicos - Algoritmos voraces Pg. 3

El esquema voraz: Introduccin y primer ejemplov

Esquema genrico:funcin voraz(C:conjunto) funcin voraz(C:conjunto) devuelve conjunto devuelve conjunto{C es el conjunto de todos los candidatos} {C es el conjunto de todos los candidatos}

principio principio S:=; {S es el conjunto en el que se S:=; {S es el conjunto en el que seconstruye la solucin} construye la solucin} mq solucin(S) C hacer mq solucin(S) C hacer

x:=elemento de C que x:=elemento de C que maximiza seleccionar(x); maximiza seleccionar(x); C:=C-{x}; C:=C-{x}; si completable(S {x}) si completable(S {x}) entonces S:=S {x} entonces S:=S {x} fsi fsi fmq; fmq; si solucin(S) si solucin(S) entonces devuelve S entonces devuelve S sino devuelve no hay solucin sino devuelve no hay solucin fsi fsi fin fin

J. Campos - C.P.S.

Esquemas algortmicos - Algoritmos voraces Pg. 4

El esquema voraz: Introduccin y primer ejemplov

Problema del cambio en monedas. Se trata de devolver una cantidad de pesetas con el menor nmero posible de monedas. Se parte de: u un conjunto de tipos de monedas vlidas, de las que se supone que hay cantidad suficiente para realizar el desglose, y de u un importe a devolver.

v

Elementos fundamentales del esquema: Conjunto de candidatos: cada una de las monedas de los diferentes tipos que se pueden usar para realizar el desglose del importe dado. Solucin: un conjunto de monedas devuelto tras el desglose y cuyo valor total es igual al importe a desglosar. Completable: la suma de los valores de las monedas escogidas en un momento dado no supera el importe a desglosar. Funcin de seleccin: elegir si es posible la moneda de mayor valor de entre las candidatas. Funcin objetivo: nmero total de monedas utilizadas en la solucin (debe minimizarse).

J. Campos - C.P.S.

Esquemas algortmicos - Algoritmos voraces Pg. 5

El esquema voraz: Introduccin y primer ejemplov

Solucin:{por ejemplo} {por ejemplo}

tipo moneda=(M25,M10,M5,M1) tipo moneda=(M25,M10,M5,M1)

funcin cambia(importe:nat; funcin cambia(importe:nat; valor:vector[moneda] de nat) valor:vector[moneda] de nat) devuelve vector[moneda] de nat devuelve vector[moneda] de nat variable mon:moneda; variable mon:moneda; cambio:vector[moneda] de nat cambio:vector[moneda] de nat principio principio para todo mon en moneda hacer para todo mon en moneda hacer cambio[mon]:=0 cambio[mon]:=0 fpara; fpara; para mon:=M25 hasta M1 hacer para mon:=M25 hasta M1 hacer mq valor[mon]importe hacer mq valor[mon] importe hacer cambio[mon]:=cambio[mon]+1; cambio[mon]:=cambio[mon]+1; importe:=importe-valor[mon] importe:=importe-valor[mon] fmq fmq fpara; fpara; devuelve cambio devuelve cambio fin fin

J. Campos - C.P.S.

Esquemas algortmicos - Algoritmos voraces Pg. 6

El esquema voraz: Introduccin y primer ejemplov

Ejercicios sobre el problema del cambio en monedas: Demostrar la correccin del algoritmo. Demostrar, buscando contraejemplos, que el algoritmo no es ptimo si se aade un nuevo tipo de moneda de 12 pesetas o si se elimina alguno de los tipos existentes. Demostrar que, en esas condiciones, el algoritmo puede incluso no encontrar solucin alguna aunque sta exista. Es el mtodo de ordenacin por seleccin directa un algoritmo voraz? Si es as, cules son las funciones utilizadas (seleccin, completable, solucin)?

J. Campos - C.P.S.

Esquemas algortmicos - Algoritmos voraces Pg. 7

El problema de la mochilav v v v

v

v

Se tienen n objetos fraccionables y una mochila. El objeto i tiene peso pi, 1i n. La mochila tiene capacidad C. Si se mete una fraccin xi, 0 xi 1, del objeto i en la mochila, entonces se consigue un beneficio bixi. El objetivo es llenar la mochila de manera que se maximice el beneficio total. Pero como la mochila tiene capacidad C, el peso total de todos los objetos metidos en ella no puede superar esa cantidad.

J. Campos - C.P.S.

Esquemas algortmicos - Algoritmos voraces Pg. 8

El problema de la mochilav

Formalmente:maximizar sujeto a1in

b ixi

(1) (2) (3)

1in

pixi C

con 0xi1, bi>0, pi>0, 1in v v

v v v

Una solucin factible es cualquier n-tupla (x1,,xn) que satisfaga (2) y (3). Una solucin ptima es cualquier solucin factible para la que (1) sea mximo. Si p1++pnC, entonces obviamente xi=1, 1in, es una solucin ptima. Por tanto, supongamos que p1++pn>C. Ntese adems que todas las soluciones ptimas llenarn la mochila por completo (podemos poner = en (2)).Esquemas algortmicos - Algoritmos voraces Pg. 9

J. Campos - C.P.S.

El problema de la mochilav

Ejemplo: n=3 C=17 (b1,b2,b3)=(40,36,22) (p1,p2,p3)=(15,12,8) Tres soluciones factibles: (x1,x2,x3) (i) (1,1/6,0) (ii) (0,3/4,1) (iii) (0,1,5/8)

v

bixi 1i346 49 4975

J. Campos - C.P.S.

Esquemas algortmicos - Algoritmos voraces Pg. 10

El problema de la mochilav

Solucin voraz: El conjunto de candidatos son los objetos, tomndose de ellos cierta fraccin. Un conjunto de candidatos es completable si la suma de sus pesos no supera la capacidad de la mochila, y es una solucin si iguala dicha capacidad. La funcin objetivo a maximizar es bixi.1in

La funcin de seleccin es la ms difcil de determinar. u Si procedemos vorazmente, en cada paso debemos considerar un objeto y tomar cierta fraccin suya. u La cuestin de qu fraccin se toma es ms fcil de resolver: si hemos elegido el mejor candidato, tomamos todo lo que podamos de l.

J. Campos - C.P.S.

Esquemas algortmicos - Algoritmos voraces Pg. 11

El problema de la mochila Cul es el mejor candidato (es decir, la mejor funcin de seleccin)? Volvamos al ejemplo: u Primera estrategia: elegir el objeto con mayor beneficio total (el primero). Sin embargo, la mochila se llena muy rpidamente con poco beneficio total. u Segunda estrategia: elegir el objeto que llene menos la mochila, para acumular beneficios de un nmero mayor de objetos. Sin embargo, es posible que se elija un objeto con poco beneficio simplemente porque pesa poco. u La tercera estrategia, que es la ptima, es tomar siempre el objeto que proporcione mayor beneficio por unidad de peso. Los algoritmos resultantes de aplicar cualquiera de las dos primeras estrategias tambin son voraces, pero no calculan la solucin ptima.

J. Campos - C.P.S.

Esquemas algortmicos - Algoritmos voraces Pg. 12

El problema de la mochilaconstante n=... {nmero de objetos} constante n=... {nmero de objetos} tipo vectReal=vector[1..n] de real tipo vectReal=vector[1..n] de real{Pre: i1..n:peso[i]>0 {Pre: i1..n:peso[i]>0 i1..n-1:benef[i]/peso[i]benef[i+1]/peso[i+1]} i1..n-1:benef[i]/peso[i]benef[i+1]/peso[i+1]}

funcin mochila(benef,peso:vectReal; funcin mochila(benef,peso:vectReal; cap:real) devuelve vectReal cap:real) devuelve vectReal variables resto:real; i:entero; variables resto:real; i:entero; sol:vectReal sol:vectReal principio principio para todo i en 1..n hacer para todo i en 1..n hacer sol[i]:=0.0 {inicializar solucin} sol[i]:=0.0 {inicializar solucin} fpara; fpara; resto:=cap; {capacidad restante} resto:=cap; {capacidad restante} i:=1; i:=1; mq (in) and (peso[i]resto) hacer mq (i n) and (peso[i] resto) hacer sol[i]:=1; sol[i]:=1; resto:=resto-peso[i]; resto:=resto-peso[i]; i:=i+1 i:=i+1 fmq; fmq; si in entonces sol[i]:=resto/peso[i] fsi; si i n entonces sol[i]:=resto/peso[i] fsi; devuelve sol devuelve sol fin fin{Post: sol es solucin ptima del problema de {Post: sol es solucin ptima del problema de la mochila} la mochila}

J. Campos - C.P.S.

Esquemas algortmicos - Algoritmos voraces Pg. 13

El problema de la mochilav

Coste temporal: (n)(nlog n) si se tiene en cuenta que hay que ordenar primero los vectores.

v

Demostracin de la correccin:Sea X=(x1,,xn) la solucin generada por el algoritmo voraz. Si todos los xi son iguales a 1, la solucin es claramente ptima. Luego, sea j el menor ndice tal que xj1. Por tanto xi=1 para 1i