Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Temario OAC, Apuntes de Ingeniería del Software

Asignatura: Organizacion y Arquitectura de Computadores, Profesor: Oscar Oscar, Carrera: Ingeniería del Software, Universidad: URJC

Tipo: Apuntes

2012/2013

Subido el 12/10/2013

blueeyes3334
blueeyes3334 🇪🇸

3.9

(40)

24 documentos

1 / 20

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
http://www.dlsi1.etsii.urjc.es
5. Algoritmos Voraces
1
Diseño y Análisis de Algoritmos
5. Algoritmos Voraces
Antonio Pérez Carrasco
http://www.dlsi1.etsii.urjc.es
5. Algoritmos Voraces
3
Diseño y Análisis de Algoritmos
Introducción
http://www.dlsi1.etsii.urjc.es
5. Algoritmos Voraces
4
Diseño y Análisis de Algoritmos
Introducción
Esta técnica permite resolver problemas
combinatorios, cuya solución es compuesta:
x={x1, ... , xn}
Condiciones sobre x:
Dominio: conjunto de valores que pueda
tomar cada componente xide la solución
Restricciones: establecen condiciones
adicionales, generalmente entre los
distintos componentes de xi.
http://www.dlsi1.etsii.urjc.es
5. Algoritmos Voraces
5
Diseño y Análisis de Algoritmos
Introducción
Ejemplo, problema de las n-reinas:
La solución está formada por las n celdas
que serán ocupadas por las n reinas.
¿Dominio? ¿Restricciones?
En general, un problema combinatorio
puede tener varias soluciones válidas.
Solución 1:
(1,3) (2,1) (3,4) (4,2)
Solución 2:
(1,2) (2,4) (3,1) (4,3)
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14

Vista previa parcial del texto

¡Descarga Temario OAC y más Apuntes en PDF de Ingeniería del Software solo en Docsity!

http://www.dlsi1.etsii.urjc.es

  1. Algoritmos Voraces

1

5. Algoritmos Voraces Diseño y Análisis de Algoritmos

Antonio Pérez Carrasco

http://www.dlsi1.etsii.urjc.es

  1. Algoritmos Voraces

Introducción Diseño y Análisis de Algoritmos

http://www.dlsi1.etsii.urjc.es

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. Algoritmos Voraces

17

Esquema general Diseño y Análisis de Algoritmos

http://www.dlsi1.etsii.urjc.es

  1. 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

  1. 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

  1. 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

  1. Algoritmos Voraces

21

Cambio de monedas Diseño y Análisis de Algoritmos

http://www.dlsi1.etsii.urjc.es

  1. 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

  1. 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

  1. 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

  1. Algoritmos Voraces

30

Planificación de tareas Diseño y Análisis de Algoritmos

http://www.dlsi1.etsii.urjc.es

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. Algoritmos Voraces

49

Códigos de Huffman Diseño y Análisis de Algoritmos

http://www.dlsi1.etsii.urjc.es

  1. Algoritmos Voraces

Códigos de Huffman Diseño y Análisis de Algoritmos

http://www.dlsi1.etsii.urjc.es

  1. Algoritmos Voraces

51

Códigos de Huffman Diseño y Análisis de Algoritmos

http://www.dlsi1.etsii.urjc.es

  1. 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

  1. Algoritmos Voraces

57

ARM: Algoritmo de Kruskal Diseño y Análisis de Algoritmos

http://www.dlsi1.etsii.urjc.es

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. Algoritmos Voraces

81

Algoritmo de Dijkstra Diseño y Análisis de Algoritmos

Nodo

Camino

Long.

Є T

0-^

No

0-^

No

0-^

∞^

No

0-^

∞^

No

http://www.dlsi1.etsii.urjc.es

  1. Algoritmos Voraces

Algoritmo de Dijkstra Diseño y Análisis de Algoritmos

Nodo

Camino

Long.

Є T

No

0-^

No

0-^

∞^

No

http://www.dlsi1.etsii.urjc.es

  1. Algoritmos Voraces

83

Algoritmo de Dijkstra Diseño y Análisis de Algoritmos

Nodo

Camino

Long.

Є T

0-^

No

^30

No

http://www.dlsi1.etsii.urjc.es

  1. Algoritmos Voraces

Algoritmo de Dijkstra Diseño y Análisis de Algoritmos

Nodo

Camino

Long.

Є T

0-^

^30

No

http://www.dlsi1.etsii.urjc.es

  1. Algoritmos Voraces

85

Algoritmo de Dijkstra Diseño y Análisis de Algoritmos

Nodo

Camino

Long.

Є T

0-^

http://www.dlsi1.etsii.urjc.es

  1. Algoritmos Voraces

Algoritmo de Dijkstra Diseño y Análisis de Algoritmos

Nodo

Camino

Long.

Є T

0-^

Paso

v^

Candidatos

Distancias

Inicio

-^

{4}^

{}^

http://www.dlsi1.etsii.urjc.es

  1. Algoritmos Voraces

87

Algoritmo de Dijkstra Diseño y Análisis de Algoritmos

Nodo

Camino

Long.

Є T

…^

…^

…^

…^

…^

…^

…^

…^

Paso

v^

Candidatos

Distancias

Inicio

-^

…^

…^

…^

…^

…^

…^

…^

…^

…^

• Ejercicio:

http://www.dlsi1.etsii.urjc.es

  1. Algoritmos Voraces

5. Algoritmos Voraces Diseño y Análisis de Algoritmos

Antonio Pérez Carrasco