Post on 10-Aug-2015
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 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
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 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