SlideShare uma empresa Scribd logo
1 de 24
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
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.
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
 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:
ELEMENTOS DEL ALGORITMO VORAZ
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á.
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.
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
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
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:
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
 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
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).
 .
– 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
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
Á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
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
Ejemplo.
Empezando en el nodo 1.
Solución: (1, 4, 5, 3, 2)
Coste: 30+15+25+10+45=125
Empezando en el nodo 3.
Solución: (5, 4, 3, 2, 1)
Coste: 15+20+10+45+50=140
1
3
2
4
5
45
10
25
30
15
1
32
4
5
45
10
20
50
15
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.
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
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
• 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
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
Diapositiva prog no numerica 2 algoritmo voraces

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

INVESTIGACIÓN DE OPERACIONES
INVESTIGACIÓN DE OPERACIONESINVESTIGACIÓN DE OPERACIONES
INVESTIGACIÓN DE OPERACIONES
 
3. dualidad
3. dualidad3. dualidad
3. dualidad
 
Analisis de sensibilidad
Analisis de sensibilidadAnalisis de sensibilidad
Analisis de sensibilidad
 
Simplex
SimplexSimplex
Simplex
 
2 algoritmos voraces
2 algoritmos voraces2 algoritmos voraces
2 algoritmos voraces
 
Capitulo 9
Capitulo 9Capitulo 9
Capitulo 9
 
2 precio dual y costo reducido (1)
2 precio dual y costo reducido (1)2 precio dual y costo reducido (1)
2 precio dual y costo reducido (1)
 
TeoríA De La Dualidad
TeoríA De La DualidadTeoríA De La Dualidad
TeoríA De La Dualidad
 
Modulo 1: Análisis Matemático de la Optimización
Modulo 1: Análisis Matemático de la OptimizaciónModulo 1: Análisis Matemático de la Optimización
Modulo 1: Análisis Matemático de la Optimización
 
Programacion Dinamica Intro
Programacion Dinamica IntroProgramacion Dinamica Intro
Programacion Dinamica Intro
 
Analisis de sensibilidad
Analisis de sensibilidadAnalisis de sensibilidad
Analisis de sensibilidad
 
metodos de optimizacion
metodos de optimizacionmetodos de optimizacion
metodos de optimizacion
 
Formulación
FormulaciónFormulación
Formulación
 
Optimización. Métodos numéricos
Optimización. Métodos numéricosOptimización. Métodos numéricos
Optimización. Métodos numéricos
 
Blog problemas de intervalos de confianza
Blog problemas de intervalos de confianzaBlog problemas de intervalos de confianza
Blog problemas de intervalos de confianza
 
Programación Dinámica
Programación DinámicaProgramación Dinámica
Programación Dinámica
 
Metodo de optimizacion
Metodo de optimizacionMetodo de optimizacion
Metodo de optimizacion
 
Barrera
BarreraBarrera
Barrera
 
Varian05espanol
Varian05espanolVarian05espanol
Varian05espanol
 
Resolviendo problemas de limites de sucesiones al infinito
Resolviendo problemas de limites de sucesiones al infinitoResolviendo problemas de limites de sucesiones al infinito
Resolviendo problemas de limites de sucesiones al infinito
 

Semelhante a Diapositiva prog no numerica 2 algoritmo voraces

El Problema del Agente Viajero_f.pptx
El Problema del Agente Viajero_f.pptxEl Problema del Agente Viajero_f.pptx
El Problema del Agente Viajero_f.pptxCarlosTarquiGuillen
 
Programacion dinamica
Programacion dinamicaProgramacion dinamica
Programacion dinamicagenesisptc_
 
Programación Dinámica
Programación DinámicaProgramación Dinámica
Programación DinámicaKimLinares
 
Teoria de Optimizacion
Teoria de  OptimizacionTeoria de  Optimizacion
Teoria de Optimizacionrebeca ferrer
 
PROGRAMACION DINAMICA
PROGRAMACION DINAMICAPROGRAMACION DINAMICA
PROGRAMACION DINAMICAJOSEPHBADRA3
 
Pro no num Prog dinamica
Pro no num Prog dinamicaPro no num Prog dinamica
Pro no num Prog dinamicaRuben Gonzalez
 
Slideshare nelson rodriguez
Slideshare nelson rodriguezSlideshare nelson rodriguez
Slideshare nelson rodrigueznelro038
 
Optimizacion Osvelis Ruiz
Optimizacion Osvelis RuizOptimizacion Osvelis Ruiz
Optimizacion Osvelis RuizOsvelis Ruiz
 
Optimización de sistemas y funciones
Optimización de sistemas y funcionesOptimización de sistemas y funciones
Optimización de sistemas y funcionesAnni Pineda
 
Daniela mendozaestructuradedatosii
Daniela mendozaestructuradedatosiiDaniela mendozaestructuradedatosii
Daniela mendozaestructuradedatosiiDanielaMendoza117
 
Busqueda por backtracking
Busqueda por backtrackingBusqueda por backtracking
Busqueda por backtrackingCesar Mujica
 
Javierperez teoría de la optimización
Javierperez teoría de la optimizaciónJavierperez teoría de la optimización
Javierperez teoría de la optimizaciónRobin Duben
 
Trabajo dualidad sensibilidad
Trabajo dualidad sensibilidadTrabajo dualidad sensibilidad
Trabajo dualidad sensibilidadnmanaure
 

Semelhante a Diapositiva prog no numerica 2 algoritmo voraces (20)

Avarap
AvarapAvarap
Avarap
 
El Problema del Agente Viajero_f.pptx
El Problema del Agente Viajero_f.pptxEl Problema del Agente Viajero_f.pptx
El Problema del Agente Viajero_f.pptx
 
Avarap
AvarapAvarap
Avarap
 
Programación dinámica
Programación dinámica Programación dinámica
Programación dinámica
 
Programacion dinamica
Programacion dinamicaProgramacion dinamica
Programacion dinamica
 
Programación Dinámica
Programación DinámicaProgramación Dinámica
Programación Dinámica
 
Teoria de Optimizacion
Teoria de  OptimizacionTeoria de  Optimizacion
Teoria de Optimizacion
 
PROGRAMACION DINAMICA
PROGRAMACION DINAMICAPROGRAMACION DINAMICA
PROGRAMACION DINAMICA
 
Programación dinámica
Programación dinámicaProgramación dinámica
Programación dinámica
 
Pro no num Prog dinamica
Pro no num Prog dinamicaPro no num Prog dinamica
Pro no num Prog dinamica
 
Optimizacion Diusty Mijares
Optimizacion Diusty MijaresOptimizacion Diusty Mijares
Optimizacion Diusty Mijares
 
Slideshare nelson rodriguez
Slideshare nelson rodriguezSlideshare nelson rodriguez
Slideshare nelson rodriguez
 
Optimizacion Osvelis Ruiz
Optimizacion Osvelis RuizOptimizacion Osvelis Ruiz
Optimizacion Osvelis Ruiz
 
Optimización de sistemas y funciones
Optimización de sistemas y funcionesOptimización de sistemas y funciones
Optimización de sistemas y funciones
 
Daniela mendozaestructuradedatosii
Daniela mendozaestructuradedatosiiDaniela mendozaestructuradedatosii
Daniela mendozaestructuradedatosii
 
Ior
IorIor
Ior
 
Busqueda por backtracking
Busqueda por backtrackingBusqueda por backtracking
Busqueda por backtracking
 
Javierperez teoría de la optimización
Javierperez teoría de la optimizaciónJavierperez teoría de la optimización
Javierperez teoría de la optimización
 
Metodo Simplex
Metodo SimplexMetodo Simplex
Metodo Simplex
 
Trabajo dualidad sensibilidad
Trabajo dualidad sensibilidadTrabajo dualidad sensibilidad
Trabajo dualidad sensibilidad
 

Diapositiva prog no numerica 2 algoritmo voraces

  • 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
  • 18. Ejemplo. Empezando en el nodo 1. Solución: (1, 4, 5, 3, 2) Coste: 30+15+25+10+45=125 Empezando en el nodo 3. Solución: (5, 4, 3, 2, 1) Coste: 15+20+10+45+50=140 1 3 2 4 5 45 10 25 30 15 1 32 4 5 45 10 20 50 15
  • 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