Coloração de intervalos

Documentos relacionados
Alguns comentários. Segunda prova. Programação dinâmica em grafos. Guloso em grafos. Algoritmos p. 1

Algoritmos gulosos (greedy)

Algoritmos gulosos (greedy) CLRS

Problema de escalonamento

Algoritmos gulosos (greedy) CLRS Cap 16 e KT Cap 4

Algoritmos gulosos (greedy)

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

Aula 2. Divisão e conquista. Exemplo 1: Número de inversões de uma permutação (problema 2-4 do CLRS; veja também sec 5.4 do KT)

Teoria dos Grafos Aula 14

Análise de Algoritmos

AULA 17. Algoritmos p.662/695

MA21: Resolução de Problemas - segunda prova - gabarito. Problema 1 (Olimpíada turca de 1996; 2 pontos) Considere o polinomio:

Exercícios: Alg Gulosos. Eduardo Laber

Análise de Algoritmos

Melhores momentos AULA 24. Algoritmos p.906/953

Programação dinâmica

Melhores momentos AULA 3. Algoritmos p.148/188

Análise de Algoritmos

Algoritmos de aproximação - Problema da Mochila

Escalonamento em uma máquina

AULA 15. Algoritmos p.600/637

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016

MAC5770 Exercícios preliminares

Melhores momentos AULA 1. Algoritmos p.38/86

Melhores momentos AULA 22. Algoritmos p.824/855

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias:

RESOLUÇÃO DCC-UFRJ MATEMÁTICA COMBINATÓRIA 2006/2 PROVA Considere a soma. S n = n 2 n 1

AULA 21. Algoritmos p.760/792

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

MATRIZES - PARTE Mais exemplos Multiplicação de duas matrizes AULA 26

Problema do Caminho Mínimo

Geometria Computacional

Mediana. Aula 09. Menor. i-ésimo menor elemento. Algoritmo de Seleção. -ésimo menor elemento. Mediana é o n+1. -ésimo menor ou o n+1

Gabriel Coutinho DCC035 - Pesquisa Operacional Lista 6

Análise de Algoritmos

Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort

MAC0320 Exercícios preliminares

Mochila. Dados dois vetores x[1..n] e w[1..n], denotamos por x w o produto escalar

Algoritmos Gulosos. Norton T. Roman

Modelagem com relações de recorrência. Exemplo: Determinada população dobra a cada ano; população inicial = 5 a n = população depois de n anos

Complexidade computacional

Algoritmos de Aproximação Segundo Semestre de 2012

Mochila. Dados dois vetores x[1..n] e w[1..n], denotamos por x w o produto escalar

Aulas 6 / 05 de setembro

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

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

AULA 13. Algoritmos p.526/582

ANÁLISE DE ALGORITMOS

Álgebra Linear Semana 04

LISTA DE EXERCÍCIOS. Humberto José Bortolossi

Projeto e Análise de Algoritmos

Combinando inequações lineares

Redução polinomial. Permite comparar o grau de complexidade de problemas diferentes.

Matemática computacional: métodos numéricos, programação linear, otimização

Busca Heurística - Informada

ORDENAÇÃO POR INTERCALAÇÃO

Algoritmos de ordenação Quicksort

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada

Bucketsort. CLRS sec 8.4. Algoritmos p. 1

OLIMPÍADA DE MATEMÁTICA DO ESTADO DO RIO GRANDE DO NORTE LISTA SEMANAL N o 10 - Data 04/04/2016

Pesquisa Operacional / Programação Matemática

Universidade Federal do ABC Centro de Matemática, Computação e Cognição Análise na Reta (2017) Curso de Verão

Continuidade de processos gaussianos

ANÁLISE DE ALGORITMOS

15 - Coloração Considere cada um dos grafos abaixo:

Análise de Algoritmos. Slides de Paulo Feofiloff

Buscas Informadas ou Heurísticas - Parte I

Controle Ótimo - Aula 2 (Exemplos 2, 3 e 4)

CI811 Tópicos em Algoritmos

Lista de exercícios sobre contagem de operações Prof. João B. Oliveira

Algoritmos Combinatórios: Introdução

Classes, Herança e Interfaces

Conjuntos disjuntos dinâmicos

Programação Estruturada

Lista de Exercícios 07 Introdução à Ciência de Computação II (SCC0201/501)

2. A figura a seguir ilustra várias relações binárias em Quais são funções? Dentre as que são funções, quais as sobrejetivas? E quais as injetivas?

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

Toward an Architecture-Independent Analysis of Parallel Algorithms

Lista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b.

Recursão. Aula 1. Liana Duenha. Faculdade de Computação Universidade Federal de Mato Grosso do Sul

TEORIA DE COMPLEXIDADE

Algoritmos de aproximação - Problema de cobertura por conjuntos

Algoritmo Aproximação. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

Algoritmos de Aproximação Segundo Semestre de 2012

Combinando inequações lineares

AULA 24. Algoritmos p.856/905

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

Algoritmos Estrutura Condicional

Técnicas de projeto de algoritmos: Indução

Teoria dos Grafos. Coloração de Vértices

Ordenação em tempo linear

UNIVERSIDADE FEDERAL DO ABC

Estruturas de Dados para Conjuntos Disjuntos: Union-find Letícia Rodrigues Bueno

CAL ( ) MIEIC/FEUP Técnicas de Concepção de Algoritmos, CAL MIEIC/FEUP, Fev. de Técnicas de Concepção de Algoritmos. .

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010

Algoritmos e Programação I

Estruturas de Repetição

ESTRUTURAS DE REPETIÇÃO - PARTE 2

Aula 8: Complemento a Um e Complemento a Dois

Transcrição:

Coloração de intervalos Problema: Dados intervalos de tempo [s 1,f 1 ),...,[s n,f n ), encontrar uma coloração dos intervalos com o menor número possível de cores em que dois intervalos de mesma cor sempre sejam disjuntos. Solução: uma partição de {1,...,n} em coleções de intervalos dois a dois disjuntos. Algoritmos p. 1

Motivação Queremos distribuir um conjunto de atividades no menor número possivel de salas. Cada atividade a i ocupa um certo intervalo de tempo [s i,f i ) e duas atividades podem ser programadas para a mesma sala somente se os correspondentes intervalos são disjuntos. Cada sala corresponde a uma cor. Queremos usar o menor número possível de cores para pintar todos os intervalos. Algoritmos p. 2

Estratégias gulosas: Coloração de intervalos Encontre uma coleção disjunta máxima de intervalos, pinte com a próxima cor disponível e repita a idéia para os intervalos restantes. Ordene as atividades de maneira que f[1] f[2] f[n] e pinte uma a uma nesta ordem sempre usando a menor cor possível para aquela atividade. Ordene as atividades de maneira que s[1] s[2] s[n] e pinte uma a uma nesta ordem sempre usando a menor cor possível para aquela atividade. Quais destas estratégias funcionam? Quais não funcionam? Algoritmos p. 3

Estratégia 1 Encontre uma coleção disjunta máxima de intervalos, pinte com a próxima cor disponível e repita a idéia para os intervalos restantes. Algoritmos p. 4

Estratégia 1 Encontre uma coleção disjunta máxima de intervalos, pinte com a próxima cor disponível e repita a idéia para os intervalos restantes. Não funciona... Algoritmos p. 4

Estratégia 1 Encontre uma coleção disjunta máxima de intervalos, pinte com a próxima cor disponível e repita a idéia para os intervalos restantes. Não funciona... Exemplo: Guloso Algoritmos p. 4

Estratégia 1 Encontre uma coleção disjunta máxima de intervalos, pinte com a próxima cor disponível e repita a idéia para os intervalos restantes. Não funciona... Exemplo: Guloso Ótimo Algoritmos p. 4

Estratégia 2 Ordene as atividades de maneira que f[1] f[2] f[n] e pinte uma a uma nesta ordem sempre usando a menor cor possível para aquela atividade. Algoritmos p. 5

Estratégia 2 Ordene as atividades de maneira que f[1] f[2] f[n] e pinte uma a uma nesta ordem sempre usando a menor cor possível para aquela atividade. Não funciona de novo... Algoritmos p. 5

Estratégia 2 Ordene as atividades de maneira que f[1] f[2] f[n] e pinte uma a uma nesta ordem sempre usando a menor cor possível para aquela atividade. Não funciona de novo... Mesmo exemplo: Guloso Ótimo Algoritmos p. 5

Estratégia 3 Ordene as atividades de maneira que s[1] s[2] s[n] e pinte uma a uma nesta ordem sempre usando a menor cor possível para aquela atividade. Algoritmos p. 6

Estratégia 3 Ordene as atividades de maneira que s[1] s[2] s[n] e pinte uma a uma nesta ordem sempre usando a menor cor possível para aquela atividade. Pelo menos funciona para o exemplo... Ótimo Algoritmos p. 6

Estratégia 3 Ordene as atividades de maneira que s[1] s[2] s[n] e pinte uma a uma nesta ordem sempre usando a menor cor possível para aquela atividade. Pelo menos funciona para o exemplo... Ótimo De fato, funciona sempre! A seguir, apresentamos o algoritmo guloso obtido. No algoritmo, para uma cor j, o número l[j] indica o final da última tarefa que foi colorida com a cor j. Algoritmos p. 6

Algoritmo guloso Devolve coloração dos intervalos com menor número de cores. COLORAÇÃO-INTERVALOS (s, f, n) 0 ordene s e f de tal forma que s[1] s[2] s[n] 1 k 0 2 para i 1 até n faça 3 j 1 4 enquanto j k e l[j] > s[i] faça j j + 1 5 se j > k 6 então k k + 1 7 D[k] {i} 8 l[k] f[i] 9 senão D[j] D[j] {i} 10 l[j] f[i] 11 devolva D[1],...,D[k] Algoritmos p. 7

Consumo de tempo Observe que o algoritmo consome tempo O(n 2 ). Como observado na aula, é possível obter um certificado de que o algoritmo apresentado utiliza o menor número de cores. Exercício: Modifique o algoritmo para que ele devolva um certificado de que sua coloração usa um número mínimo de cores. Algoritmos p. 8

Demonstração Seja B[1],...,B[k ] uma solução ótima que coincide com a solução gulosa D[1],...,D[k] quando restrita aos intervalos em {1,...,i 1}, com i o maior possível. Se i = n + 1, então não há nada a provar. Senão, seja j tal que i D[j] e j tal que i B[j ]. Seja X o conjunto B[j] {i,...,n} e Seja Y o conjunto B[j ] {i,...,n}. Seja B a partição de {1,...,n} tal que B [t] = B[t] se t j e t j B [j] = B[j] \ X Y B [j ] = B[j ] \ Y X B é uma solução ótima que contraria a escolha de B. Algoritmos p. 9

Problema de escalonamento Considere n tarefas indicadas pelos números 1,...,n Algoritmos p. 10

Problema de escalonamento Considere n tarefas indicadas pelos números 1,...,n t i : duração da tarefa i d i : prazo de entrega da tarefa i Algoritmos p. 10

Problema de escalonamento Considere n tarefas indicadas pelos números 1,...,n t i : duração da tarefa i d i : prazo de entrega da tarefa i Escalonamento: permutação de 1 a n Para um escalonamento π, o tempo de início da tarefa i é s i = π(i) 1 j=1 t π 1 (j) (soma da duração das tarefas anteriores a i). Algoritmos p. 10

Problema de escalonamento Considere n tarefas indicadas pelos números 1,...,n t i : duração da tarefa i d i : prazo de entrega da tarefa i Escalonamento: permutação de 1 a n Para um escalonamento π, o tempo de início da tarefa i é s i = π(i) 1 j=1 t π 1 (j) (soma da duração das tarefas anteriores a i). O tempo de término da tarefa i é f i = s i + t i. Algoritmos p. 10

Problema de escalonamento Para um escalonamento π, o tempo de início da tarefa i é soma da duração das tarefas anteriores a i. O tempo de término da tarefa i é f i = s i + t i. Algoritmos p. 11

Problema de escalonamento Para um escalonamento π, o tempo de início da tarefa i é soma da duração das tarefas anteriores a i. O tempo de término da tarefa i é f i = s i + t i. O atraso da tarefa i é o número { 0 se f i d i l i = f i d i se f i > d i. Algoritmos p. 11

Problema de escalonamento Para um escalonamento π, o tempo de início da tarefa i é soma da duração das tarefas anteriores a i. O tempo de término da tarefa i é f i = s i + t i. O atraso da tarefa i é o número { 0 se f i d i l i = f i d i se f i > d i. Problema: Dados t 1,...,t n e d 1,...,d n, encontrar um escalonamento com o menor atraso máximo. Ou seja, que minimize L = max i l i. Algoritmos p. 11

Estratégias gulosas escalonar primeiro as tarefas mais curtas (ignoro o prazo de entrega) Algoritmos p. 12

Estratégias gulosas escalonar primeiro as tarefas mais curtas (ignoro o prazo de entrega) Não funciona... Exemplo: t 1 = 1, d 1 = 10, t 2 = 8, d 2 = 8 Guloso: 1, 2, L = 1 Solução: 2, 1, L = 0 Algoritmos p. 12

Estratégias gulosas escalonar primeiro as tarefas mais curtas (ignoro o prazo de entrega) Não funciona... Exemplo: t 1 = 1, d 1 = 10, t 2 = 8, d 2 = 8 Guloso: 1, 2, L = 1 Solução: 2, 1, L = 0 escalonar primeiro as tarefas com menos d i t i (tarefas com menor folga) Algoritmos p. 13

Estratégias gulosas escalonar primeiro as tarefas mais curtas (ignoro o prazo de entrega) Não funciona... Exemplo: t 1 = 1, d 1 = 10, t 2 = 8, d 2 = 8 Guloso: 1, 2, L = 1 Solução: 2, 1, L = 0 escalonar primeiro as tarefas com menos d i t i (tarefas com menor folga) Não funciona... Exemplo: t 1 = 1, d 1 = 2, t 2 = 10, d 2 = 10 Guloso: 2, 1, L = 9 Solução: 1, 2, L = 1 Algoritmos p. 13

Estratégias gulosas escalonar primeiro as tarefas mais curtas (ignoro o prazo de entrega) Não funciona... Exemplo: t 1 = 1, d 1 = 10, t 2 = 8, d 2 = 8 Guloso: 1, 2, L = 1 Solução: 2, 1, L = 0 escalonar primeiro as tarefas com menos d i t i (tarefas com menor folga) Não funciona... Exemplo: t 1 = 1, d 1 = 2, t 2 = 10, d 2 = 10 Guloso: 2, 1, L = 9 Solução: 1, 2, L = 1 escalonar primeiro as tarefas com menor prazo (ignoro a duração) Algoritmos p. 13

Algoritmo guloso Devolve escalonamento com atraso máximo mínimo. ESCALONAMETO (t, d, n) 1 seja π a permutação de 1 a n tal que 2 devolva π d[π[1]] d[π[2]] d[π[n]] Algoritmos p. 14

Algoritmo guloso Devolve escalonamento com atraso máximo mínimo. ESCALONAMETO (t, d, n) 1 seja π a permutação de 1 a n tal que 2 devolva π d[π[1]] d[π[2]] d[π[n]] Consumo de tempo: O(n lg n). Algoritmos p. 14

Algoritmo guloso Devolve escalonamento com atraso máximo mínimo. ESCALONAMETO (t, d, n) 1 seja π a permutação de 1 a n tal que 2 devolva π d[π[1]] d[π[2]] d[π[n]] Consumo de tempo: O(n lg n). Na aula, vimos a prova de que este algoritmo está correto (devolve um escalonamento com atraso máximo mínimo). Algoritmos p. 14

Ingredientes da prova Uma inversão em um escalonamento π é um par (i,j) tal que i < j e d[π[i]] > d[π[j]]. Algoritmos p. 15

Ingredientes da prova Uma inversão em um escalonamento π é um par (i,j) tal que i < j e d[π[i]] > d[π[j]]. Mostre que dois escalonamentos que não têm inversões têm o mesmo atraso máximo. Algoritmos p. 15

Ingredientes da prova Uma inversão em um escalonamento π é um par (i,j) tal que i < j e d[π[i]] > d[π[j]]. Mostre que dois escalonamentos que não têm inversões têm o mesmo atraso máximo. Mostre que se um escalonamento ótimo tem uma inversão, então ele tem uma inversão do tipo (i,i + 1). Algoritmos p. 15

Ingredientes da prova Uma inversão em um escalonamento π é um par (i,j) tal que i < j e d[π[i]] > d[π[j]]. Mostre que dois escalonamentos que não têm inversões têm o mesmo atraso máximo. Mostre que se um escalonamento ótimo tem uma inversão, então ele tem uma inversão do tipo (i,i + 1). Mostre então que, se trocarmos π[i] e π[i + 1], obteremos um escalomento com atraso máximo não superior ao atraso máximo de π. Algoritmos p. 15

Exercícios Exercício 22.A [CLRS 16.1-1] Escreva um algoritmo de programação dinâmica para resolver o problema dos intervalos disjuntos. (Versão simplificadda do exercício: basta determinar o tamanho de uma coleção disjunta máxima.) Qual o consumo de tempo do seu algoritmo? Exercício 22.B Prove que o algoritmo guloso para o problema dos intervalos disjuntos está correto. (Ou seja, prove a propriedade da subestrutura ótima e a propriedade da escolha gulosa.) Exercício 22.C [CLRS 16.1-2] Mostre que a seguinte idéia também produz um algoritmo guloso correto para o problema da coleção disjunta máxima de intervalos: dentre os intervalos disjuntos dos já escolhidos, escolha um que tenha instante de início máximo. (Em outras palavras, suponha que os intervalos estão em ordem decrescente de início.) Exercício 22.D [CLRS 16.1-4] Nem todo algoritmo guloso resolve o problema da coleção disjunta máxima de intervalos. Mostre que nenhuma das três idéias a seguir resolve o problema. Idéia 1: Escolha o intervalo de menor duração dentre os que são disjuntos dos intervalos já escolhidos. Idéia 2: Escolha um intervalo seja disjunto dos já escolhidos e intercepte o menor número possível de intervalos ainda não escolhidos. Idéia 3: Escolha o intervalo disjunto dos já selecionados que tenha o menor instante de início. Algoritmos p. 16

Mais exercícios Exercício 22.F [Pares de livros] Suponha dado um conjunto de livros numerados de 1 a n. Suponha que o livro i tem peso p[i] e que 0 < p[i] < 1 para cada i. Problema: acondicionar os livros no menor número possível de envelopes de modo que cada envelope tenha no máximo 2 livros e o peso do conteúdo de cada envelope seja no máximo 1. Escreva um algoritmo guloso que calcule o número mínimo de envelopes. O consumo de tempo do seu algoritmo deve ser O(nlg n). Mostre que seu algoritmo está correto (ou seja, prove a greedy-choice property e a optimal substructure apropriadas). Estime o consumo de tempo do seu algoritmo. Exercício 22.G [Bin-packing] São dados objetos 1,..., n e um número ilimitado de latas. Cada objeto i tem peso w i e cada lata tem capacidade 1: a soma dos pesos dos objetos colocados em uma lata não pode passar de 1. Problema: Distribuir os objetos pelo menor número possível de latas. Programe e teste as seguinte heurísticas. Heurística 1: examine os objetos na ordem dada; tente colocar cada objeto em uma lata já parcialmente ocupada que tiver mais espaço livre sobrando; se isso for impossível, pegue uma nova lata. Heurística 2: rearranje os objetos em ordem decrescente de peso; em seguida, aplique a heurística 1. Essas herísticas resolvem o problema? Compare com o exercício 22.F. Para testar seu programa, sugiro escrever uma rotina que receba n 100000 e u 1 e gere w 1,..., w n aleatoriamente, todos no intervalo (0, u). Algoritmos p. 17

Mais exercícios ainda Exercício 22.H [parte de CLRS 16-4, modificado] Seja 1,..., n um conjunto de tarefas. Cada tarefa consome um dia de trabalho; durante um dia de trabalho somente uma das tarefas pode ser executada. Os dias de trabalho são numerados de 1 a n. A cada tarefa t está associado um prazo p t : a tarefa deveria ser executada em algum dia do intervalo 1.. p t. A cada tarefa t está associada uma multa não-negativa m t. Se uma dada tarefa t é executada depois do prazo p t, sou obrigado a pagar a multa m t (mas a multa não depende do número de dias de atraso). Problema: Programar as tarefas (ou seja, estabelecer uma bijeção entre as tarefas e os dias de trabalho) de modo a minimizar a multa total. Escreva um algoritmo guloso para resolver o problema. Prove que seu algoritmo está correto (ou seja, prove a greedy-choice property e a optimal substructure apropriadas). Analise o consumo de tempo. Algoritmos p. 18