Algoritmos voraces

22
Algoritmo Voraz 25-Marzo-2015 Algoritmo Voraz

Transcript of Algoritmos voraces

Algoritmo Voraz

25-Marzo-2015

Algoritmo Voraz

Algoritmo vorazDefinicion

Un algoritmo voraz (tambien conocido como avido, devorador ogoloso) es aquel que, para resolver un determinado problema, sigueuna heurıstica consistente en elegir la opcion optima en cada paso

local con la esperanza de llegar a una solucion general optima.

Algoritmo Voraz

Algoritmo vorazCaracterısticas

.Se utilizan generalmente para resolver problemas de optimizacion:maximo o mınimo..Un algoritmo voraz toma las decisiones en funcion de lainformacion que esta disponible en cada momento..Una vez tomada la decision no vuelve a replantearse en el futuro..Suelen ser rapidos y faciles de implementar..No siempre garantizan alcanzar la solucion optima.

Algoritmo Voraz

Algoritmo vorazEjemplo de tecnica voraz en nuestra vida

Algoritmo Voraz

Algoritmo vorazEsquema de un algoritmo voraz

Un algoritmo Greedy procede siempre de la siguiente manera:

.Se parte de un conjunto de candidatos seleccionados vacıo: S = φDe la lista de candidatos C que hemos podido identificar, con lafuncion de seleccion, se coge el mejor candidato posible.

.Vemos si con ese elemento podrıamos llegar a constituir unasolucion: Si se verifican las condiciones de factibilidad se anade a Sy se borra de C .

Algoritmo Voraz

Algoritmo vorazEsquema de un algoritmo voraz

.Si el candidato anterior no es valido, lo borramos de la lista decandidatos posibles, y nunca mas es considerado.

.Utilizamos la funcion solucion. Si todavıa no tenemos unasolucion seleccionamos con la funcion de seleccion otro candidato yrepetimos el proceso anterior hasta alcanzar la solucion.

Algoritmo Voraz

Algoritmo vorazEjemplos

.Seleccion de actividades o tareas Θ(n)

.El problema de la mochila Θ(nlogn)

.Prim Θ(|E |log |V |)

.El problema del cambio Θ(n)

.Dijkstra Θ(n2)

Algoritmo Voraz

Seleccion de actividadesDefinicion

Es un problema de planificacion de tareas

Tenemos un conjunto de actividades que requieren el uso de unrecurso, de manera exclusiva, durante un intervalo de tiempo. Cadaactividad esta numerada. La actividad numero i necesita el recursodurante el intervalo de tiempo [ci , fi ). (Naturalmente ci < fi)

Algoritmo Voraz

Seleccion de actividadesDefinicion

El problema de seleccion de actividades consiste en seleccionar unsubconjunto de las actividades propuestas de manera que seancompatibles entre sı.Dos actividades i y j son compatibles si sus intervalos no sesolapan (es decir,ci > fj o cj > fi ).

ci = tiempo de comienzo de la actividad ifi = tiempo de finalizacion de la actividad i

Algoritmo Voraz

Seleccion de actividadesSolucion

Criterio de seleccion voraz

La parte fundamental de un algoritmo voraz es su criterio deseleccion voraz:

Seleccionar la actividad que comience mas temprano..Seleccionar la actividad de menos duracion..Seleccionar la actividad que termine mas pronto..Seleccionar la actividad que menos solapamientos tenga con elresto de actividades candidatas.

Para que puedan formar una solucion, debemos adjuntarles elcriterio de completabilidad:.Que no se solape con las actividades ya seleccionadas.

Algoritmo Voraz

Seleccion de actividadesAnalisis del algoritmo

Orden de complejidad:T (n) = Θ(n)

Algoritmo Voraz

El problema de la mochilaDefinicion

Dado n objetos `1, `2, ..., `n con sus respectivos pesos p1, p2, ..., pn

y valores v1, v2, ..., vn y dada una mochila capaz de albergar hastaun maximo de peso W (capacidad de la mochila),queremosencontrar las proporciones de los n elementos que tenemos queintroducir en la mochila en la forma que la suma de sus valores delos elementos escogidos sea el maximo.

Esto es,hay que encontrar valores (x1, x2, ..., xn) donde 0 ≤ xi ≤ 1de forma que se maximice la cantidad de Σn

i=1xivi con larestriccion Σn

i=1xipi ≤W

Algoritmo Voraz

El problema de la mochilaSolucion

Un algoritmo voraz que resuelve este problema ordena loselementos de forma decreciente respecto a su ratio vi

piy va

anadiendo objetos mientras estos vayan cabiendo.Ejemplo ilustrativo:Se cuenta con n = 5 objetos y capacidad maxima de la mochilaW = 100

1 2 3 4 5

vi 20 30 66 40 60

pi 10 20 30 40 50 Σni=1pi > W

Algoritmo Voraz

El problema de la mochilaSolucion

Posibles criterios para seleccionar el mejor objeto de los restantes:

1.El objeto con mas beneficio vi max.2. El objeto mas ligero(para poder anadir muchos objetos)pi min

3.El objeto con mejor proporcion(coste por unidad de peso)vipi

max

¿ Cual es el mejor criterio de seleccion ?¿ Garantiza la solucion optima?

Algoritmo Voraz

El problema de la mochilaSolucion

1 2 3 4 5

vi 20 30 66 40 60

pi 10 20 30 40 50

vi/pi 2.0 1.5 2.2 1.0 1.2 objetivo(Σni=1xivi )

xi (vimax) 0 0 1 0.5 1 146

xi (pimin) 1 1 1 1 0 156

xi (vipi

max) 1 1 1 0 0.8 164

Lo optimo es encontrar Σni=1xipi = W ,lo cual se logra con el

objeto con mejor proporcion(coste por unidad de peso)vipi

max,nos

garantiza siempre una solucion optima

Algoritmo Voraz

El problema de la mochilaAlgoritmo que resuelve el problema

Algoritmo Voraz

El problema de la mochilaOrden del algoritmo

⇒Implementacion directa:* El bucle requiere como maximo n (numero de objetos)iteraciones: O(n)- una para cada posible objeto ,en el caso,de que todos quepan ella mochila.* La funcion de seleccion requiere buscar el objeto con mejorrelacion valor/peso: O(n)

⇒ Implementacion preordenando los objetos:* Ordenando los objetos de mayor a menor en relacion valor/peso.- existen algoritmos de ordenacion O(nlogn)* Con los objetos ordenados la funcion de seleccion es: O(1)* Coste del algoritmo:O(max(O(nlogn),O(n) ∗ O(1)))=O(nlogn)

Algoritmo Voraz

Arbol de expansion mınimaDefinicion

Dado un grafo conexo y no dirigido, un arbol de expansion mınimo, es un subgrafo de un arbol que contiene todos los vertices delgrafo inicial. Cada arista tiene asignado un peso proporcional entreellos, que es un numero representativo que podrıa ser una distanciao algun valor entre un par de vertices, la suma de todos los pesosde las aristas del arbol en cuestion debe ser mınima.

Algoritmo Voraz

Arbol de expansion mınima

Arbol de expansion mınima es necesario definir algunos conceptos:

.Grafo

.Conexo

.Grafo dirigido

.Aristas etiquetadas

Algoritmo Voraz

Arbol de expansion mınimaSolucion : Algoritmo Prim

El algoritmo de prim es uno de los algoritmos mas conocidos en loque grafos respecta, cuyo objetivo es encontrar un arbol deexpansion mınima, en un cierto grafo que debe ser conexo, nodirigido y sus aristas deben estar etiquetadas con algun valor.

Algoritmo Voraz

Algoritmo Prim

Donde :.Vt es el conjunto de vertices.Et son las aristas que se unen al arbol.e∗ conjunto de aristas con menor peso.u∗ son el conjunto de (V − Vt) es decir el complemento de losvertices, son aquellos que no se pueden unir con algun vertice.

Orden:Θ(|E |log |V |)

Algoritmo Voraz

Algoritmo PrimEjemplo ilustrativo

Algoritmo Voraz