Técnicas de Desenho de Algoritmos

Documentos relacionados
Técnicas de Desenho de Algoritmos

Técnicas de Desenho de Algoritmos

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

Divisão-e-Conquista ( ) CAL ( ) MIEIC/FEUP. ./rr (1) Técnicas de Concepção de Algoritmos

CAL ( ) - MIEIC/FEUP Programação Dinâmica ( )

Tecnicas Essencias Greedy e Dynamic

Complexidade de Algoritmos

Algoritmos e Estruturas de Dados II LEIC

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

04 Grafos: caminhos e coloração SCC0503 Algoritmos e Estruturas de Dados II

Backtracking( ) CAL ( ) MIEIC/FEUP. ./rr(1) Técnicas de Concepção de Algoritmos

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

HASHING HASHING 6/10/2008

Divisão e conquista. Há divisão quando o algoritmo tem pelo menos 2 chamadas recursivas no corpo

CAL ( ) MIEIC/FEUP Grafos: Introdução (Março, 2011)

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

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.

O Problema da 3- Coloração de Grafos

MA21: Resolução de Problemas - gabarito da primeira prova

Ciclos hamiltonianos e o problema do caixeiro viajante

Capítulo 2- Modelos de grafos.

Matemática Aplicada às Ciências Sociais- 11º ano (Versão: para o manual a partir de 2016/17)

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Teoria e Algoritmos em Grafos

Critérios de Divisibilidade

Algoritmos de aproximação para o problema de empacotamento em faixa

Divisão e conquista. Eficiência de divisão e conquista

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

x y Grafo Euleriano Figura 1

Estrutura de Dados e Algoritmos

Caminho mais curto. 1 - Caminho não pesado

Algoritmos de ordenação: Bucketsort, Radixsort e Seleção

ALGORITMOS DE ORDENAÇÃO

Algoritmos de Aproximação Segundo Semestre de 2012

Divisão e Conquista. Fernando Lobo. Algoritmos e Estrutura de Dados II. É uma técnica para resolver problemas (veremos outras técnicas mais adiante).

Algoritmos de ordenação: Inserção e Shellsort

Toward an Architecture-Independent Analysis of Parallel Algorithms

Ana Paula Rocha José Magalhães Cruz Rui Camacho. 26 de Fevereiro de 2009

CIC 111 Análise e Projeto de Algoritmos II

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

Algoritmos e Estruturas de Dados II

Abordagens para Resolução de Problemas

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

Estruturas de Dados. Grafos VIII: Árvores Geradoras Mínimas. Prof. Ricardo J. G. B. Campello

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

PCC104 - Projeto e Análise de Algoritmos

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Algoritmos 3/17/ Algoritmos como área de estudo e investigação

Nem todos os problemas algorítmicos que podem ser resolvidos em princípio podem ser resolvidos na prática: os recursos computacionais requeridos

Projeto e Análise de Algoritmos

Redes. ADSA António Câmara

Estrututas de Dados e Algoritmos. Estrutura de Dados e Algoritmos

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

5COP096 TeoriadaComputação

Projeto e Análise de Algoritmos

Exercícios Obrigatórios

Algoritmos e Estrutura de Dados. Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira

Programa Analítico de Disciplina INF333 Programação Competitiva

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

03 Grafos: percurso, ponderação e caminhos SCC0503 Algoritmos e Estruturas de Dados II

Técnicas de análise de algoritmos

ESTRUTURAS DE DADOS (LEI, LM, LEE) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018

Prova 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins

Árvores de Suporte de Custo Mínimo

Análise de complexidade

Otimização em Grafos

Otimização em Grafos

CAL - Concepção e Análise de Algoritmos

Indução Matemática. George Darmiton da Cunha Cavalcanti CIn - UFPE

Estrutura de Dados II

Optimização em Redes e Não Linear

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

Teorema Chinês dos Restos. Tópicos Adicionais

Complexidade de Algoritmos

Algoritmos e Estruturas de Dados

HASHING Hashing Motivação - Acesso Direto:

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

Teoria dos Grafos Aula 14

AED Algoritmos e Estruturas de Dados LEE /2004

Estruturas de Dados 2

Universidade Tecnológica Federal do Paraná

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

Análise e Projeto de Algoritmos

PERCURSOS. André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré

Técnicas de Concepção de Algoritmos: Branch and Bound

Executivo Cíclico. Executivo Cíclico Introdução. Sistemas de Tempo Real: Executivo Cíclico Exemplo. Executivo Cíclico Introdução

XXVII Olimpíada Brasileira de Matemática GABARITO Segunda Fase

Algoritmos de ordenação em forma paralela.

Estruturas Discretas

Complexidade de Algoritmos

Problemas de Fluxo em Redes

Uma forma de classificação

TEORIA: 60 LABORATÓRIO: 0

Árvore Geradora Mínima

MATEMÁTICA DISCRETA. Patrícia Ribeiro 2018/2019. Departamento de Matemática, ESTSetúbal 1 / 47

Análise de Algoritmos. Slides de Paulo Feofiloff

Algoritmos de Ordenação: MergeSort

Análise Amortizada de Complexidade

Transcrição:

Técnicas de Desenho de Algoritmos Mudança de ênfase: da implementação de algoritmos para o desenho de algoritmos A ver: 5 tipos de algoritmos abordagem ao problema exemplos complexidade em tempo e espaço Referências: Mark Allen Weiss. Data Structures & Algorithm Analysis in Java. Addison- Wesley, 1999. Robert Sedgewick. Algorithms in C++. Addison-Wesley, 1992. Steven S. Skiena. The Algorithm Design Manual. Springer 1998.

Algoritmos Gananciosos Exemplos Anteriores: Dijkstra, Prim, Kruskal Cada fase do algoritmo: decisão baseada no ganho imediato consequências futuras não consideradas Algoritmo atinge óptimos locais se é óptimo global, é solução se não, pode servir para obter aproximação Exemplo de problema que resolve bem: fazer trocos, minimizando número de notas e moedas estratégia: dar repetidamente a maior unidade possível Exemplo de problema que não resolve bem: caminho mais rápido usando estratégia da melhor aresta adjacente

Problema de escalonamento Dados: tarefas e tempos Objectivo: minimizar tempo médio de terminação Tempo médio: 25 Tarefa Tempo j1 j2 j3 j4 j 1 15 j 2 8 j 3 3 Tempo médio: 17.75 15 23 26 36 j 4 10 j3 j2 j4 j1 3 11 21 36

Escalonamento 2ª solução é óptima Porquê: tarefas mais curtas primeiro Tarefas: j i1, j i2,..., j in Terminações: ti1, ti1+ti2,... Custo total da solução: n n n (n - k +1) t = ik (n+1) t ik k t ik k = 1 k =1 k = 1 Se existe x>y tal que t ix < t iy : troca de j ix e j iy diminui custo

Escalonamento multiprocessador Exemplo com 3 processadores Tarefa Tempo j1 j2 j3 j4 j5 j6 j7 j8 j9 3 5 6 10 11 14 15 18 20 Total de tempos: 165 Tempo médio: 18.33 j1 j2 j3 j4 j5 j6 j7 3 5 6 13 16 20 28 34 40 j8 j9

Solução óptima não é única Para cada i, o i < n/p as tarefas j ip+1 a j (i+1)p são alocadas a processadores diferentes j1 j5 j9 j2 j4 j7 j3 j6 j8 3 5 6 14 15 20 30 34 38

Minimizar tempo de completação Tempo a minimizar é o da última tarefa a terminar j2 j5 j8 j6 j9 j1 j3 j4 j7 3 5 9 14 16 19 34 Este problema é variante do empacotamento, logo NP-completo!

Empacotamento Dados: n items, tamanhos s1, s2,..., sn (0 < si 1) Pretende-se: arrumá-los em caixas de capacidade 1, minimizando o nº de caixas Exemplo: items com tamanhos 0.2,, 0.4, 0.7, 0.1, 0.3, 0.8 0.8 0.2 0.3 0.7 0.1 0.4 C1 C2 C3 Esta é solução óptima: encontrá-la é problema NP-completo

Empacotamento on-line Será que pode encontrar a solução óptima? Sequência de entrada I1: m items de tamanho 1/2 - δ m items de tamanho 1/2 + δ 0 < δ < 0.01 Podem ser colocados em m caixas (solução óptima) Supondo Algoritmo óptimo A, encontra esta solução Que faz A se a sequência de entrada fôr I2: m items de tamanho 1/2 - δ I2 pode ser colocada em [m/2] caixas; mas A deve colocá-lo em m caixas, para dar a solução óptima a I1 Então A não obtém a solução óptima para I2

Limites para o empacotamento on-line Teorema: Há sequências de entrada que forçam um algoritmo de empacotamento on-line a usar pelo menos 4/3 do número óptimo de caixas Prova: m é par, Algoritmo A corre sobre I1 Depois de processar o m-ésimo item, A usou C caixas O nº óptimo neste ponto é m/2, então 2C/m < 4/3, ou seja C/m < 2/3 Depois de processar todos os items, todas as caixas após a número C contêm apenas 1 item; as C caixas iniciais: máximo 2 items restantes: máximo 1 item 2m items requerem mínimo de 2m-C caixas, o óptimo usa m Então deverá ser 2m-C)/m < 4/3, ou seja C/m > 2/3

Cada item é colocado: Estratégia next fit Na mesma caixa do anterior, se couber Se não, em nova caixa Simples, e tempo linear No exemplo: 0.1 0.7 0.8 0.2 0.4 0.3

Teorema: Limites Seja m o número óptimo de caixas para uma lista I de items. A estratégia next fit nunca usa mais que 2m caixas. Há sequências que requerem 2m-2 caixas. Prova: Para duas caixas adjacentes Cj e Cj+1: a soma dos tamanhos dos items é maior que 1, senão eles teriam sido colocados em apenas 1 caixa; então no máximo metade do espaço é desperdiçado. Limite é apertado: n items, tamanho para os de ordem ímpar e 2/n para os de ordem par n divisível por 4 Empacotamento óptimo: n/4 caixas com 2 elementos de cada, 1 caixa para restantes Total n/4 +1 caixas

Solução next fit Exemplo desfavorável 2/n 2/n... 2/n C1 C2 Cn/2 Solução óptima 2/n 2/n 2/n...... 2/n C1 C2 Cn/4 Cn/4+1

Cada item é colocado: Estratégia first fit Na primeira caixa com espaço para ele, procurando por ordem, se existir Se não, em nova caixa Com pesquisa eficiente, pode correr em O(n log n) No exemplo: 0.1 0.2 0.3 0.7 0.8 0.4

Eficiência de first fit Em cada momento: no máximo 1 caixa está mais de 1/2 vazia; solução tem no máximo o dobro do óptimo Teorema: Seja m o número óptimo de caixas para uma lista I de items. A estratégia first fit nunca usa mais que 17/10 m caixas. Há sequências que obrigam a usar 17/10 (m-1) Exemplo: sequência é 6m items de tamanho 1/7 + δ 6m items de tamanho 1/3 + δ 6m items de tamanho 1/2 + δ Óptimo usa 6m caixas mas first fit precisa de 10m caixas.

Exemplo desfavorável 1/7 + δ 1/7 + δ 1/7 + δ 1/7 + δ 1/7 + δ 1/7 + δ 1/3 + δ 1/3 + δ 1/2 + δ C1 a Cm Cm+1 a C4m C4m+1 a C10m Resultados médios: com número grande de items com tamanhos uniformemente distribuídos entre 0 e 1 usa número de caixas superior em 2% ao óptimo

Cada item é colocado: Estratégia best fit No lugar livre com tamanho mais próximo do seu, se existir Se não, em nova caixa Nunca pior que 1.7 vezes o óptimo, mas próximo disto nos piores casos No exemplo: 0.1 0.3 0.2 0.4 0.7 0.8

Algoritmos off line Podem encontrar óptimo: no limite por busca exaustiva Problema nos on line : os items grandes Como fazer: ordenar os items e depois aplicar first fit ou best fit resulta first fit decreasing ou best fit decreasing Eficiência: sendo empacotamento óptimo com m caixas: first fit decreasing e best fit decreasing não usam mais de 11/9 m +4 podem ter de usar 11/9 m