1. REPÙBLICA BOLIVARIANA DE VENEZUELA
INSTITUTO UNIVERSITARIO POLITÈCNICO
“SANTIAGO MARIÑO”
EXTENSIÒN MATURÌN
Autor (a): Br.Ariannys Romero
Asesor(a): Ing. María
Aguilera
Maturín, Julio de 2013
2. Algoritmo voraces
Definición:
también conocido como ávido, devorador o goloso) 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 decisión ya tomada: una vez
incorporado un candidato a la solución permanece ahí hasta el
final; y cada vez que un candidato es rechazado, lo es para
siempre. Este algoritmo es aquel que, para resolver un
determinado problema. Este sigue una heurística que
consisten en elegir la opción óptima en cada paso local, con la
esperanza de llegar a una solución general óptima. Este
algoritmo es el que menos dificultades plantea a la hora de
diseñar y comprobar su funcionamiento.
3. El algoritmo escoge en cada paso al mejor
elemento posible, conocido como el elemento más
prometedor. Se elimina ese elemento del conjunto de
candidatos ( ) y, acto seguido, comprueba si la inclusión
de este elemento en el conjunto de elementos
seleccionados ( ) produce una solución factible.
En caso de que así sea, se incluye ese elemento. Si la
inclusión no fuera factible, se descarta el elemento.
Iteramos el bucle, comprobando si el conjunto de
seleccionados es una solución y, si no es así, pasando al
siguiente elemento del conjunto de candidatos.
FUNCIONAMIENTO
4. Partimos de una solución vacía.
En cada paso se escoge el siguiente
elemento para añadir ala solución,
entre los candidatos.
Una vez tomada esta decisión no se
podrá deshacer.
El algoritmo acabará cuando el
conjunto de elementos
seleccionados constituya una solución.
El algoritmo voraz funciona por pasos:
6. 1. El conjunto de candidatos, entradas del problema. un conjunto o lista
de candidatos (tareas a procesar, vértices del grafo, etc);
2. Un conjunto de decisiones ya tomadas (candidatos ya escogidos);
3. Función solución. una función en la que se determina si un conjunto de
candidatos es una solución al problema (aunque no tiene por qué ser la
óptima); Comprueba, en cada paso, si el subconjunto actual de candidatos
elegidos forma una solución (no importa si es óptima o no lo es).
4. Función de selección. Esta Informa de cuál es el elemento más prometedor
para completar la solución. Éste no puede haber sido escogido con
anterioridad. Cada elemento es considerado una sola vez. Luego, puede ser
rechazado o aceptado y pertenecerá.
7. 5. Función de factibilidad. Informa si a partir de un conjunto se
puede llegar a una solución. Suele aplicarse al conjunto de
seleccionados unido con el elemento más prometedor.
6. Una función que determina si un conjunto es completable, es
decir, si añadiendo a este conjunto nuevos candidatos es
posible alcanzar una solución al problema, suponiendo que
esta exista
7. Una función de selección que escoge el candidato aún no
seleccionado que es más prometedor;
8. Función objetivo. Es aquella que queremos maximizar o
minimizar, el núcleo del problema. Es la que da el valor/coste
de una solución (tiempo total del proceso, la longitud del
camino, etc) y es a la que se pretende maximizar o minimizar.
8. ESQUEMA GENÉRICO DEL ALGORITMO VORAZ
Dado un conjunto finito de entradas , un algoritmo voraz devuelve un
conjunto (seleccionados) tal que y que además cumple con las
restricciones del problema inicial. Cada conjunto que satisfaga las
restricciones se le suele denominar prometedor, y si este además logra
que la función objetivo se minimice o maximice (según corresponda)
diremos que es una solución óptima
9. Función voraz (Conjunto): conjunto
{C es el conjunto de todos los candidatos}
S <= vacío {S es el conjunto en el que se construye
la solución}
Mientras ¬solución(S) y C <> vacío hacer
x <= el elemento de C que maximiza seleccionar(x)
C <= C {x}
Si completable(S U {x}) entonces S <= S U {x}
Si solución(S)
Entonces devolver S
Si no devolver no hay solución
10. Se desea pagar una cantidad de dinero a un cliente empleando el menor número
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;
solución: conjunto de monedas cuya suma es la cantidad a pagar;
completable: la suma de las monedas escogidas en un momento dado
no supera la cantidad a pagar;
función de selección: la moneda de mayor valor en el conjunto de
candidatos aún no considerados;
función objetivo: número de monedas utilizadas en la solución.
Ejemplo:
11. El problema de la mochila KP (del ingles Knapsack problem), es un problema de
optimización combinatoria, donde se modela una mochila que ese incapaz de
soportar un peso mayor, es decir puede soportar un peso determinado, cada objeto
q se le agrega a la mochila o q contiene la mochila se debe máxima el peso o valor
total, sin exceder el peso máximo.
Dicho problema fue realizado por Richard Karp, establecidos por el informático
teórico en un famoso articulo de 1972, donde desde entonces Ha sido
intensamente estudiado desde mediados del siglo XX y se hace referencia a el en el
año 1897, en un articulo de George Mathews Ballard . En el cual refleja que la
formulación del problema es sencilla, su resolución es mas compleja. Algunos
algoritmos existentes pueden resolverlo en la practica para casos de un gran
tamaño. Sin embargo, la estructura única del problema, y el hecho de que se
presente como un subproblema de otros problemas mas generales, lo convierten
en un problema frecuente en la investigación para optimización.
Problema de la mochila
12. Enunciado: "Se tiene una mochila que es capaz de soportar un peso
máximo P, así como un conjunto de objetos, cada uno de ellos con
un peso y un beneficio. La solución pasa por conseguir introducir el
máximo beneficio en la mochila, eligiendo los objetos adecuados.
Cada objeto puede tomarse completo o fraccionado".
Solución: La forma más simple de saber qué objetos se deben tomar
es ordenar dichos objetos por la relación beneficio / peso de mayor a
menor. De esta forma, tomaremos los objetos con mayor beneficio
en este orden hasta que la bolsa se llene, fraccionando si fuera
preciso, el último objeto a tomar.
PROBLEMA DE LA MOCHILA
13. Problema de la mochila. 1
• Ejemplo: n = 3; M = 20
w = (18, 15, 10)
v = (25, 24, 15)
Solución 1: S = (1, 2/15, 0), Valor total = 25 + 24*2/15 =
28.2
Solución 2: S = (0, 2/3, 1), Valor total = 15 + 24*2/3 = 31
• Diseño de la solución. Podemos utilizar un algoritmo
voraz para resolver el problema.
– Candidatos: Cada uno de los n objetos de partida.
– Función solución: Tendremos una solución si hemos
introducido en la mochila el peso máximo M (o si se han
acabado los objetos).
.
14. – Función seleccionar: Escoger el objeto más
“prometedor”.
– Función factible: Será siempre cierta (podemos añadir
trozos de objetos).
– Añadir a la solución: Añadir el objeto entero si cabe en
la mochila, o en otro caso la proporción del mismo que
quede para completarla.
– Función objetivo: Suma de los beneficios de cada
candidato por la proporción seleccionada del mismo
Problema de la mochila. 2
15. El Objetivo de los arboles de recubrimiento consiste que
dado un grafo x, se debe obtener un nuevo grafo que sólo
contenga las aristas imprescindibles para una optimización
global de las conexiones entre todos los nodos
“optimización global”: algunos pares de nodos pueden no
quedar conectados entre ellos con el mínimo costo posible
en el grafo original.
La aplicación del problemas tienen que ver con un conjunto
de elementos, a los que se quiere conectar para
intercambiar datos, compartir recursos, etc.; que minimicen
los costos.
ARBOLES DE RECUBRIMIENTO
16. Árbol libre: es un grafo no dirigido conexo a cíclico. Un todo árbol libre
con n vértices tiene n-1 aristas. u si se añade una arista se introduce un
ciclo. u si se borra una arista quedan vértices no conectados u cualquier
par de vértices está unido por un único camino simple u un árbol libre
con un vértice distinguido es un árbol con raíz
Árbol de recubrimiento de un grafo no dirigido y etiquetado no
negativamente: es cualquier subgrupo que contenga todos los vértices
y que sea un árbol libre
Árbol de recubrimiento de coste mínimo: es un árbol de recubrimiento
y no hay ningún otro árbol de recubrimiento cuya suma de aristas sea
menor
TIPOS DE ARBOLES
17. Heurística voraz 1)
– Una solución será un cierto orden en el conjunto de nodos
(c1, c2, ..., cn): el orden de visita de los nodos.
– Inicialización: seleccionar un nodo cualquiera.
– Función de selección: de los nodos candidatos seleccionar
el más próximo al último (o al primero) de la secuencia actual
(c1, c2, ..., ca).
– Acabamos cuando tengamos n nodos.
El problema del viajante
19. Heurística voraz 2)
– Una solución será un conjunto de aristas (a1, a2, ..., an-1)
que formen un ciclo hamiltoniano, sin importar el orden.
– Empezar con un grafo sin aristas.
– Selección: seleccionar la arista candidata de menor coste.
– Factible: una arista se puede añadir a la solución actual si
no se forma un ciclo (excepto para la última arista añadida)
y si los nodos unidos no tienen grado mayor que 2.
20. Ejemplo.
Solución: ((2, 3), (4, 5), (3, 4), (1, 2), (1, 5))
Coste = 10+15+20+45+50 = 140
Conclusiones:
– Ninguno de las dos funciones de selección garantiza una solución
óptima. Sin embargo, normalmente ambos dan soluciones buenas,
próximas a la óptima.
– Posibles mejoras: buscar heurísticas mejores; repetir la heurística 1
con varios orígenes; o bien, a partir de la solución del algoritmo
intentar hacer modificaciones locales para mejorar esa solución:
búsqueda local.
1
32
4
5
45
10
20
50
15
21. Coloración de grafos
Problema: dado un grafo no dirigido, realizar una coloración
utilizando el número mínimo de colores.
• Coloración: asignación de un color a cada nodo, de forma que
dos nodos unidos con un arco tengan siempre distinto color.
• Una solución será un conjunto de pares de la forma (nodo, color)
cumpliendo que para todo (ni, ci) y (nj, cj), si (ni, nj) es una arista del
grafo, entonces ci ≠ cj.
• Podemos usar una heurística voraz para obtener una solución:
– Empezar con un color c1, y todos los nodos sin colorear.
– Para cada uno de los nodos que no tienen asignado un color,
comprobar si es posible asignarles el color actual. Repetir hasta
comprobar todos los candidatos.
– Si quedan nodos sin colorear, escoger otro color y volver al paso
anterior.
1
4
3 2
5
22. • Ejemplo.
Solución: ((1, 1), (2, 1), (3,
2),
(4, 3), (5, 3))
Número de colores = 3
1
4
3 2
5
Coloración
de
grafos
23. 1
4
3 2
5
La estructura básica del esquema voraz se repite varias veces,
una por cada color, hasta que todos los nodos estén coloreados.
• Función de selección: seleccionar cualquier candidato restante.
• Función factible: se puede asignar un color al candidato actual si
ninguno de sus adyacentes tiene ese mismo color.
• El algoritmo no garantiza la solución óptima (en el ejemplo 2
colores)
Coloración
de
grafos