¡Descarga Temario OAC y más Apuntes en PDF de Ingeniería del Software solo en Docsity!
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
1
5. Algoritmos Voraces Diseño y Análisis de Algoritmos
Antonio Pérez Carrasco
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Introducción Diseño y Análisis de Algoritmos
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
4
Introducción • Esta técnica permite resolver problemas^ combinatorios Diseño y Análisis de Algoritmos
, cuya solución es compuesta:
x={x
, ... , x 1
}n
• Condiciones sobre x:^ – Dominio
: conjunto de valores que pueda
tomar cada componente x
de la solucióni
– Restricciones
: establecen condiciones
adicionales, generalmente entre losdistintos componentes de x
.i
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Introducción • Ejemplo, problema de las n-reinas:• La solución está formada por las n celdasque serán ocupadas por las n reinas. Diseño y Análisis de Algoritmos
¿Dominio? ¿Restricciones?
• En general, un problema combinatoriopuede tener varias soluciones válidas.
Solución 1:(1,3) (2,1) (3,4) (4,2)
Solución 2:
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
6
Introducción • Podemos resolver problemas de^ optimización Diseño y Análisis de Algoritmos
, se busca maximizar o
minimizar una medida, llamada funciónobjetivo:• Un problema de optimización no tieneporqué tener una única solución óptima, sinoque puede tener varias.• La solución siempre se forma paso a paso,analizando en cada etapa qué elemento seañade a la solución parcial.
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Introducción • Los algoritmos voraces se utilizangeneralmente para resolver problemas deoptimización.• Los algoritmos exploran “ Diseño y Análisis de Algoritmos
soluciones locales
• Suelen ser
eficientes
y^ fáciles
de
implementar.• No siempre garantizan la solución óptima.
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
8
Introducción • Los algoritmos voraces toman decisiones^ óptimas locales Diseño y Análisis de Algoritmos
en cada paso.
• Esperanza de alcanzar el óptimo global trasuna serie de pasos (iteraciones)• La decisiones locales
no se replantean
• Construyen la solución por etapas,escogiendo
en cada etapa el mejor candidato
que verifique la restricciones• Solución posible: satisface las restricciones• Solución óptima: solución posible para lacual la función de optimización posee elmejor valor posible
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Introducción • Ventajas Diseño y Análisis de Algoritmos
de los algoritmos voraces:
– Fáciles de implementar– Soluciones eficientes– Para determinados problemas dan lasolución óptima
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
14
Camino más corto (2) • Ejercicio: encontrar el camino más corto deva v^0 Diseño y Análisis de Algoritmos
, donde 3
sólo hay caminosentre vérticesde etapasadyacentes.• Sin aplicarla técnica• Aplicando latécnica
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Camino más corto (2) • Se demuestra quela estrategia noes óptima• Se aporta uncontraejemplo:• Longitud de la solución óptima:v– v^0 Diseño y Análisis de Algoritmos
– v1,
– v2,
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
17
Esquema general Diseño y Análisis de Algoritmos
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Esquema general •^ La técnica voraz funciona por pasos:1. Partimos de una Diseño y Análisis de Algoritmos
solución vacía
y de un
conjunto de candidatos
a formar parte de
la solución2. En cada paso
se intenta añadir el mejor
de los candidatos
restantes a la solución
3. Si la solución ampliada
es válida
candidato incorporado4. Si la solución ampliada
no es válida
candidado desechado5. Una vez tomada la solución, no sepuede deshacer
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
19
Esquema general •^ El algoritmo finaliza cuando:–^ el conjunto de candidatos seleccionadosconstituya una solución–^ No queden elementos sin considerar Diseño y Análisis de Algoritmos
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Esquema general public^ Diseño y Análisis de Algoritmos
static
{int}
algVoraz
({int}
candidatos)
{ sol
=^ {
}; while
(candidatos
!=^
{^ })
&&
!(esSolucion(sol)))
)
{ int
sig
=^ seleccionar(candidatos); candidatos
=^ candidatos-{sig}; if^ (esValida(sol
U^ {sig})
sol^
=^ sol
U^ {sig};
} return
sol; }
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
21
Cambio de monedas Diseño y Análisis de Algoritmos
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Cambio de monedas • Se dispone de n monedas de euro con valoresde 1, 2, 5, 10, 20 y 50 céntimos de euro, asícomo de 1 y 2 euros• Dada una cantidad de X euros, se ha dedevolver dicha cantidad con el menor númeroposible de monedas Diseño y Análisis de Algoritmos
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
27
Problema de la mochila Se tiene un conjunto de n objetos, cada unocon un peso p Diseño y Análisis de Algoritmos
, y una mochila coni
capacidad de peso C:• Queremos: maximizar el número de objetosque se introducen en la mochila sinsobrepasar la capacidad C • Σ^ x
· pi
≤i
C^
x є { 0 , 1 }
•^ Las variables x
determinan si se introducei
n i=1 el objeto i en la mochila
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Problema de la mochila Se tiene un conjunto de n objetos, cada unocon un peso p Diseño y Análisis de Algoritmos
y un beneficio bi
, Se tienei
una mochila con capacidad de peso C:• Queremos: maximizar el beneficio gracias alos objetos que se introducen en la mochilasin sobrepasar la capacidad C • Σ^ x
· pi
≤i
C^
x є { 0 , 1 }
•^ Se ha de maximizar el beneficio total•^ Las variables x
determinan si se introducei
n i=1 el objeto i en la mochila
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
30
Planificación de tareas Diseño y Análisis de Algoritmos
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Planificación de tareas • Considérese un servidor que tiene que darservicio a n clientes, donde t Diseño y Análisis de Algoritmos
, con i = 1, …, ni
es el tiempo requerido por el cliente i.• Suponiendo que todos los clientes llegan almismo tiempo al servidor pero sólo unopuede usarlo, se ha de minimizar el tiempo Ten el sistema para los n clientes• T =
Σ^ (tiempo en el sistema para el cliente i)
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
32
Planificación de tareas • Supongamos que tenemos 3 clientes con:t= 5^1 Diseño y Análisis de Algoritmos
,^
t= 10^2
,^
t= 3^3
• Existen distintas posibilidades de serviciosegún el orden en el que sean tratados• Estrategia voraz óptima:dar servicio en orden creciente de t
i
Orden
T (tiempo total) 1 2 3
^ Peor planificación ^ Mejor planificación
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Planificación de tareas • Conjunto de candidatos Diseño y Análisis de Algoritmos
: el tiempo servicio de
cada cliente • Función solución
: conjunto de tiempos de los
clientes • Función de factibilidad
: no se requiere, dado
que el tiempo se considera infinito en esteproblema • Función objetivo
: minimizar el tiempo total de
espera del total de los clientes • Función de selección
: el menor tiempo
requerido de servicio
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
34
Planificación de tareas • Demostración formal– T = t Diseño y Análisis de Algoritmos
+ (t 1
+ t 1
)+ (t 2
+ t 1
+ t 2
n· t
+ (n-1)·t 1
+ (n-2)·t 2
+ ... + t 3
n
– Sea S
una permutación aleatoria de los n 1
clientes (en S
habrá clientes no 1
ordenados crecientemente por ti).– Sean x e y dos clientes tales que t
> tx
,y
supongamos que en i-ésimo lugar seatiende al cliente x y que en j-ésimo lugarse atiende al cliente y con i<j.
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Planificación de tareas • Demostración formal– T = t Diseño y Análisis de Algoritmos
+ (t 1
+ t 1
)+ (t 2
+ t 1
+ t 2
n· t
+ (n-1)·t 1
+ (n-2)·t 2
+ ... + t 3
n
– El tiempo de espera de S
es: 1
• T(S
)=n·t 1
+(n-1)t 1
+...+(n-i)t 2
+...+(n-j)tx
+...y
– Sea S
una permutación donde los clientes 2
están ordenados en tiempo de ordencreciente (propuesta del algoritmo voraz)^ • T(S
)=n·t 2
+(n-1)t 1
+...+(n-i)t 2
+...+(n-j)ty
+...x
– ¿Tiempo de espera mayor en S
ó S 2
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
45
Códigos de Huffman • Ejemplo: tenemos un texto de 100.000caracteres de longitud, compuesto por seiscaracteres distintos, cuyas frecuenciasabsolutas de aparición son:• Solución 1: usar 3 bits (longitud fija) paracodificar cada carácter•^ ^ 300.000 bits Diseño y Análisis de Algoritmos
Carácter
a^
b^
c^
d^
e^
f
Frecuencia (miles)
a^
b^
c^
d^
e^
f
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Códigos de Huffman • Ejemplo: tenemos un texto de 100.000caracteres de longitud, compuesto por seiscaracteres distintos, cuyas frecuenciasabsolutas de aparición son:• Solución 2: usar códigos de longitud variable(los más frecuentes, códigos más cortos):•^ ^ 224.000 bits Diseño y Análisis de Algoritmos
Carácter
a^
b^
c^
d^
e^
f
Frecuencia (miles)
a^
b^
c^
d^
e^
f
Minimizamos el promedio de bits empleado pararepresentar el texto
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
47
Códigos de Huffman • Estrategia voraz: asignar códigos más largosa los caracteres con menor frecuencia• Pasos:– Utilización de tabla de frecuencias deaparición de cada carácter– Construcción de árbol binario de longitudvariable de abajo hacia arriba– Uso de cola de árboles con prioridades– Inicialmente tenemos un árbol por carácter– En cada paso, se mezclan los árboles demenor frecuencia generando unnuevo árbol. Diseño y Análisis de Algoritmos
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Códigos de Huffman • Fase 1: orden creciente de frecuencia (miles)• Fase 2 y posteriores: fusión de árboles convalores más pequeños hasta obtener un soloárbol manteniendo la ordenación creciente Diseño y Análisis de Algoritmos
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
49
Códigos de Huffman Diseño y Análisis de Algoritmos
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Códigos de Huffman Diseño y Análisis de Algoritmos
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
51
Códigos de Huffman Diseño y Análisis de Algoritmos
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Códigos de Huffman • Para hallar la codificación de un carácter seusa el camino raíz del árbol hasta la hoja querepresenta el carácter• La secuencia de bits la determina la rama(izquierda: 0; derecha, 1) por la que seavanza hasta la hoja• Codificación final^ a^ Diseño y Análisis de Algoritmos
b^
c^
d^
e^
f
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
57
ARM: Algoritmo de Kruskal Diseño y Análisis de Algoritmos
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
ARM: Algoritmo de Kruskal • Construye el ARM de un grafo T dado poretapas:– Se inicia con un subgrafo vacío de T,llamado G, cada nodo forma unacomponente conexa independiente– De las aristas libres, escoge Diseño y Análisis de Algoritmos
la de menor
peso que no provoque ciclo
(siempre une
dos componentes conexas diferentes)– Es una estrategia óptima– Al final siempre queda una únicacomponente conexa formada portodos los nodos
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
59
ARM: Algoritmo de Kruskal^ Paso^ Diseño y Análisis de Algoritmos
Aristaconsiderada
Componentes conexas
Inicio
{1}^
{2}^
{3}^
{4}^
Aristas en orden creciente de peso:{2,4}
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
ARM: Algoritmo de Kruskal^ Paso^ Diseño y Análisis de Algoritmos
Aristaconsiderada
Componentes conexas
{1}^
Aristas en orden creciente de peso:{2,4}
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
61
ARM: Algoritmo de Kruskal^ Paso^ Diseño y Análisis de Algoritmos
Aristaconsiderada
Componentes conexas
{1}^
Aristas en orden creciente de peso:{2,4}
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
ARM: Algoritmo de Kruskal^ Paso^ Diseño y Análisis de Algoritmos
Aristaconsiderada
Componentes conexas
Aristas en orden creciente de peso:{2,4}
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
63
ARM: Algoritmo de Kruskal^ Paso^ Diseño y Análisis de Algoritmos
Aristaconsiderada
Componentes conexas
Aristas en orden creciente de peso:{2,4}
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
ARM: Algoritmo de Kruskal^ Paso^ Diseño y Análisis de Algoritmos
Aristaconsiderada
Componentes conexas
Aristas en orden creciente de peso:{2,4}
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
69
ARM: Algoritmo de Prim • Construye el árbol de recubrimiento de costemínimo por etapas mediante el siguienteconjunto de pasos:• Al inicio se toma arbitrariamente un nodocomo inicio: árbol de un único nodo.• En cada etapa, las aristas que seconsideran son aquellas que inciden ennodos que ya pertenecen al árbol.• Se selecciona aquella arista cuya distanciaa uno de los nodos del árbol sea mínima. Diseño y Análisis de Algoritmos
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
ARM: Algoritmo de Prim^ Paso^ Diseño y Análisis de Algoritmos
Aristaconsiderada
Nodos pertenecientes al grafo
Inicio
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
71
ARM: Algoritmo de Prim^ Paso^ Diseño y Análisis de Algoritmos
Aristaconsiderada
Nodos pertenecientes al grafo
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
ARM: Algoritmo de Prim^ Paso^ Diseño y Análisis de Algoritmos
Aristaconsiderada
Nodos pertenecientes al grafo
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
73
ARM: Algoritmo de Prim^ Paso^ Diseño y Análisis de Algoritmos
Aristaconsiderada
Nodos pertenecientes al grafo
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
ARM: Algoritmo de Prim^ Paso^ Diseño y Análisis de Algoritmos
Aristaconsiderada
Nodos pertenecientes al grafo
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
75
ARM: Algoritmo de Prim^1 Diseño y Análisis de Algoritmos
Paso
Aristaconsid.
Nodos pertenecientes
al grafo
Inicio^
{1}
1
{1,3}
{1,3}
2
{1,2}
{1,2,3}
3
{2,4}
{1,2,3,4}
4
{2,5}
{1,2,3,4,5}
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
ARM: Algoritmo de Prim^ Paso^ Diseño y Análisis de Algoritmos
Aristaconsiderada
Nodos pertenecientes al grafo
Inicio
• Ejercicio:
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
81
Algoritmo de Dijkstra Diseño y Análisis de Algoritmos
Nodo
Camino
Long.
Є T
Sí
0-^
No
0-^
No
0-^
∞^
No
0-^
∞^
No
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Algoritmo de Dijkstra Diseño y Análisis de Algoritmos
Nodo
Camino
Long.
Є T
Sí
No
0-^
Sí
No
0-^
∞^
No
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
83
Algoritmo de Dijkstra Diseño y Análisis de Algoritmos
Nodo
Camino
Long.
Є T
Sí
Sí
0-^
Sí
No
^30
No
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Algoritmo de Dijkstra Diseño y Análisis de Algoritmos
Nodo
Camino
Long.
Є T
Sí
Sí
0-^
Sí
Sí
^30
No
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
85
Algoritmo de Dijkstra Diseño y Análisis de Algoritmos
Nodo
Camino
Long.
Є T
Sí
Sí
0-^
Sí
Sí
Sí
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
Algoritmo de Dijkstra Diseño y Análisis de Algoritmos
Nodo
Camino
Long.
Є T
Sí
Sí
0-^
Sí
Sí
Sí
Paso
v^
Candidatos
Distancias
Inicio
-^
{4}^
{}^
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
87
Algoritmo de Dijkstra Diseño y Análisis de Algoritmos
Nodo
Camino
Long.
Є T
Sí
…^
…^
…^
…^
…^
…^
…^
…^
Paso
v^
Candidatos
Distancias
Inicio
-^
…^
…^
…^
…^
…^
…^
…^
…^
…^
• Ejercicio:
http://www.dlsi1.etsii.urjc.es
- Algoritmos Voraces
5. Algoritmos Voraces Diseño y Análisis de Algoritmos
Antonio Pérez Carrasco