Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Algoritmos Voraces

Descargar como ppt, pdf o txt
Descargar como ppt, pdf o txt
Está en la página 1de 40

ALGORITMICA III

Algoritmos voraces

Docente:Carlos A. Ruiz De La Cruz Melo Correo: zorroculto69@hotmail.com

MTODO GENERAL
Los algoritmos voraces, vidos o de avance rpido (en ingls greedy) se utilizan normalmente en problemas de optimizacin. El problema se interpreta como: tomar algunos elementos de entre un conjunto de candidatos. El orden en que se cogen puede ser importante o no. Un algoritmo voraz funciona por pasos: Inicialmente partimos de una solucin vaca. En cada paso se escoge el siguiente elemento para aadir a la solucin, entre los candidatos. Una vez tomada esta decisin no se podr deshacer. El algoritmo acabar cuando el conjunto de elementos seleccionados constituya una solucin.

MTODO GENERAL
Ejemplo:
el viejo algoritmo de comprar papas en el mercado.
Se puede generalizar el proceso intuitivo a un esquema algortmico general. El esquema trabaja con los siguientes conjuntos de elementos: C: Conjunto de elementos candidatos, pendientes de seleccionar (inicialmente todos). S: Candidatos seleccionados para la solucin. R: Candidatos seleccionados pero rechazados despus. Cul o cules son los candidatos? Depende de cada problema.

MTODO GENERAL
Esquema general de un algoritmo voraz

C S R

Conjunto de elementos candidatos, pendientes de seleccionar (inicialmente todos). Candidatos seleccionados para la solucin Candidatos seleccionados pero rechazados despus

MTODO GENERAL
Funciones genricas
solucin (S). Comprueba si un conjunto de candidatos es una solucin (independientemente de que sea ptima o no). seleccionar (C). Devuelve el elemento ms prometedor del conjunto de candidatos pendientes (no seleccionados ni rechazados). factible (S, x). Indica si a partir del conjunto S y aadiendo x, es posible construir una solucin (posiblemente aadiendo otros elementos). insertar (S, x). Aade el elemento x al conjunto solucin. Adems, puede ser necesario hacer otras cosas. Funcin objetivo (S). Dada una solucin devuelve el coste asociado a la misma (resultado del problema de optimizacin).

MTODO GENERAL
Algunos algoritmos ya estudiados usan la tcnica de avance rpido...
Ejemplo 1. Algoritmo de Dijkstra:
Conjunto. de candidatos: todos los nodos del grafo. Funcin de seleccin: escoger el nodo candidato con camino especial ms corto. Funcin factible: recalcular los caminos especiales. Solucin: cuando se acaben los candidatos.

Algoritmo de caminos mnimos

Ejemplo 2. Algoritmo de Kruskal:


Conjunto. de candidatos: el conjunto de aristas con sus pesos. Funcin de seleccin: escoger la arista con menor costo. Funcin factible: que no forme un ciclo en la solucin actual. Solucin: cuando hayamos seleccionado n-1 aristas

rbol recubridor mnimo

PROBLEMA DEL CAMBIO DE MONEDAS.


Construir un algoritmo que dada una cantidad P devuelva esa cantidad usando el menor nmero posible de monedas.
Disponemos de monedas con valores de 1, 2, 5, 10, 20 50 y 100 SOLES

SON 222 SOLES TOMA 500 SOLES

AH TA EL CAMBIO, 288 SOLES

PROBLEMA DEL CAMBIO DE MONEDAS.


Caso 1. Devolver 288 Soles. 2 billetes de 100, 1 billete de 50, 1 billete de 20, 1 billete de 10, 1 moneda de 5, 1 moneda de 2 y 1 moneda de 1 sol. Total: 8 monedas.

Caso 2. El mtodo intuitivo se puede entender como un algoritmo voraz: en cada paso aadir una moneda nueva a la solucin actual, hasta llegar a P.

PROBLEMA DEL CAMBIO DE MONEDAS.


Conjunto de candidatos:
Todos los tipos de monedas disponibles. Supondremos una cantidad ilimitada de cada tipo.

Solucin:
conjunto de monedas que sumen P.

Funcin objetivo:
Minimizar el nmero de monedas.

PROBLEMA DEL CAMBIO DE MONEDAS.


Representacin de la solucin:
(x1, x2, x3, x4, x5, x6, x7, x8), donde xi es el nmero de monedas usadas de tipo i. Suponemos que la moneda i vale ci. Formulacin: minimizar

x
i =1

Sujeto a

xc
i =1

i i

= P, xi 0

PROBLEMA DEL CAMBIO DE MONEDAS.


Funciones del esquema:
inicializacin. Inicialmente xi= 0, para todo i= 1..8 solucin. El valor actual es solucin si

xc
i =1

i i

= P, xi 0

seleccionar. Qu moneda se elige en cada paso de entre los candidatos? Respuesta: elegir en cada paso la moneda de valor ms alto posible, pero sin sobrepasar la cantidad que queda por devolver. factible. Valdr siempre verdad. En lugar de seleccionar monedas de una en una, usamos la divisin entera y cogemos todas las monedas posibles de mayor valor.

PROBLEMA DEL CAMBIO DE MONEDAS.


Garantiza siempre la solucin ptima? Para este sistema monetario s. Pero no siempre... Ejemplo. Supongamos que tenemos monedas de C = 6, 4, 1 . Queremos devolver 8. Algoritmo voraz. 1 moneda de 6 y 2 monedas de 1: total 3 monedas. Solucin ptima. 2 monedas de 4: total 2 monedas.

ANLISIS DE TIEMPOS DE EJECUCIN DE LOS VORACES


El orden de complejidad depende de: El nmero de candidatos existentes. Los tiempos de las funciones bsicas utilizadas. El nmero de elementos de la solucin. Ejemplo.
n: nmero de elementos de C. m: nmero de elementos de una solucin.

Repetir, como mximo n veces y como mnimo m: Funcin solucin: f(m). Normalmente O(1) u O(m). Funcin de seleccin: g(n). Entre O(1) y O(n). Funcin factible (parecida a solucin, pero con una solucin parcial): h(m). Insercin de un elemento: j(n, m).

ANLISIS DE TIEMPOS DE EJECUCIN DE LOS VORACES


Tiempo de ejecucin genrico: t(n,m) O(n*(f(m)+g(n)+h(m)) + m*j(n, m))
Ejemplos: Algoritmos de Prim y Dijkstra: n candidatos, la funcin de seleccin e insercin son O(n) y O(n2). Devolucin de monedas: podemos encontrar el siguiente elemento en un tiempo constante (ordenando las monedas): O(n).
rbol recubridor mnimo similar al de Kruskal, solo que se parte desde cualquier nodo al azar.

El anlisis depende de cada algoritmo concreto. En la prctica los algoritmos voraces suelen ser bastante rpidos, encontrndose dentro de rdenes de complejidad polinomiales.

APLICACIONES DE ALGORITMOS VORACES


PROBLEMA DE LA MOCHILA

20 Kg.
Tenemos: n objetos, cada uno con un peso (pi) y un beneficio (bi) Una mochila en la que podemos meter objetos, con una capacidad de peso mximo M. Objetivo: llenar la mochila, maximizando el beneficio de los objetos transportados, y respetando la limitacin de capacidad mxima M. Los objetos se pueden partir en trozos.

APLICACIONES DE LOS ALGORITMOS VORACES


PROBLEMA DE LA MOCHILA
Datos del problema: n: nmero de objetos disponibles. M: capacidad de la mochila. p = (p1, p2, ..., pn) pesos de los objetos. b = (b1, b2, ..., bn) beneficios de los objetos. Representacin de la solucin: Una solucin ser de la forma S = (x1, x2, ..., xn), con 0xi1, siendo cada xi la fraccin escogida del objeto i. Formulacin matemtica: n Maximizar
i =1 i i
n

x b Sujeto a la restriccin x p
i =1 i

M ,0 xi 1

APLICACIONES DE LOS ALGORITMOS VORACES


Ejemplo: n = 3; M = 20 p = (18, 15, 10) b = (25, 24, 15)

PROBLEMA DE LA MOCHILA

20 Kg.

18 kg
V= 25

15 kg
V= 24

10 kg
V= 15

Solucin 1: S = (1, 2/15, 0) Beneficio total = 25 + 24*2/15 = 28,2

18 kg
V= 25

2 kg
V= 24

Solucin 2: S = (0, 2/3, 1) Beneficio total = 15 + 24*2/3 = 31

10 kg
PVP 24

10 kg
PVP 15

APLICACIONES DE LOS ALGORITMOS VORACES


PROBLEMA DE LA MOCHILA
El problema se ajusta bien a la idea de algoritmo voraz. Diseo de la solucin: Candidatos: cada uno de los n objetos de partida. Funcin solucin: tendremos una solucin si hemos introducido en la mochila el peso mximo M, o si se han acabado los objetos. Funcin seleccionar: escoger el objeto ms prometedor. Funcin factible: ser siempre cierta (podemos aadir trozos de objetos). Aadir a la solucin: aadir el objeto entero si cabe, o en otro caso la proporcin del mismo que quede para completarla. Funcin objetivo: suma de los beneficios de cada candidato por la proporcin seleccionada del mismo. Queda por definir la funcin de seleccin. Qu criterio podemos usar para seleccionar el objeto ms prometedor?

APLICACIONES DE LOS ALGORITMOS VORACES


PROBLEMA DE LA MOCHILA

APLICACIONES DE LOS ALGORITMOS VORACES


PROBLEMA DE LA MOCHILA
Posibles criterios para seleccionar el mejor objeto de los restantes: 1. El objeto con ms beneficio bi: max bi
i= 1, ..., n

2. El objeto menos pesado pi (para poder aadir muchos objetos): min pi


i= 1, ..., n

3. El objeto con mejor proporcin bi/pi (coste por unidad de peso): max bi/pi
i= 1, ..., n

Cul es el mejor criterio de seleccin? Garantiza la solucin ptima?

APLICACIONES DE LOS ALGORITMOS VORACES


PROBLEMA DE LA MOCHILA
Ejemplo 1: n = 4; M = 10 p = (10, 3, 3, 4) b = (10, 9, 9, 9)
Criterio 1: S = (1, 0, 0, 0). Beneficio total = 10 Criterio 2: S = (0, 1, 1, 1). Beneficio total = 27

Ejemplo 2: n = 4; M = 10 p = (10, 3, 3, 4) b = (10, 1, 1, 1)


Criterio 1: S = (1, 0, 0, 0). Beneficio total = 10 Criterio 2: S = (0, 1, 1, 1). Beneficio total = 3

Los criterios 1 y 2 pueden dar soluciones no muy buenas. El criterio 3 garantiza siempre una solucin ptima.

APLICACIONES DE LOS ALGORITMOS VORACES


PROBLEMA DE LA MOCHILA
Criterio 3
Supongamos que tenemos una solucin ptima x=(x1, x2, ..., xn), que incluye un objeto i, pero no incluye (o incluye con menor proporcin) otro objeto j con mejor proporcin: (xi > xj) y (bi/pi < bj/pj). Si quitamos un trozo de peso de i y lo metemos de j entonces obtendramos ms beneficio. Por ejemplo, si quitamos un peso r, con 0 < r xipi , r (1-xj)pj:

bnuevo = bantiguo - r*bi/pi + r*bj/pj = bantiguo + r*(bj/pj - bi/pi) > bantiguo

HEURSTICAS VORACES
Hay algoritmos que no se conocen solucin de forma eficiente, debido a que la solucin exacta puede requerir un orden factorial o exponencial Objetivo: obtener buenas soluciones en un tiempo de ejecucin corto (razonable). Algoritmos de aproximacin: garantizan una solucin ms o menos buena (o una cierta aproximacin respecto al ptimo). Un tipo son los algoritmos heursticos1: algoritmo basado en el conocimiento intuitivo o experto del programador sobre determinado problema.

HEURSTICAS VORACES

La estructura de algoritmos voraces se puede utilizar para construir procedimientos heursticos: hablamos de heursticas voraces. La clave: disear buenas funciones de seleccin.

EL PROBLEMA DEL VIAJERO


Problema: dado un grafo no dirigido, completo y con pesos G = (V, A), encontrar un ciclo de coste mnimo que pase por todos los nodos. Problema de optimizacin, la solucin est formada por un conjunto de elementos en cierto orden: podemos aplicar el esquema voraz.

1
40

10

2
55

45

20

25

25

5
50

30
15

EL PROBLEMA DEL VIAJERO


Primera cuestin: cules son los candidatos? Dos posibilidades: 1) Los nodos son los candidatos. Empezar en un nodo cualquiera. En cada paso, moverse al nodo no visitado ms prximo o al ltimo nodo seleccionado. 2) Las aristas son los candidatos pero garantizar que se forme un ciclo.

1
40

10

2
55

45

20

25

25

5
50

30
15

EL PROBLEMA DEL VIAJERO


Heurstica voraz 1) Candidatos = V Una solucin tendr un cierto orden en el conjunto de nodos. Representacin de la solucin: s = (c1, c2, ..., cn), donde ci es el nodo visitado en el lugar i-simo. Inicializacin: empezar en un nodo cualquiera. Funcin de seleccin: de los nodos candidatos seleccionar el ms prximo al ltimo (o al primero) de la secuencia actual (c1, c2, ..., ca). Acabamos cuando tengamos n nodos.

EL PROBLEMA DEL VIAJERO

Ejemplo 1. Empezando en el nodo 1. Solucin: (1, 2, 3, 4, 5) Costo total: 10+20+15+50+45=140

1
45
40

10

2
55

20

25

25

5
50

30
15

EL PROBLEMA DEL VIAJERO


Ejemplo 2. Empezando en el nodo 5. Solucin: (5, 3, 4, 2, 1) Coste total: 30+15+25+10+45 = 125 Conclusin: el algoritmo no es ptimo.

1
45
40

10

2
55

20

25

25

5
50

30
15

EL PROBLEMA DEL VIAJERO


Heurstica voraz 2) Candidatos = A Una solucin ser un conjunto de aristas (a1, a2, ..., an) que formen un ciclo hamiltoniano, sin importar el orden. Representacin de la solucin: s = (a1, a2, ..., an), donde cada ai es una arista, de la forma ai = (vi, wi). Inicializacin: empezar con un grafo sin aristas. Seleccin: seleccionar la arista candidata de menor costo. Factible: una arista se puede aadir a la solucin actual si no se forma un ciclo (excepto para la ltima arista aadida) y si los nodos unidos no tienen grado mayor que 2.

EL PROBLEMA DEL VIAJERO


Ejemplo 3. Solucin: ((1, 2), (4, 3), (2, 3), (1, 5), (4, 5)) Coste total = 10+15+20+45+50 = 140

1
45
40

10

2
55

20

25

25

5
50

30
15

EL PROBLEMA DEL VIAJERO


Conclusiones del problema del viajero:
Ninguno de los dos algoritmos garantiza la solucin ptima. Sin embargo, normalmente ambos dan soluciones buenas, prximas a la ptima. Posibles mejoras: Buscar heursticas mejores, ms complejas. Repetir la heurstica 1 con varios orgenes.

COLORACIN DE GRAFOS
Coloracin de un grafo: asignacin de un color a cada nodo, de forma que dos nodos unidos con un arco tengan siempre distinto color. Problema de coloracin: dado un grafo no dirigido, realizar una coloracin utilizando el nmero mnimo de colores.

4 3 5 2

COLORACIN DE GRAFOS
Representacin de la solucin: una solucin tiene la forma (c1, c2, ..., cn), donde ci es el color asignado al nodo i. S = (1, 2, 2, 1, 1), Total: 2 colores

4 1 3 5 2

COLORACIN DE GRAFOS
Podemos usar una heurstica voraz para obtener una solucin:
Inicialmente ningn nodo tiene color asignado. Tomamos un color colorActual=1. Para cada uno de los nodos sin colorear: Comprobar si es posible asignarle el color actual. Si se puede, se asigna. En otro caso, se deja sin colorear. Si quedan nodos sin colorear, escoger otro color (colorActual= colorActual + 1) y volver al paso anterior.

COLORACIN DE GRAFOS
La estructura bsica del esquema voraz se repite varias veces, una por cada color, hasta que todos los nodos estn coloreados. Funcin de seleccin: cualquier candidato restante. Factible(x): se puede asignar un color a x si ninguno de sus adyacentes tiene ese mismo color.

Garantiza el algoritmo la solucin ptima?

COLORACIN DE GRAFOS
Ejemplo.

Resultado: se necesitan 3 colores. Recordar que el ptimo es 2 colores. Conclusin: el algoritmo no es ptimo.

4 1 3 5 2

c1

c2

c3

c4

c5

ALGORITMOS VORACES
pasos claves:
Primera cuestin: cules son los candidatos?, cmo se representa una solucin al problema? Cuestin clave: disear una funcin de seleccin adecuada. Algunas pueden garantizar la solucin ptima. Otras pueden ser ms heursticas... Funcin factible: garantizar las restricciones del problema. En general los algoritmos voraces son la solucin rpida a muchos problemas (a veces ptimas, otras no).

ALGORITMOS VORACES
Conclusiones:
Empezamos con una solucin vaca, y la construimos paso a paso. En cada paso se selecciona un candidato (el ms prometedor) y se decide si se mete o no (funcin factible). Una vez tomada una decisin, no se vuelve a deshacer. Acabamos cuando tenemos una solucin o cuando no queden candidatos.

LABORATORIO
Implemente el problema de la mochila en java o C++.
1.Coloque usted sus propios valores a las caractersticas del problema 2.Pruebe los tres criterios 3.Luego de probar n veces cada criterio determine cual criterio garantiza la mayor cantidad de soluciones optimas.

También podría gustarte