tecnicas essencias greedy e dynamic - ubi · 2017. 2. 23. · vantagens: algoritmos simples e de...
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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