Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… ·...

28

Transcript of Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… ·...

Page 1: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Algoritmos VoracesIntroducción

Andrés Becerra Sandoval

Ponti�cia Universidad Javeriana

2007

Lenguajes III

Page 2: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Contenido

Importancia

Page 3: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Importancia

I Un algoritmo voraz es fácil de:

I ComprenderI AnalizarI Implementar

I Además, casi siempre son muy e�cientes

I Cool!

Page 4: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Importancia

I Un algoritmo voraz es fácil de:

I Comprender

I AnalizarI Implementar

I Además, casi siempre son muy e�cientes

I Cool!

Page 5: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Importancia

I Un algoritmo voraz es fácil de:

I ComprenderI Analizar

I Implementar

I Además, casi siempre son muy e�cientes

I Cool!

Page 6: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Importancia

I Un algoritmo voraz es fácil de:

I ComprenderI AnalizarI Implementar

I Además, casi siempre son muy e�cientes

I Cool!

Page 7: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Importancia

I Un algoritmo voraz es fácil de:

I ComprenderI AnalizarI Implementar

I Además, casi siempre son muy e�cientes

I Cool!

Page 8: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Importancia

I Un algoritmo voraz es fácil de:

I ComprenderI AnalizarI Implementar

I Además, casi siempre son muy e�cientes

I Cool!

Page 9: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Selección de actividades

I

i 1 2 3 4 5 6 7 8 9

si 1 2 4 1 5 8 9 11 13fi 3 5 7 8 9 10 11 14 16

I Conjuntos compatibles, de tamaño máximo:

I {a1, a3, a6, a8}I {a2, a5, a7, a9}

Page 10: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Selección de actividades

I

i 1 2 3 4 5 6 7 8 9

si 1 2 4 1 5 8 9 11 13fi 3 5 7 8 9 10 11 14 16

I Conjuntos compatibles, de tamaño máximo:

I {a1, a3, a6, a8}I {a2, a5, a7, a9}

Page 11: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Selección de actividades

I

i 1 2 3 4 5 6 7 8 9

si 1 2 4 1 5 8 9 11 13fi 3 5 7 8 9 10 11 14 16

I Conjuntos compatibles, de tamaño máximo:

I {a1, a3, a6, a8}

I {a2, a5, a7, a9}

Page 12: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Selección de actividades

I

i 1 2 3 4 5 6 7 8 9

si 1 2 4 1 5 8 9 11 13fi 3 5 7 8 9 10 11 14 16

I Conjuntos compatibles, de tamaño máximo:

I {a1, a3, a6, a8}I {a2, a5, a7, a9}

Page 13: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Selección de actividades

I Entrada:

I S = {a1, ..., an}I ai necesita el recurso durante el periodo [si , fi )

I Salida

I Salida: A′ = {a′1, a′

2, ...a′

k}, un conjunto de tamaño

máximo k de actividades compatibles;I (a′

i , a′j) son compatibles si si ≥ fj ó si sj ≥ fi

Page 14: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Planteamiento dinámico

Entrada:A = {a1, a2, ..., an}, además están ordenadas portiempo de �nalización: f1 ≤ f2... ≤ fnPara codi�car las soluciones utilizaremos las siguientesde�niciones:

I Subproblema: Sij = {ak ∈ A tal que fi ≤ sk ≤ sj} Esto es,Si ,j es la entrada al subproblema que considera lasactividades que inician después de �nalizar la i y �nalizanantes de iniciar la j

I Para cubrir todas las actividades añadiremos a0 conf0 = 0, y an+1 con sn+1 =∞, asi que la entrada paratodo el problema estaría codi�cado por S0,n+1

Page 15: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Costo óptimo

I El costo óptimo c[i , j ] asociado al subproblema Si ,j estadado por:

c[i , j ] =

0 si Si ,j = ∅maxi<k<jak∈Si,j

c[i , k] + c[k , j ] + 1 si Si ,j 6= ∅

I Note que Sij = ∅, si i ≥j

Page 16: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Demostración

I Entrada:A = {a0, a1, a2, ..., an, an+1}, además están

ordenadas por tiempo de �nalización:

f0 ≤ f1 ≤ f2... ≤ fn+1

I Si i ≥ j entonces Sij = ∅I Si no fuera así ak ∈ Sij

I fi ≤ sk ≤ fk ≤ sj < fj entonces fi < fjI Pero si i ≥ j entonces fi ≥ fjI Contradicción

I Según esto, solo necesitamos pensar en Sij con0 ≤ i < j ≤ n + 1

Page 17: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Algoritmo Recursivo

seleccionActRec(A,F , S , i , j)

1 � PRE: ∀i , j c[i , j ] = Nil2 if c[i , j ] = Nil3 then for k ← i + 1 to j − 14 do

5 if F [i ] ≤ S [k] ≤ S [j ]6 then cand ← seleccionActRec(A,F,S,i,k)+

seleccionActRec(A,F,S,k,j)+17 if cand > c[i,j]8 then c[i , j ]← cand

9 r [i , j ]← k

� r guarda las actividades

Page 18: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Algoritmo Iterativo

seleccionActIter(A,F , S)

1 n← length[A]2 for i ← 1 to n

3 do c[i , i ]← 04 for l ← 2 to n � l es la longitud de la sec5 do for i ← 1 to n − l + 16 do j ← i + l − 17 c[i , j ]←∞8 for k ← i + 1 to j − 19 do

10 if F [i ] ≤ S [k] ≤ S [j ]11 then q ← c[i , k] + c[k + 1, j ] + 112 if q < c[i , j ]13 then c[i , j ]← q

14 r [i , j ]← k

Page 19: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Complejidad

I Analizando los tres ciclos podemos a�rmar que elalgoritmo es O(n3)

I El consumo de memoria está dado por la matriz de costosc, y la matriz r que permite almacenar los k. Esto esΘ(n2)

I Tarea: Escribir el algoritmo para imprimir las actividades!

Page 20: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Otra forma de atacarlo

I Suponga que escojo am tal quefm = min{fk tal que ak ∈ Sij}

I Es decir pongo la actividad que �nalize primero y resuelvoun subproblema restante (las actividades que faltan)

I Escribir el algoritmo es fácil

I Lo difícil es probar que es correcto

Page 21: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Algoritmo voraz

Greedy-Activity-Selector(F , S)

n← length[A]A← {a1}i ← 1for m← 2 to n

do if sm ≥ fithen A← A ∪ {am}

i ← m

Page 22: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

¾Demostración?

I ¾Como demostramos que semejante simpli�cación escorrecta?

I Probando que un conjunto solución contiene la actividad

que �naliza primeroI Una solución voraz contiene soluciones voraces

Page 23: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Teorema

Para cualquier Sij , con am siendo la actividad que �nalizaprimero

fm = minfk : ak ∈ Sij

Tenemos que:

1. am pertenece a algún conjunto de tamaño máximo

2. El subproblema Si ,m es vacío. Asi que la solución a Si ,j

contiene una solución de la misma forma al subproblemaSm,j

Page 24: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Metodología

Para diseñar algoritmos voraces:

1. Determinar la subestructura óptima del problema

2. Desarrollar una solución recursiva

3. Probar que una de las decisiones óptimas es la voraz

4. Probar que después de tomar la decisión voraz, soloqueda un subproblema por resolver

5. Desarrolla una solución iterativa

Page 25: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Knapsack

Un ladrón que va a robar un conjunto de objetos tiene unmorral que puede tiene una capacidad máxima de carga de Wkilos (W ∈N), sabe que cada objeto tiene un peso wi y unprecio vi determinados, su problema consiste en decidir queobjetos robarse de manera que maximice el precio total y nosobrepase la capacidad de carga de su morral.

1. knapsack 0-1 (binario)

2. knapsack fraccional

Page 26: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Knapsack binario

c[i,w] es la solución para los objetos del 1 al i, y para el pesomáximo w.

c[i ,w ] =

0 si i = 0 o w = 0

c[i − 1,w ] si wi > W − w

max{vi + c[i − 1,w − wi ], c[i − 1,w ]} si i > 0 y w ≥ W − wi

Page 27: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Voraz recursivo

ACTIVITY-SELECTOR(s, f , i , j)

1 m← i + 12 while m < j and sm < fi3 do m← m + 14 if m < j

5 then return am∪ACTIVITY-SELECTOR(s, f ,m, j)6 else

7 return ∅

Page 28: Algoritmos Voracescic.puj.edu.co/.../fetch.php?media=materias:lenguajes3:16_algvorace… · Algoritmos Voraces Introducción Andrés Becerra Sandoval Ponti cia Universidad Javeriana

Voraz Iterativo

ACTIVITY-SELECTOR(s, f )

1 n← length[s]2 A← {a1}3 i ← 14 for m← 2 to n

5 do if sm ≥ fi6 then

7 A← A ∪ {am}8 i ← m