![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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/22.jpg)
¾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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022043014/5fb1db3e83aee2771348fc3f/html5/thumbnails/28.jpg)
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