Tecnicas Essencias Greedy e Dynamic

Documentos relacionados
Teoria dos Grafos Aula 14

Projeto e Análise de Algoritmos

GRAFOS Aula 08 Árvore Geradora Mínima: Algoritmos de Kruskal e Prim-Jarnik Max Pereira

Grafos. Exemplo de árvore geradora mínima. Notas. Notas. Notas. Notas. Árvores espalhadas mínimas. Como construir uma árvore geradora miníma

Projeto e Análise de Algoritmos

Oalgoritmo de Dijkstra

Teoria dos Grafos Aula 8

Técnicas de Desenho de Algoritmos

Algoritmos Greedy. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Algoritmos Greedy 2014/ / 40

Grafos: árvores geradoras mínimas. Graça Nunes

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (5)

Árvores de Suporte de Custo Mínimo

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32

Projeto e Análise de Algoritmos

ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8.

Grafos Parte 1. Aleardo Manacero Jr.

INF 1010 Estruturas de Dados Avançadas

Grafos Caminhos mais Curtos

Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO

5COP096 TeoriadaComputação

Algoritmos em Grafos

Grafos: componentes fortemente conexos, árvores geradoras mínimas

Teoria dos Grafos Aula 6

QUESTÕES DE PROVAS ANTIGAS

Problemas de Fluxo em Redes

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Projeto e Análise de Algoritmos. Método Guloso

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4)

Melhor caminho entre duas estações de metro

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

Grafos. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Análise e Projeto de Algoritmos

Projeto e Análise de Algoritmos

Algoritmo de Dijkstra em LISP

GRAFOS Aula 05 Algoritmos de percurso: busca em largura e profundidade Max Pereira

NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016

Distâncias Mínimas. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Distâncias Mínimas 2014/ / 27

INF 1010 Estruturas de Dados Avançadas

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 11: Exercício Integrador (parte 2)

Problema do Caminho Mínimo

Teoria dos Grafos Aula 5

Análise e Síntese de Algoritmos. Programação Dinâmica CLRS, Cap. 15

Análise e Síntese de Algoritmos. Algoritmos em Grafos CLRS, Cap. 22

Volmir Eugênio Wilhelm Departamento de Engenharia de Produção UFPR 21

Problema de seleção de atividades. Aula 14. Exemplo. Algoritmos Gulosos. Algoritmos Gulosos. Intervalo: par ordenado de números

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

Ciclos hamiltonianos e o problema do caixeiro viajante

GRAFOS Aula 06 Algoritmo de Caminho Mínimo: Dijkstra Max Pereira

Algoritmo de Dijkstra Wikipédia, a enciclopédia livre

Algoritmo de Prim Wikipédia, a enciclopédia livre

Método Guloso. Troco mínimo. Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) junho/2012. Troco mínimo. Troco mínimo

Aula 08. Estruturas de dados Árvore e Grafo

Análise e Síntese de Algoritmos.

Programação Dinâmica. Prof. Anderson Almeida Ferreira. Adaptado do material elaborado por Andrea Iabrudi Tavares

GRAFOS Aula 09 Coloração de Grafos Max Pereira

Análise e Complexidade de Algoritmos

Algoritmos Gulosos. Norton T. Roman

Projeto e Análise de Algoritmos

Algoritmos de Caminho Mínimo Parte 1

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro Sala 110 Prédio da Computação IECE - ITA

Transcrição:

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

Outline 1 Introdução 2 Exemplo Greedy I : Interval Scheduling Exemplo Greedy II : Interval Partitioning Problem Exemplo Greedy III : Dijkstra s Shortest Path 2 / 27

Contexto: Concursos de Programação Para o Grupo de Programação Escalonamento de Intervalos Intervalo Partitioning Dijkstra s Shortest Path Programação Dinâmica Números de Fibonacci Escalonamento de Intervalos com pesos Standard Template Library, C++ Containers: Vector, Set, Queues etc. Algorithms: Foreach, Find, Sort etc. 3 / 27

Definição Um Algoritmo guloso, ou ganancioso, é uma técnica de algoritmos para resolver problemas de otimização No Algoritmo utilize-se sempre a escolha que parece ser a melhor no momento (uma escolha óptima local) Vantagens: Algoritmos simples e de fácil implementação Desvantagens: Nem sempre conduz à soluções óptimas globais. Podem efectuar cálculos repetitivos. Examplos No problema de Coloração de Grafos um Greedy em geral apenas encontra uma boa (rápida) aproximação a solução óptima global Algoritmos para os quais a estrategia Greedy é óptimo. Algoritmos de Kruskal e Prim - minimum spanning trees Algoritmo de Dijkstra - caminho mais curto. 4 / 27

Interval Scheduling Escalonamento de Intervalos - Definição Tarefa j tem início no tempo s j e tem fim no tempo f j 2 tarefas são compatíveis se não são sobrepostas em tempo Objectivo: Dado um conjunto de tarefas encontrar o subconjunto que contêm o numero máximo de tarefas compatíveis Escalonamento de tarefas num sistema operativo Escolher palestras para uma sala 5 / 27

Interval Scheduling: Demo Interval Scheduling B C A E D F G 0 1 2 3 4 5 6 7 8 9 10 11 H Time 0 1 2 3 4 5 6 7 8 9 10 11 1 6 / 27

Interval Scheduling: Demo Interval Scheduling B C A E D F G 0 1 2 3 4 5 6 7 8 9 10 11 H Time B 0 1 2 3 4 5 6 7 8 9 10 11 2 7 / 27

Interval Scheduling: Demo Interval Scheduling B C A E D F G 0 1 2 3 4 5 6 7 8 9 10 11 H Time B C 0 1 2 3 4 5 6 7 8 9 10 11 3 8 / 27

Interval Scheduling: Demo Interval Scheduling B C A E D F G 0 1 2 3 4 5 6 7 8 9 10 11 H Time B A 0 1 2 3 4 5 6 7 8 9 10 11 4 9 / 27

Interval Scheduling: Demo Interval Scheduling B C A E D F G 0 1 2 3 4 5 6 7 8 9 10 11 H Time B E 0 1 2 3 4 5 6 7 8 9 10 11 5 10 / 27

Interval Scheduling: Demo Interval Scheduling B C A E D F G 0 1 2 3 4 5 6 7 8 9 10 11 H Time B ED 0 1 2 3 4 5 6 7 8 9 10 11 6 11 / 27

Interval Scheduling: Demo Interval Scheduling B C A E D F G 0 1 2 3 4 5 6 7 8 9 10 11 H Time B E F 0 1 2 3 4 5 6 7 8 9 10 11 7 12 / 27

Interval Scheduling: Demo Interval Scheduling B C A E D F G 0 1 2 3 4 5 6 7 8 9 10 11 H Time B E G 0 1 2 3 4 5 6 7 8 9 10 11 8 13 / 27

Interval Scheduling: Demo Interval Scheduling B C A E D F G 0 1 2 3 4 5 6 7 8 9 10 11 H Time B E H 0 1 2 3 4 5 6 7 8 9 10 11 9 14 / 27

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 as tarefas no subconjunto Possíveis Critérios Tempo de Incio: ordenar tarefas num ordem ascendente s j Tempo de Fim: ordenar tarefas num ordem ascendente f j Duração Mais Curto: ordenar tarefas num ordem ascendente d j = (f j s j ) Minimizar Conflitos: ordenar tarefas de acordo com o numero de conflitos que cada tarefa tem. 15 / 27

Interval Scheduling: Contra Exemplos Algoritmo Greedy não é óptimo 20 Tempo do Inicio mais cedo 20Duração mais curta 20Numero de Conflitos 16 / 27

Interval Scheduling: Contra Exemplos Algoritmo Greedy não é óptimo Tempo do Inicio mais cedo 20Duração mais curta 20Numero de Conflitos 16 / 27

Interval Scheduling: Contra Exemplos Algoritmo Greedy não é óptimo Tempo do Inicio mais cedo Duração mais curta 20Numero de Conflitos 16 / 27

Interval Scheduling: Contra Exemplos Algoritmo Greedy não é óptimo Tempo do Inicio mais cedo Duração mais curta Numero de Conflitos 16 / 27

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 os existentes. Algoritmo Seja V um Vector de intervalos onde v i = (s i, f i ) Ordenando o vector temos f 1 f 2 f 3.. etc Code A for (j=1 to n) se (tarefa j seja compatível ) então A A (j) return A 17 / 27

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 os existentes. Algoritmo Seja V um Vector de intervalos onde v i = (s i, f i ) Ordenando o vector temos f 1 f 2 f 3.. etc Code A for (j=1 to n) se (tarefa j seja compatível ) então A A (j) return A 17 / 27

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 os existentes. Algoritmo Seja V um Vector de intervalos onde v i = (s i, f i ) Ordenando o vector temos f 1 f 2 f 3.. etc Code A for (j=1 to n) se (tarefa j seja compatível ) então A A (j) return A 17 / 27

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 s j 1 f (ultima inserida no A) 18 / 27

Teorema. O algoritmo Greedy é óptimo Prova 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 i 1, i 2,..., i k o conjunto de tarefas escolhidos pelo Greedy seja j 1, j 2,..., j k o conjunto de tarefas duma solução óptima seja r o valor máximo tal que i 1 = j 1, i 2 = j 2,..., i r = j r Contradiction Repare que na tarefa r + 1, na solução óptima j r+1 tem que acabar depois do Greedy Mas assim posso substituir esta tarefa pela tarefa escolhido pelo algoritmo Greedy (não está nenhum conflito) Mas se posso substituir então estou a violar a condição que o valor de r era máximo. QED. 19 / 27

Interval Partitioning Problem Definição Dado um conjunto de intervalos (s i, f i ) encontra um particionamento deste conjunto onde o numero de subconjuntos é um minimo e não há sobreposições de intervalos no conjunto. Aplicações atribuir processos/threads a um numero minimo de processadores encontrar o numero minimo de salas de aulas necessárias para um conjunto de aulas ou palestras numa conferencia. 20 / 27

Definição do Problema Salas de Aulas Dado um conjunto de aulas onde cada aula i começa a s i e tem fim no tempo f i Objectivo: Encontrar o numero minimo de salas necessárias para realizar todas estas aulas tal que não haja duas aulas na mesma sala no mesmo tempo. Exemplo Um particionamento de 12 aulas que necessita de 4 salas de aulas 21 / 27

Definição do Problema Salas de Aulas Dado um conjunto de aulas onde a aula i começa a s i e tem fim no tempo f i Objectivo: Encontrar o numero minimo de salas necessárias para realizar todas estas aulas tal que não haja duas aulas na mesma sala no mesmo tempo Exemplo Um particionamento de 12 aulas que necessita de 3 salas de aulas 22 / 27

Interval Partitioning: Minorante duma Solução Óptima Definição de Profundidade A profundidade dum conjunto de intervalos (abertos) é o numero 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 / 27

Interval Partitioning: Minorante duma Solução Óptima Definição de Profundidade A profundidade dum conjunto de intervalos (abertos) é o numero 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 / 27

Interval Partitioning: Algoritmo Greedy Algoritmo Ordenar os intervalos pelo tempo de inicio. Atribuir cada intervalo a primeira sala disponível. Se não há sala disponível adicione uma nova sala. Ordenar intervalos pelo tempo de inicio tal que s 1 s 2... s n d é o numero de salas necessárias d = 0 for (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 + 1 atribuir a aula j para a sala d +1 d = d + 1 } } Implementação. O(nlogn) Para cada sala mantêm o tempo do fim da última aula adicionada Guarde as salas de aulas numa fila de prioridade 24 / 27

Nota Análise do Algoritmo Nota que o Algoritmo Greedy nunca escalona duas aulas incompatíveis na mesma sala O algoritmo é óptimo Prova seja d o numero de salas do algoritmo Greedy a sala d foi usada porque foi necessário adicionar a aula (intervalo) j que era incompatível com as outras d-1 salas visto que as aulas foram ordenados por s j estas incompatibilidades são devido a aulas que começam mais cedo da aula j portanto existem d aulas sobrepostas no tempo s j + ɛ qualquer algoritmo usava >=d salas - portanto esta também dá uma solução óptima A solução é única? 25 / 27

O Caminho Mais Curto Definição do Problema Dado um grafo dirigido (ou não dirigido) G = (V, E) com arestas de 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 Dijkstra Criado pelo cientista da computação Edsger Dijkstra, soluciona o problema do caminho mais curto em tempo computacional O([m+n]log n) onde m é o número de arestas e n é o número de vértices 26 / 27

Código O algoritmo de Dijkstra O algoritmo considera um conjunto S de menores caminhos,os quais já foi determinado o caminho mais curto d(u) de I para u um vértice de S. O conjunto Q será o conjunto de vértices dos quais ainda não foi determinado o caminho mais curto 1 inicialmente S=I, Q=V-I, d(i)=0 e d(u)=infinito para u Q 2 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ó inicial passando por este vértice. Se esta distancia for inferior do que a distancia previamente indicado para este vértice (infinito no inicio) então actualize este valor de distancia 4 indique o vértice como visitado - adicionado este vértice ao S e tirando do Q 5 se Q for vazio então pare caso contrario voltar ao passo 2. 27 / 27

References Sides e Apontamentos.. http://www.cs.princeton.edu/ wayne/kleinberg-tardos/ Livro: Algorithm Design by Jon Kleinberg and Éva Tardos 28 / 27