23
Tema 09: Algoritmos ávidos 1 Análisis de algoritmos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom

Tema 10: Algoritmos ávidos - eafranco.com

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tema 10: Algoritmos ávidos - eafranco.com

Tema 09: Algoritmos ávidos

1

Análisis de algoritmos

M. en C. Edgardo Adrián Franco Martínez http://[email protected]@edfrancom edgardoadrianfrancom

Page 2: Tema 10: Algoritmos ávidos - eafranco.com

• Introducción

• Algoritmos ávidos

• Forma general de un algoritmo ávido

• Planteamiento de un algoritmo ávido

• Ejemplo

• Mínimo número de monedas

Contenido

2

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 3: Tema 10: Algoritmos ávidos - eafranco.com

Introducción• Los algoritmos ávidos o voraces (Greedy Algorithms)

son algoritmos que toman decisiones de cortoalcance, basadas en información inmediatamentedisponible, sin importar consecuencias futuras.

• Suelen ser bastante simples y se emplean sobretodo para resolver problemas de optimización, comopor ejemplo, encontrar la secuencia óptima paraprocesar un conjunto de tareas por un computador,hallar el camino mínimo de un grafo, etc.

3

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 4: Tema 10: Algoritmos ávidos - eafranco.com

4

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• Los algoritmos voraces también se caracterizan porla rapidez en que encuentran una solución (cuandola encuentran), la cual casi siempre no es la mejor.

• Normalmente son utilizados para resolverproblemas en los que la velocidad de respuestadebe ser muy alta o en la que el árbol de decisionesde búsqueda es muy grande, no siendo posibleanalizar la totalidad de posibilidades.

Page 5: Tema 10: Algoritmos ávidos - eafranco.com

5

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• La estrategia general de este tipo de algoritmos sebasa en la construcción de una solución, la cualcomienza sin elementos y cada vez que debe tomaralgún tipo de decisión, lo hace con la informaciónque tiene a primera mano, la cual de alguna manerale permita adicionar elementos y así avanzar hacia lasolución total. Cada elemento o paso de la soluciónse adiciona al conjunto solución y así hasta llegar ala solución final o a un punto en el cual no puedeseguir avanzando, lo cual indica que no encontróuna solución al problema.

Page 6: Tema 10: Algoritmos ávidos - eafranco.com

6

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• Habitualmente, los elementos que intervienen son:

• Un conjunto o lista de candidatos (tareas a procesar,vértices del grafo, etc.)

• Un conjunto de decisiones ya tomadas (candidatos yaescogidos).

• Una función que determina si un conjunto decandidatos es una solución al problema (aunque notiene por qué ser la óptima).

• Para resolver el problema de optimización hay queencontrar un conjunto de candidatos que optimizala función objetivo. Los algoritmos voraces procedenpor pasos.

Page 7: Tema 10: Algoritmos ávidos - eafranco.com

Algoritmos ávidos• Un algoritmo voraz (también conocido como ávido,

devorador o goloso) es aquel que, para resolver undeterminado problema, sigue una heurísticaconsistente en elegir la opción óptima en cada pasolocal con la esperanza de llegar a una solucióngeneral óptima. Este esquema algorítmico es el quemenos dificultades plantea a la hora de diseñar ycomprobar su funcionamiento. Normalmente seaplica a los problemas de optimización.

7

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Page 8: Tema 10: Algoritmos ávidos - eafranco.com

8

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• Dado un conjunto finito de entradas C, un algoritmovoraz devuelve un conjunto S (seleccionados) tal queS ⊆ C y que además cumple con las restricciones delproblema inicial.

• Cada conjunto 𝑆 que satisfaga las restricciones se lesuele denominar prometedor, y si este además logra quela función objetivo se minimice o maximice (segúncorresponda) diremos que 𝑆 es una solución óptima.

Page 9: Tema 10: Algoritmos ávidos - eafranco.com

9

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Elementos de los que consta la técnica

• El conjunto 𝑪 de candidatos, entradas del problema.

• Función solución, esta comprueba, en cada paso, si elsubconjunto actual de candidatos elegidos forma unasolución (no importa si es óptima o no lo es).

• Función de selección, informa de cuál es el elemento másprometedor para completar la solución. Éste no puede habersido escogido con anterioridad. Cada elemento esconsiderado una sola vez. Luego, puede ser rechazado oaceptado y pertenecerá a 𝐶 \ 𝑆.

• Función de factibilidad, informa si a partir de un conjunto sepuede llegar a una solución. Lo aplicaremos al conjunto deseleccionados unido con el elemento más prometedor.

• Función objetivo, es aquella que queremos maximizar ominimizar, el núcleo del problema.

Page 10: Tema 10: Algoritmos ávidos - eafranco.com

10

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Función Ávido(C:conjunto):conjunto //C conjunto de candidatos

S <= vacio //S conjunto en el que se construye la solución

mientras ¬solución(S) y C <> vacío hacer

x <= el elemento de C que maximiza seleccionar(x)

C <= C \ {x}

si prometedor(S U {x}) entonces S <= S U {x}

si solución(S)

entonces devolver S

si no devolver no hay solución

Fin Ávido

Forma general de un algoritmo ávido

Page 11: Tema 10: Algoritmos ávidos - eafranco.com

11

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez• Para identificar si un problema es susceptible de serresuelto por un algoritmo ávido se definen una seriede elementos que han de estar presentes en elproblema:

• Un conjunto de candidatos, que corresponden a las nentradas del problema.

• Una función de selección que en cada momento determineel candidato idóneo para formar la solución de entre losque aún no han sido seleccionados ni rechazados.

Forma general de un algoritmo ávido

Page 12: Tema 10: Algoritmos ávidos - eafranco.com

12

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• Una función que compruebe si un cierto subconjunto decandidatos es prometedor. Entendemos por prometedorque sea posible seguir añadiendo candidatos y encontraruna solución.

• Una función objetivo que determine el valor de la soluciónhallada. Es la función que queremos maximizar ominimizar.

• Una función que compruebe si un subconjunto de estasentradas es solución al problema, sea óptima o no.

Page 13: Tema 10: Algoritmos ávidos - eafranco.com

13

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez• Para resolver el problema, un algoritmo ávido tratará de encontrar unsubconjunto de candidatos tales que, cumpliendo las restricciones delproblema, constituya la solución óptima.

• Para ello trabajará por etapas, tomando en cada una de ellas ladecisión que le parece la mejor, sin considerar las consecuenciasfuturas, y por tanto escogerá de entre todos los candidatos el queproduce un óptimo local para esa etapa, suponiendo que será a su vezóptimo global para el problema.

• Antes de añadir un candidato a la solución que está construyendocomprobará si es prometedora al añadirlo. En caso afirmativo loincluirá en ella y en caso contrario descartará este candidato parasiempre y no volverá a considerarlo.

• Cada vez que se incluye un candidato comprobará si el conjuntoobtenido es solución.

Planteamiento de un algoritmo ávido

Page 14: Tema 10: Algoritmos ávidos - eafranco.com

14

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez• Se pide crear un algoritmo que permita a una máquinaexpendedora devolver el cambio mediante el menor númerode monedas posible.

1. Considerando que el número de monedas es ilimitado.

2. Considerando que el número de monedas es limitado,es decir, se tiene un número concreto de monedas decada tipo.

Ejemplo: Mínimo número de monedas

Page 15: Tema 10: Algoritmos ávidos - eafranco.com

15

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• Candidato: conjunto finito de monedas de, por ejemplo, 1,5, 10 y 25 unidades, con un número de monedas ilimitadoo limitado.

• Solución: conjunto de monedas cuya suma es la cantidad apagar.

• Prometedor: la suma de las monedas escogidas en unmomento dado no supera la cantidad a pagar.

• Función de selección: la moneda de mayor valor en elconjunto de candidatos aún no considerados.

• Función objetivo: número de monedas utilizadas en lasolución.

Page 16: Tema 10: Algoritmos ávidos - eafranco.com

16

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• La estrategia a seguir consiste en escoger sucesivamente lasmonedas de valor mayor que no superen la cantidad decambio a devolver. El buen funcionamiento del algoritmodepende de los tipos de monedas presentes en la entrada.Así, por ejemplo, si no hay monedas de valor menor que diez,no se podrá devolver un cambio menor que diez. Además, lalimitación del número de monedas también influye en laoptimalidad del algoritmo, el cual devuelve buenassoluciones bajo determinados conjuntos de datos, pero nosiempre.

• Si hay que devolver la cantidad 110, se tomaría primero una moneda de50, quedando una cantidad restante de 60. Como 50 es aún menor que60, se tomaría otra moneda de 50. Ahora la cantidad restante es 10, portanto ya tenemos que devolver una moneda de 5, ya que 50 y 25 sonmayores que 10, y por tanto se desechan. La cantidad a devolver ahora es5. Se tomaría otra moneda de 5, terminando así el problema de formacorrecta.

• Solución: Devolver dos monedas de 50 y dos de 5.

Denominación de Monedas 50 25 5 1

Page 17: Tema 10: Algoritmos ávidos - eafranco.com

17

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Algoritmo ávido: Monedas ilimitadas

fun cambio (monedas_valor[1..n] de nat, importe: nat) dev

cambio[1..n] de nat

m := 1;

mientras (importe > 0) and (m <= n) hacer

si (monedas_valor[m] <= importe) entonces

monedas[m] := monedas[m] – 1;

cambio[m] := cambio[m] + 1;

importe := importe – monedas_valor[m];

si no

m := m + 1;

fsi

fmientras

si importe > 0 entonces devolver “Error”; fsi

ffun

Page 18: Tema 10: Algoritmos ávidos - eafranco.com

18

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• Si consideramos además un numero de monedas de cadadenominación no ilimitado deberemos ahora de considerarque sea posible tomar monedas de cada denominación paraformar la solución

• Si hay que devolver la cantidad 110 siguiendo el método del algoritmovoraz, se tomaría primero una moneda de 50, quedando una cantidadrestante de 60. Como 50 es aún menor que 60, se tomaría otra moneda de50. Ahora la cantidad restante es 10, por tanto ya tenemos que devolveruna moneda de 5, ya que 50 y 25 son mayores que 10, y por tanto sedesechan. La cantidad a devolver ahora es 5. Se tomaría otra moneda de5, pero puesto que ya no nos queda ninguna, deberán devolverse 5 devalor 1, terminando así el problema de forma correcta.

• Solución: Devolver dos monedas de 50, una de 5 y cinco de 1.

Denominación de Monedas 50 25 5 1

Monedas disponibles 3 4 1 6

Page 19: Tema 10: Algoritmos ávidos - eafranco.com

19

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Algoritmo ávido: Monedas limitadas

fun cambio (monedas_valor[1..n] de nat, monedas[1..n] de nat,

importe: nat) dev cambio[1..n] de nat

m := 1;

mientras (importe > 0) and (m <= n) hacer

si (monedas_valor[m] <= importe) and (monedas[m] > 0)

entonces

monedas[m] := monedas[m] – 1;

cambio[m] := cambio[m] + 1;

importe := importe – monedas_valor[m];

si no

m := m + 1;

fsi

fmientras

si importe > 0 entonces devolver “Error”; fsi

ffun

Page 20: Tema 10: Algoritmos ávidos - eafranco.com

20

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez• Árboles generadores minimales• Problema

• Dado un grafo conexo G = (V, A) no dirigido y ponderado con pesospositivos, calcular un subgrafo conexo T ⊆ G que conecte todos losvértices del grafo G y que la suma de los pesos de las aristas seleccionadassea mínima.

• Solución

• Este subgrafo es necesariamente un árbol: árbol generador minimal oárbol de recubrimiento mínimo (“minimum spanning tree” [MST]).

Ejemplo: Algoritmos Greedy sobre grafos

Page 21: Tema 10: Algoritmos ávidos - eafranco.com

21

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• Aplicaciones

• Diseño de redes: redes telefónicas, eléctricas, hidráulicas, de ordenadores, de carreteras…

• Construcción de redes de mínimo coste

• Refuerzo de líneas criticas

• Identificación de cuellos de botella

• Enrutamiento (evitar ciclos)

• Soluciones aproximadas para problemas NP.

• Algoritmos de agrupamiento (análisis de clúster)

• Algoritmos Greedy para resolver el problema:

• Algoritmo de Kruskal:

• Comenzando con T=∅, considerar las aristas en orden creciente de coste y añadir las aristas a T salvo que hacerlo suponga la creación de un ciclo.

• Algoritmo de Prim:

• Comenzando con un nodo raíz arbitrario s, hacer crecer el árbol T desde s hacia afuera. En cada paso, se añade al árbol T el nodo que tenga una arista de menor coste que lo conecte a otros nodos de T.

• Algoritmo de borrado inverso:

• Comenzando con T=A, considerar las aristas en orden decreciente de coste y eliminar las aristas de T salvo que eso desconectase T.

Page 22: Tema 10: Algoritmos ávidos - eafranco.com

22

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez• Caminos mínimos• Problema

• Dado un grafo G ponderado con pesos positivos, calcular el camino demenor peso existente entre un vértice s y otro vértice t.

Ejemplo: Caminos mínimos

Page 23: Tema 10: Algoritmos ávidos - eafranco.com

23

An

ális

is d

e al

gori

tmo

s09

Alg

ori

tmo

s áv

ido

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• Algoritmo de Dijkstra (1959)• El algoritmo de Djikstra es un algoritmo muy único. Inicialmente, se

utiliza un enfoque voraz para conseguir distancias iniciales a los nodos vecinos. Luego, en el siguiente paso, se comprueba si el valor calculado es el óptimo global a ese nodo o no. Si no, se comprueba todos los otros caminos y calcula la distancia óptima a ese nodo. Luego, basándose en los valores ya calculados de los nodos anteriores, se calcula el camino más corto para el nodo final. Por lo tanto, esto es una especie de un enfoque de programación dinámica.

• Así, Djikstra utiliza ambos enfoques y, por tanto, no puede ser completamente clasificada como "Greedy" o "DP". Es una mezcla de ambos y por lo tanto, es único. Siempre ha sido un tema debatido. Tal es la belleza del algoritmo.

• Dado un grafo G=(V,A) y un vértice s, encontrar el camino de costo mínimo para llegar desde s al resto de los vértices en el grafo.

• IDEA: Mantener el conjunto de nodos ya explorados para los cuales ya hemos determinado el camino más corto desde s…