tecnicas essencias greedy e dynamic - ubi · 2017. 2. 23. · vantagens: algoritmos simples e de...

34
Introdução Algoritmos Greedy Tecnicas Essencias Greedy e Dynamic Paul Crocker RELEASE - Reliable and Secure Computation Group Universidade da Beira Interior, Portugal October 2010 1 / 27 Tecnicas Essencias, Greedy e Dynamic

Upload: others

Post on 20-Feb-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Tecnicas EssenciasGreedy e Dynamic

Paul Crocker

RELEASE - Reliable and Secure Computation GroupUniversidade da Beira Interior, Portugal

October 2010

1 / 27Tecnicas Essencias, Greedy e Dynamic

Page 2: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Outline

1 Introdução

2 Algoritmos GreedyExemplo Greedy I : Interval SchedulingExemplo Greedy II : Interval Partitioning ProblemExemplo Greedy III : Dijkstra’s Shortest Path

2 / 27Tecnicas Essencias, Greedy e Dynamic

Page 3: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Contexto: Concursos de Programação

Para o Grupo de Programação

Algoritmos Greedy

Escalonamento de IntervalosIntervalo PartitioningDijkstra’s Shortest Path

Programação Dinâmica

Números de FibonacciEscalonamento de Intervalos com pesos

Standard Template Library, C++

Containers: Vector, Set, Queues etc.Algorithms: Foreach, Find, Sort etc.

3 / 27Tecnicas Essencias, Greedy e Dynamic

Page 4: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Algoritmos Greedy

Definição

Um Algoritmo guloso, ou ganancioso, é uma técnica dealgoritmos para resolver problemas de otimização

No Algoritmo utilize-se sempre a escolha que parece ser amelhor no momento (uma escolha óptima local)

Vantagens: Algoritmos simples e de fácil implementação

Desvantagens: Nem sempre conduz à soluções óptimasglobais. Podem efectuar cálculos repetitivos.

Examplos

No problema de Coloração de Grafos um Greedy em geral apenasencontra uma boa (rápida) aproximação a solução óptima globalAlgoritmos para os quais a estrategia Greedy é óptimo.

Algoritmos de Kruskal e Prim - minimum spanning treesAlgoritmo de Dijkstra - caminho mais curto.

4 / 27Tecnicas Essencias, Greedy e Dynamic

Page 5: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling

Escalonamento de Intervalos - Definição

Tarefa j tem início no tempo sj e tem fim no tempo fj

2 tarefas são compatíveis se não são sobrepostas em tempo

Objectivo: Dado um conjunto de tarefas encontrar o subconjuntoque contêm o numero máximo de tarefas compatíveis

Escalonamento de tarefas num sistema operativoEscolher palestras para uma sala

5 / 27Tecnicas Essencias, Greedy e Dynamic

Page 6: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Demo

Interval Scheduling

A

C

F

B

D

E

1

Time

0

F

G

1 2 3 4 5 6 7 8 9 10 11

H

0 1 2 3 4 5 6 7 8 9 10 11

6 / 27Tecnicas Essencias, Greedy e Dynamic

Page 7: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Demo

Interval Scheduling

A

C

F

B

D

E

2

0 1 2 3 4 5 6 7 8 9 10 11

B

Time

0

F

G

1 2 3 4 5 6 7 8 9 10 11

H

7 / 27Tecnicas Essencias, Greedy e Dynamic

Page 8: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Demo

Interval Scheduling

A

C

F

B

D

E

3

0 1 2 3 4 5 6 7 8 9 10 11

B C

Time

0

F

G

1 2 3 4 5 6 7 8 9 10 11

H

8 / 27Tecnicas Essencias, Greedy e Dynamic

Page 9: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Demo

Interval Scheduling

A

C

F

B

D

E

4

0 1 2 3 4 5 6 7 8 9 10 11

B A

Time

0

F

G

1 2 3 4 5 6 7 8 9 10 11

H

9 / 27Tecnicas Essencias, Greedy e Dynamic

Page 10: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Demo

Interval Scheduling

A

C

F

B

D

E

5

0 1 2 3 4 5 6 7 8 9 10 11

B E

Time

0

F

G

1 2 3 4 5 6 7 8 9 10 11

H

10 / 27Tecnicas Essencias, Greedy e Dynamic

Page 11: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Demo

Interval Scheduling

A

C

F

B

D

E

6

0 1 2 3 4 5 6 7 8 9 10 11

B ED

Time

0

F

G

1 2 3 4 5 6 7 8 9 10 11

H

11 / 27Tecnicas Essencias, Greedy e Dynamic

Page 12: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Demo

Interval Scheduling

A

C

F

B

D

E

7

0 1 2 3 4 5 6 7 8 9 10 11

B E F

Time

0

F

G

1 2 3 4 5 6 7 8 9 10 11

H

12 / 27Tecnicas Essencias, Greedy e Dynamic

Page 13: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Demo

Interval Scheduling

A

C

F

B

D

E

8

0 1 2 3 4 5 6 7 8 9 10 11

B E G

Time

0

F

G

1 2 3 4 5 6 7 8 9 10 11

H

13 / 27Tecnicas Essencias, Greedy e Dynamic

Page 14: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Demo

Interval Scheduling

A

C

F

B

D

E

9

0 1 2 3 4 5 6 7 8 9 10 11

B E H

Time

0

F

G

1 2 3 4 5 6 7 8 9 10 11

H

14 / 27Tecnicas Essencias, Greedy e Dynamic

Page 15: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Greedy Algorithm

Greedy Template

Ordenar tarefas usando algum critério natural

Iterar sobre o conjunto neste ordem adicionado uma tarefa ao"schedule"(subconjunto) desde que seja compatível com astarefas no subconjunto

Possíveis Critérios

Tempo de Incio: ordenar tarefas num ordem ascendente sj

Tempo de Fim: ordenar tarefas num ordem ascendente fj

Duração Mais Curto: ordenar tarefas num ordem ascendentedj = (fj − sj)

Minimizar Conflitos: ordenar tarefas de acordo com o numero deconflitos que cada tarefa tem.

15 / 27Tecnicas Essencias, Greedy e Dynamic

Page 16: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Contra Exemplos

Algoritmo Greedy não é óptimo

20 Tempo do Inicio mais cedo

20Duração mais curta

20Numero de Conflitos16 / 27

Tecnicas Essencias, Greedy e Dynamic

Page 17: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Contra Exemplos

Algoritmo Greedy não é óptimo

Tempo do Inicio mais cedo

20Duração mais curta

20Numero de Conflitos16 / 27

Tecnicas Essencias, Greedy e Dynamic

Page 18: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Contra Exemplos

Algoritmo Greedy não é óptimo

Tempo do Inicio mais cedo

Duração mais curta

20Numero de Conflitos16 / 27

Tecnicas Essencias, Greedy e Dynamic

Page 19: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Contra Exemplos

Algoritmo Greedy não é óptimo

Tempo do Inicio mais cedo

Duração mais curta

Numero de Conflitos

16 / 27Tecnicas Essencias, Greedy e Dynamic

Page 20: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Critério Correcto

Ordenar tarefas de acordo com o seu tempo de terminação.Adicionar tarefas a solução (schedule) que compatíveis com osexistentes.

AlgoritmoSeja V um Vector de intervalos onde vi = (si , fi)Ordenando o vector temos f1 ≤ f2 ≤ f3.. etc

Code

A← ∅for (j=1 to n)

se (tarefa j seja compatível ) entãoA← A ∪ (j)

return A

17 / 27Tecnicas Essencias, Greedy e Dynamic

Page 21: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Critério Correcto

Ordenar tarefas de acordo com o seu tempo de terminação.Adicionar tarefas a solução (schedule) que compatíveis com osexistentes.

AlgoritmoSeja V um Vector de intervalos onde vi = (si , fi)Ordenando o vector temos f1 ≤ f2 ≤ f3.. etc

Code

A← ∅for (j=1 to n)

se (tarefa j seja compatível ) entãoA← A ∪ (j)

return A

17 / 27Tecnicas Essencias, Greedy e Dynamic

Page 22: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Scheduling: Critério Correcto

Ordenar tarefas de acordo com o seu tempo de terminação.Adicionar tarefas a solução (schedule) que compatíveis com osexistentes.

AlgoritmoSeja V um Vector de intervalos onde vi = (si , fi)Ordenando o vector temos f1 ≤ f2 ≤ f3.. etc

Code

A← ∅for (j=1 to n)

se (tarefa j seja compatível ) entãoA← A ∪ (j)

return A

17 / 27Tecnicas Essencias, Greedy e Dynamic

Page 23: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Complexidade

Complexidade de Implementação O(n log n)

Complexidade do Algoritmo de ordenação quick-Sort O(nlogn)

Complexidade do Ciclo for j=1..n : O(n)

Detalhe de Implementação - Tarefa j é compatível com A sse

sj−1 ≥ f(ultima inserida no A)

18 / 27Tecnicas Essencias, Greedy e Dynamic

Page 24: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Teorema. O algoritmo Greedy é óptimoProva pelo contradiction (absurdum do anúncio do reductio, Latin para "a redução no absurdo").

Suponha que o algoritmo Greedy não gere a solução óptima

seja i1, i2, ...., ik o conjunto de tarefas escolhidos pelo Greedy

seja j1, j2, ...., jk o conjunto de tarefas duma solução óptima

seja r o valor máximo tal que i1 = j1, i2 = j2, ..., ir = jr

Contradiction

Repare que na tarefa r + 1, na solução óptima jr+1 tem queacabar depois do Greedy

Mas assim posso substituir esta tarefa pela tarefa escolhido peloalgoritmo Greedy (não está nenhum conflito)

Mas se posso substituir então estou a violar a condição que ovalor de r era máximo. QED.

19 / 27Tecnicas Essencias, Greedy e Dynamic

Page 25: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Partitioning Problem

DefiniçãoDado um conjunto de intervalos (si , fi) encontra umparticionamento deste conjunto onde o numero desubconjuntos é um minimo e não há sobreposições deintervalos no conjunto.

Aplicações

atribuir processos/threads a um numero minimo deprocessadores

encontrar o numero minimo de salas de aulas necessárias paraum conjunto de aulas ou palestras numa conferencia.

20 / 27Tecnicas Essencias, Greedy e Dynamic

Page 26: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Salas de AulasDefinição do Problema

Dado um conjunto de aulas onde cada aula i começa a si e temfim no tempo fi

Objectivo: Encontrar o numero minimo de salas necessáriaspara realizar todas estas aulas tal que não haja duas aulas namesma sala no mesmo tempo.

ExemploUm particionamento de 12 aulas que necessita de 4 salas de aulas

21 / 27Tecnicas Essencias, Greedy e Dynamic

Page 27: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Salas de AulasDefinição do Problema

Dado um conjunto de aulas onde a aula i começa a si e tem fimno tempo fi

Objectivo: Encontrar o numero minimo de salas necessáriaspara realizar todas estas aulas tal que não haja duas aulas namesma sala no mesmo tempo

ExemploUm particionamento de 12 aulas que necessita de 3 salas de aulas

22 / 27Tecnicas Essencias, Greedy e Dynamic

Page 28: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Partitioning: Minorante dumaSolução Óptima

Definição de ProfundidadeA profundidade dum conjunto de intervalos (abertos) é onumero máximo de intervalos que têm um tempo em comum.

Exemplos

o conjunto (1,3),(3,6),(2,5) tem profundidade de 2.

A profundidade do exemplo anterior é 3 !

23 / 27Tecnicas Essencias, Greedy e Dynamic

Page 29: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Partitioning: Minorante dumaSolução Óptima

Definição de ProfundidadeA profundidade dum conjunto de intervalos (abertos) é onumero máximo de intervalos que têm um tempo em comum.

Exemplos

o conjunto (1,3),(3,6),(2,5) tem profundidade de 2.

A profundidade do exemplo anterior é 3 !

23 / 27Tecnicas Essencias, Greedy e Dynamic

Page 30: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Interval Partitioning: Algoritmo GreedyAlgoritmoOrdenar os intervalos pelo tempo de inicio. Atribuir cada intervalo a primeirasala disponível. Se não há sala disponível adicione uma nova sala.

Ordenar intervalos pelo tempo de inicio tal que s1 ≤ s2 ≤ ... ≤ sn

d é o numero de salas necessárias

d = 0for (j=0 to n) {

if ( aula j é compatível com sala k (1..d) )atribuir a aula j para a sala k

else {alocar uma nova sala d + 1atribuir a aula j para a sala d +1d = d + 1

}}

Implementação. O(nlogn)

Para cada sala mantêm o tempo do fim da última aula adicionadaGuarde as salas de aulas numa fila de prioridade

24 / 27Tecnicas Essencias, Greedy e Dynamic

Page 31: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

Análise do Algoritmo

NotaNota que o Algoritmo Greedy nunca escalona duas aulasincompatíveis na mesma sala

O algoritmo é óptimoProva

seja d o numero de salas do algoritmo Greedya sala d foi usada porque foi necessário adicionar a aula (intervalo) jque era incompatível com as outras d-1 salasvisto que as aulas foram ordenados por sj estas incompatibilidades sãodevido a aulas que começam mais cedo da aula jportanto existem d aulas sobrepostas no tempo sj + ε

qualquer algoritmo usava >=d salas - portanto esta também dá umasolução óptimaA solução é única ?

25 / 27Tecnicas Essencias, Greedy e Dynamic

Page 32: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

O Caminho Mais Curto

Definição do Problema

Dado um grafo dirigido (ou não dirigido) G = (V, E) com arestasde peso não negativo,

Objectivo: Dado um vértice I (Inicio) e um Vértice F (fim)IeF ∈ V encontrar o caminho mais curto entre I e F

O algoritmo de DijkstraCriado pelo cientista da computação Edsger Dijkstra, solucionao problema do caminho mais curto em tempo computacionalO([m+n]log n) onde m é o número de arestas e n é o númerode vértices

26 / 27Tecnicas Essencias, Greedy e Dynamic

Page 33: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

O algoritmo de Dijkstra

CódigoO algoritmo considera um conjunto S de menores caminhos,os quaisjá foi determinado o caminho mais curto d(u) de I para u um vérticede S. O conjunto Q será o conjunto de vértices dos quais ainda nãofoi determinado o caminho mais curto

1 inicialmente S=I, Q=V-I, d(I)=0 e d(u)=infinito para u ∈ Q2 escolhe o vértice actual do Q como o vértice não explorado que tem

distancia minimo do vértice inicial (passo greedy)3 para o vértice actual considere todos os seus vizinhos ligados que ainda

não foram visitados e calcule a sua distancia a partir do nó inicialpassando por este vértice. Se esta distancia for inferior do que adistancia previamente indicado para este vértice (infinito no inicio) entãoactualize este valor de distancia

4 indique o vértice como visitado - adicionado este vértice ao S e tirandodo Q

5 se Q for vazio então pare caso contrario voltar ao passo 2.

27 / 27Tecnicas Essencias, Greedy e Dynamic

Page 34: Tecnicas Essencias Greedy e Dynamic - UBI · 2017. 2. 23. · Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais

Introdução Algoritmos Greedy

References

Sides e Apontamentos..

http://www.cs.princeton.edu/ wayne/kleinberg-tardos/

Livro: Algorithm Design by Jon Kleinberg and Éva Tardos

28 / 27Tecnicas Essencias, Greedy e Dynamic