T3 - Greedy
T3 - Greedy
1. Introducción
2. Características generales
3. Ejemplos de aplicación
4. Teoría de grafos
6. Consideraciones finales
1
Objetivos
2
Introducción
Introducción
Greedy
◦ Dios proveerá.
3
Introducción
Características
◦ En cada etapa, «toman el mejor bocado que pueden tragar», sin analizar las
posibles consecuencias (voracidad).
4
Introducción
◦ Cada uno de los subconjuntos que cumple las restricciones es una solución
factible o prometedora.
◦ Una solución factible que maximiza o minimiza una determinada función ob-
jetivo se denomina solución óptima.
5
Introducción
Ventajas
◦ Eficientes.
◦ Fáciles de diseñar.
◦ Fáciles de implementar.
Desventajas
6
Introducción
7
Introducción
función devolver_cambio(n)
M ← {200, 100, 50, 20, 10, 5, 2, 1} // monedas de la máquina
S ← ∅ // contendrá las monedas a devolver
suma ← 0 // suma de los elementos de S
mientras suma ≠ n hacer
x ← mayor elemento de C tal que suma + x ≤ n
si no existe tal elemento entonces
devolver «Solución no encontrada»
si no
S ← S ∪ {moneda de valor x}
suma ← suma + x
fin si
fin mientras
devolver S
fin función
8
Introducción
◦ n = 63.
¡Cuidado!
10
Características generales
11
Características generales
12
Características generales
13
Características generales
función voraz(C)
// C es el conjunto de candidatos
S ← ∅ // se construye la solución en el conjunto S
mientras C ≠ ∅ & no solución(S) hacer
x ← seleccionar(C)
C ← C \ {x}
si factible(S ∪ {x}) entonces
S ← S ∪ {x}
fin si
fin mientras
si solución(S) entonces
devolver C
si no
devolver «No existen soluciones»
fin si
fin función
14
Características generales
15
Ejemplos de aplicación
El problema de la mochila
Enunciado
En esta versión del problema, se asume que los objetos se pueden dividir en
trozos más pequeños, de forma que se puede elegir llevar una fracción xi del
objeto i, con 0 ≤ xi ≤ 1.
n
X n
X
maximizar xi bi con la restricción xi pi ≤ P
i=1 i=1
16
El problema de la mochila
Consideraciones
Pn
◦ Si i = 1 pi ≤ P, lo óptimo consiste en introducir todos los objetos en la
mochila.
◦ Se puede asumir por tanto que en las instancias interesantes del problema se
tiene que ni= 1 pi > P.
P
Pn
◦ Por tanto, una solución óptima cumple que i=1 xi pi = P.
17
El problema de la mochila
19
El problema de la mochila
función mochila(p[1..n],b[1..n], P)
// inicialización
para todo i = 1, . . . , n hacer
x[i] ← 0 // solución
fin para todo
peso_actual ← 0
// bucle voraz
mientras peso_actual < P hacer // función solución
i ← el mejor objeto restante // función de selección
si peso_actual + p[i] ≤ P entonces
x[i] ← 1
peso_actual ← peso_actual + p[i]
si no
x[i] ← (P − peso_actual) / p[i]
peso_actual ← P
fin si
fin mientras
devolver x
fin función
◦ Sea P = 100 y n = 5. Además, los pesos y beneficios de los objetos son los
siguientes:
1 2 3 4 5
p 10 20 30 40 50
b 20 30 66 40 60
b/p 2. 0 1 .5 2 .2 1 .0 1 .2
x1 x2 x3 x4 x5 Beneficio
Máximo bi 0 0 1 0.5 1 146
Mínimo pi 1 1 1 1 0 156
Máximo bi /pi 1 1 1 0 0.8 164
21
El problema de la mochila
Teorema
Demostración (1/3)
◦ En otro caso, sea j el menor índice tal que xj < 1. Por la forma en que trabaja el
Pn
algoritmo, xi = 1 cuando i < j, xi = 0 cuando i > j, y i = 1 xi pi = P.
Pn
◦ Sea B(X ) = i=1 xi bi el beneficio que se obtiene para la solución X .
22
El problema de la mochila
Demostración (2/3)
◦ Por ser solución factible, cumple que ni= 1 yi pi ≤ P. Entonces, puesto que
P
Pn
i = 1 xi pi = P, restando ambas capacidades, podemos afirmar que:
n
X n
X
(xi pi − yi pi ) = (xi − yi )pi ≥ 0
i=1 i=1
23
El problema de la mochila
Demostración (3/3)
bi bj
◦ Si i = j, entonces = .
pi pj
b b
◦ Así pues, en todos los casos se tiene que (xi − yi ) pi ≥ (xi − yi ) pj . Por tanto:
i j
n n
X bi bj X
B(X ) − B(Y ) = (xi − yi )pi ≥ (xi − yi )pi ≥ 0
pi pj
i=1 i=1
24
El problema de la mochila
n
X n
X
maximizar xi bi con la restricción a xi pi ≤ P
i=1 i=1
25
El problema de la mochila
1 2 3
p 5 3 3
b 11 6 6
b/p 2. 2 2 2
◦ Existe una solución mejor, ya que se pueden introducir en la mochila los dos
últimos objetos, obteniéndose un beneficio igual 12.
26
Minimización del tiempo en el sistema
Enunciado
27
Minimización del tiempo en el sistema
Ejemplo
1, 2, 3 : T = 5 + (5 + 10) + (5 + 10 + 3) = 38
1, 3, 2 : T = 5 + (5 + 3) + (5 + 3 + 10) = 31
2, 1 , 3 : T = 10 + (10 + 5) + (10 + 5 + 3) = 43
2, 3 , 1 : T = 10 + (10 + 3) + (10 + 3 + 5) = 41
3, 1, 2 : T = 3 + (3 + 5) + (3 + 5 + 10) = 29
3, 2, 1 : T = 3 + (3 + 10) + (3 + 10 + 5) = 34
28
Minimización del tiempo en el sistema
◦ Conjunto de candidatos: los n clientes a los que hay que dar servicio.
◦ Función objetivo: tiempo total invertido en el sistema por todos los clientes:
n
X
(tiempo en el sistema para el cliente i )
i=i 29
Minimización del tiempo en el sistema
función planificar_clientes(t[1..n])
// inicialización
para todo i = 1, . . . , n hacer
x[i] ← 0 // solución
fin para todo
// bucle voraz
para todo i = 1, . . . , n hacer // función solución
k ← cliente j con menor t[j] de los restantes // función de selección
x[i] ← k
fin para todo
devolver x
fin función
30
Minimización del tiempo en el sistema
Teorema
Demostración (1/2)
31
Minimización del tiempo en el sistema
Demostración (2/2)
Enunciado
33
Asignación de tareas
◦ Función objetivo: coste total de asignar cada trabajador (tarea) a cada tarea
(trabajador):
Xn X n
xij cij
i = 1j = 1
34
Asignación de tareas
35
Asignación de tareas
t1 t2 t3 t4
p1 11 17 19 23
p2 17 14 20 28
p3 11 12 18 40
p4 14 15 13 22
36
Asignación de tareas
t1 t2 t3 t4
p1 11 17 19 23
p2 17 14 20 28
p3 11 12 18 40
p4 14 15 13 22
37
Asignación de tareas
Óptimo
Demostración
t1 t2 t3 t4
p1 11 17 19 23
p2 17 14 20 28
p3 11 12 18 40
p4 14 15 13 22
38
Teoría de grafos
Teoría de grafos
◦ Königsberg (Kaliningrado) era famosa por los siete puentes que unían ambos
márgenes del río Pregel con dos de sus islas.
39
Teoría de grafos
2 4
40
Teoría de grafos
◦ En un grafo dirigido, cada arco viene dado por un par ordenado ⟨u, v ⟩, donde
u ∈ V es el vértice inicial del arco y v ∈ V es el vértice final.
1 2
3 4
41
Teoría de grafos
1 2
3 4
42
Teoría de grafos
◦ Dos arcos o aristas se dice que son adyacentes si tienen un vértice en común.
◦ Dos vértices son adyacentes si existe algún arco o arista que los una.
43
Teoría de grafos
◦ Los grafos ponderados son aquellos en los que los arcos o aristas llevan
asignado un cierto valor real, denominado peso, que representa la distancia
o el coste de desplazamiento entre dos vértices adyacentes.
6
1 2
3 8
5
3 4
12
44
Teoría de grafos
6 1
1 2 2
5
3 8 3 8
5 5
1 1
3 4 3 4
12 12
Grafo con ciclos Grafo sin ciclos
45
Teoría de grafos
1 2 1 2
8 3 8
5 5
1 1
3 4 3 4
12 12
Grafo no conexo Grafo conexo 46
Teoría de grafos
Representación de grafos
47
Ejemplos de aplicación sobre
grafos
Árbol de recubrimiento de coste mínimo
Enunciado
48
Árbol de recubrimiento de coste mínimo
1 2
1 2 3
6 5
4 4 6
3 8
4 5 6
7
4 3
Inicio
49
Árbol de recubrimiento de coste mínimo
1 2
1 2 3
3
4 5 6
4 3
Objetivo
50
Árbol de recubrimiento de coste mínimo
Estrategias de resolución
51
Árbol de recubrimiento de coste mínimo
52
Árbol de recubrimiento de coste mínimo
◦ Función solución: las aristas del conjunto solución T unen todos los vértices
del grafo sin formar ciclos (árbol con n − 1 aristas).
◦ Función objetivo: la suma de los pesos de las aristas que forman la solución.
53
Árbol de recubrimiento de coste mínimo
54
Árbol de recubrimiento de coste mínimo
1 2
1 2 3
55
Árbol de recubrimiento de coste mínimo
Consideraciones
56
Árbol de recubrimiento de coste mínimo
Lema
57
Árbol de recubrimiento de coste mínimo
Teorema
Demostración (1/2)
59
Árbol de recubrimiento de coste mínimo
Demostración (2/2)
◦ a es una de las aristas de coste mínimo que salen de B (todas las aristas de menor
coste ya se han examinado y se han añadido a T o se han descartado porque
tenían los dos extremos en la misma componente conexa).
60
Árbol de recubrimiento de coste mínimo
61
Árbol de recubrimiento de coste mínimo
◦ Función de factibilidad: no deben existir ciclos en las aristas que unen los
vértices elegidos (siempre se cumple gracias a la función de selección).
◦ Función objetivo: la suma de los pesos de las aristas que forman la solución.
62
Árbol de recubrimiento de coste mínimo
◦ T (n) ∈ Θ(n2 )
63
Árbol de recubrimiento de coste mínimo
1 2
1 2 3
Paso Arista B
6 5
4 4 6
Inicialización – {1}
1 (1,2) {1,2}
2 (2,3) {1,2,3}
3 8
4 5 6 3 (1,4) {1,2,3,4}
4 (4,5) {1,2,3,4,5}
5 (4,7) {1,2,3,4,5,7}
6 (7,6) {1,2,3,4,5,6,7}
7
4 3
64
Árbol de recubrimiento de coste mínimo
Teorema
Demostración (1/2)
65
Árbol de recubrimiento de coste mínimo
Demostración (2/2)
◦ a es por definición una de las aristas de coste mínimo que salen de B y conectan
con B.
66
Caminos de coste mínimo
Enunciado
67
Caminos de coste mínimo
1 1
10 50 10 50
5 2 5 2
100 30 100 30
10 10
20 5 20 5
4 3 4 3
50 50
Objetivo
68
Caminos de coste mínimo
◦ El conjunto S contiene los vértices que ya han sido elegidos (aquellos cuyo
camino de coste mínimo desde el vértice v0 ya es conocido):
◦ Inicialmente, solo contiene a v0 .
◦ El conjunto C contiene todos los demás vértices, cuya distancia mínima desde
el vértice origen todavía no se conoce, y que son candidatos a ser selecciona-
dos en alguna etapa posterior.
69
Caminos de coste mínimo
◦ En cada etapa del algoritmo, existe un vector D que contiene el coste del
camino especial de coste mínimo que va hasta cada vértice del grafo.
◦ Los valores que hay en D dan la solución del problema de caminos de coste
mínimo.
70
Caminos de coste mínimo
◦ Se supone que los vértices de G están numerados desde 1 hasta n (el vértice
1 es el v0 ).
◦ Para determinar no solo el mínimo coste de los caminos sino también por
dónde pasan, se añade el vector P, en donde P[vi ] contiene el número del
vértice que precede a vi dentro del camino de mínimo coste. Inicialmente,
P[vi ] = v0 .
◦ Para hallar el camino de mínimo coste, se siguen los punteros P hacia atrás,
desde el destino hacia el origen.
71
Caminos de coste mínimo
1
Datos
10 50
◦ P = [1, 3, 1, 5, 1].
10
20 5
¿Se puede reconstruir la ruta usando P?
4 3
50
72
Caminos de coste mínimo
◦ Función objetivo: la suma de los pesos de las aristas que forman el camino
del vértice v0 a cada uno de los restantes vértices del grafo.
73
Caminos de coste mínimo
◦ T (n) ∈ Θ(n2 )
74
Caminos de coste mínimo
10 50
5 2
100 30
10
20 5
4 3
50
Paso v S C D P
75
Caminos de coste mínimo
Teorema
Demostración (1/3)
◦ Hipótesis de inducción. Las propiedades (1) y (2) son válidas justo antes de
añadir a S el vértice v que minimiza D[v] entre los vértices v ∈ C.
76
Caminos de coste mínimo
Demostración (2/3)
◦ La hipótesis de inducción dice que D[v] es el coste del camino especial óptimo de
v0 a v. Por tanto, basta comprobar que el camino óptimo de v0 a v no incluye
ningún vértice que no pertenezca a S.
◦ Por tanto, el coste del camino que va de v0 a v a través de u es, como mínimo,
igual a D[v] y no mejora el del camino especial óptimo de v0 a v.
77
Caminos de coste mínimo
Demostración (3/3)
◦ A primera vista, podría parecer que para calcular el nuevo valor de D[u] de-
beríamos comparar el valor actual de D[u] con el de todos los posibles caminos a
través de S: D[x] + c(x , u) para todo x ∈ S. Sin embargo, esta comparación ya fue
hecha en el momento de añadir x a S, para todo x ≠ v, y D[x] no ha variado desde
entonces. Por tanto, basta comparar el valor actual de D[u] con D[v] + c(v , u) y
quedarse con el mínimo.
◦ Puesto que el algoritmo hace precisamente eso, la situación (2) seguirá siendo
cierta después de añadir a S un nuevo vértice v.
78
El coloreo de un grafo
Enunciado
3 3
1 2 5 1 2 5
4 4
Un grafo plano requiere a lo sumo cuatro colores para pintar sus vértices de
modo que no haya vértices adyacentes con el mismo color.
79
El coloreo de un grafo
Complejidad
◦ Clase de problemas NP. Aquellos cuya solución es fácil de verificar, pero cuyo
cálculo conlleva una complejidad muy grande debido a la gran cantidad de
potenciales soluciones (óptimas y no óptimas) a explorar.
80
El coloreo de un grafo
Heurísticas
◦ Las heurísticas son criterios, métodos, o principios para decidir cuál, entre
una serie de alternativas de acción, promete ser más efectiva para lograr una
meta concreta.
81
El coloreo de un grafo
Idea general
◦ Se escogen todos los vértices no adyacentes del vértice seleccionado que aún
no estén coloreados y se pintan del mismo color.
◦ Se repite el procedimiento anterior hasta que todos los vértices del grafo
estén pintados.
82
El coloreo de un grafo
◦ Función objetivo: el número de colores usados para colorear los vértices del
grafo.
83
El coloreo de un grafo
3 3
1 2 5 1 2 5
4 4
84
El coloreo de un grafo
Óptimo
Demostración (1/2)
◦ Contraejemplo:
1 1
2 3 2 3
4 5 6 4 5 6
Demostración (2/2)
◦ Contraejemplo:
1 1
2 3 2 3
4 5 6 4 5 6
86
El viajante de comercio
Enunciado
Enunciado formal
87
El viajante de comercio
Complejidad
Heurísticas
88
El viajante de comercio
Idea general
89
El viajante de comercio
90
El viajante de comercio
1
1 2
2
4
5
6
3 4
3
Paso v S C Arista T
Inicio - 1 {2, 3, 4} - -
1 2 1 {3, 4} (1,2) (1,2)
2 3 2 {4 } (2,3) (1,2), (2,3)
3 4 3 {∅} (3,4) (1,2), (2,3), (3,4)
4 1 4 {∅} (4,1) (1,2), (2,3), (3,4), (4,1)
91
El viajante de comercio
Óptimo
Demostración
◦ Contraejemplo:
11 7 11 7
1 1
3 10 3 10
6 6
2 3 2 3
8 9 8 9
12 4 12 4
5 5
4 5 4 5
25 25
15 18 15 18
6 6
16 20 16 20
◦ Trata de ganar todas las batallas sin ser consciente de que para ganar la
guerra muchas veces se necesita perder alguna batalla.
◦ Lo que parece bueno hoy no siempre tiene por qué ser bueno en el futuro.
93
Consideraciones finales
◦ Al plantear un algoritmo voraz (que por diseño será eficiente), hay que de-
mostrar formalmente que conduce a la solución óptima del problema en to-
dos los casos.
94
Consideraciones finales
◦ Otras veces, un algoritmo voraz da una solución rápida (no óptima) del pro-
blema y, a partir de ella, aplicando algoritmos más sofisticados, la solución
óptima se obtiene más rápidamente.
95
Bibliografía
Bibliografía
Aclaración
Por ejemplo