Tarea semanal 2.3: Algoritmos Greedy

Instituto de Computación - Facultad de Ingeniería
Programación 3 - Curso 2015- Tarea 2
Tarea semanal 2.3: Algoritmos Greedy
1.
Objetivos
Resolver problemas mediante la técnica Greedy.
2.
Conocimientos previos
Greedy.
3.
Preguntas
1. ¿En qué consiste la técnica Greedy?
2. Dé un ejemplo de problema y un algoritmo basado en la técnica Greedy aplicada a él que no siempre
devuelva la solución buscada.
3. ¿En qué propiedad basan su correctitud los algoritmos de Prim y Kruskal?
4. ¿Cómo aplica el algoritmo de Prim esa propiedad?
5. ¿Cómo aplica el algoritmo de Kruskal esa propiedad?
6. Describa semejanzas y diferencias entre los algoritmos de Prim y de Dijkstra. Muéstrelo con un ejemplo.
4.
Problema
En la organización del congreso se planteó el problema max_charlas, en el que no hay que maximizar la cantidad de asistentes sino la cantidad de charlas a ser desarrolladas. Tal como en el problema
max_asistentes hay una única sala cuyo intervalo de disponibilidad contiene al de desarrollo de cada una de
las charlas.
En la discusión entre los encargados de diseñar los algoritmos se planteó la posibilidad de resolver
max_charlas con la técnica Greedy. Se propuso la siguiente estrategia: ordenar las charlas de manera creciente según algún atributo. Se asigna la primera charla y luego en orden creciente se asigna cada una si es
compatible con las ya asignadas. Es decir, se propuso el siguiente algoritmo:
charlas[1..n] está ordenada según el atributo considerado
S ← {1}
for i = 2 TO n do
if ∀j∈{1,··· ,i−1} (j ∈
/ S ∨ compatibles(i, j)) then
S ← S ∪ {i}
return S
Los atributos propuestos fueron:
1. Fecha de inicio.
2. Fecha de fin.
3. Duración.
Se plantean las siguientes preguntas
1
Instituto de Computación - Facultad de Ingeniería
Programación 3 - Curso 2015- Tarea 2
a. ¿Es realmente Greedy esta estrategia?
b. ¿Cuál es el orden de complejidad, en función de n, de estos algoritmos? Si para alguno de los atributos
es posible conseguir un orden menor, modifique el algoritmo para lograrlo.
c. Para cada uno de estos atributos demuestre que el algoritmo permite resolver de forma óptima el
problema max_charlas o muestre un contraejemplo en caso de que no se pueda. Se sabe que con al
menos uno de los atributos el algoritmo cumple el objetivo.
Ayuda. Para la demostración suponga que t = ht1 , t2 , . . . , tp i es la solución obtenida por el algoritmo
y que hs1 , s2 , . . . , sr i es una tupla genérica en la que cada par de charlas son compatibles entre sí.
Además asuma que, independientemente de cómo fue obtenida, la tupla s está ordenada según el
mismo atributo que la tupla t. El objetivo es demostrar que p ≥ r.
Para esto suponga que p < r. Demuestre por inducción en p que:
charlas[tp ].atributo ≤ charlas[sp ].atributo
Como consecuencia note que la charla sp+1 es compatible con todas las charlas de t. A partir de esto
concluya el absurdo.
d. También se pensó en tomar como atributo la cantidad de charlas con las que se superpone cada una.
Mostrar con un contraejemplo por qué no funciona esta estrategia.
5.
Entrega
La solución debe incluir lo siguiente:
1. Respuestas de las preguntas de la sección 3.
2. Demostración y contraejemplos de las propuestas del problema de la sección 4.
Se debe entregar la solución antes del viernes 30 de octubre a las 17:00 vía EVA. El archivo debe estar
en formato PDF y debe llamarse G-2-3.pdf, donde G es el número del grupo. Además se debe entregar
una copia impresa en la clase de monitoreo de la semana que comienza el 2 de noviembre.
2