Geometria Computacional p.1/14. Geometria Computacional p.1/14

Documentos relacionados
Análise de Algoritmos

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

Melhores momentos AULA 3. Algoritmos p.148/188

Análise e Complexidade de Algoritmos

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)

Solução de Recorrências

ANÁLISE DE ALGORITMOS

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira

Análise de Algoritmos

Geometria Computacional

Divisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder

Análise de Algoritmos

AULA 13. Algoritmos p.526/582

Análise de algoritmos

BCC202 - Estrutura de Dados I

Análise de Algoritmos

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

Projeto e Análise de Algoritmos

AULA 24. Algoritmos p.856/905

Geometria Computacional

Fundamentos de programação

ALGORITMOS DE ORDENAÇÃO

Algoritmos de ordenação Quicksort

AULA 17. Algoritmos p.662/695

Análise de Complexidade para algoritmos iterativos e recursivos

Algoritimos e Estruturas de Dados III CIC210

Algoritmos de Ordenação. Profº Carlos Alberto T. Batista

Programação dinâmica

Projeto e Análise de Algoritmos

Análise de Algoritmos

Aula 05: - Recursão (parte 1)

Primitivas Geométricas

Aula 05: - Recursão (parte 1)

Divisão e Conquista: Par de Pontos mais Próximo

Ordenação: MergeSort. Prof. Túlio Toffolo BCC202 Aula 14 Algoritmos e Estruturas de Dados I

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - II

AED2 - Aula 11 Problema da separação e quicksort

Algoritmos de Ordenação

Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )

AULA 19 AULA 20. Ordenação: algoritmo Quicksort. Resumo. Melhores momentos

Paradigmas de Projetos de Algoritmos

Análise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo (

ALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula 3

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

UNIVERSIDADE DA BEIRA INTERIOR

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

Teoria da Computação Aula 9 Noções de Complexidade

Aula 19: Métodos eficientes de ordenação

3.6 Erro de truncamento da interp. polinomial.

Computers do not solve problems, People do! E.R.Davidson

Técnicas de Projeto de Algoritmos

Programação dinâmica. CLRS cap 15. = recursão com tabela = transformação inteligente de recursão em iteração

Algoritmos de Ordenação

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick F. M.

Análise de Algoritmos

Melhores momentos AULA 24. Algoritmos p.906/953

AULA 15. Algoritmos p.600/637

Complexidade de Algoritmos

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

Comparando, Distribuindo e Ordenando

Melhores momentos AULA PASSADA. Otimização Combinatória p. 781

Processamento Cosequencial: Ordenação Interna e Externa. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira Cristina D. A.

Análise de Algoritmos

Paradigmas de programação

Multiplicação de inteiros

BC1424 Algoritmos e Estruturas de Dados I Aula 03: Recursão / Recursividade

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.

Algoritmos de Ordenação: MergeSort

Complexidade computacional

Tópico 5 Algoritmos de Ordenação. Parte I - métodos de ordenação: inserção, mergesort, heapsort e quicksort.

Algoritmos de ordenação Ordenação rápida ( Quicksort )

Algoritmos geométricos

Complexidade de Algoritmos. Edson Prestes

Algoritmos de Ordenação

ALGORITMOS DE ORDENAÇÃO RECURSIVOS

Geometria Computacional

Análise e Projeto de Algoritmos

Abordagens para Resolução de Problemas

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Algoritmos e Estrutura de Dados. Aula 04 Recorrência Prof. Tiago A. E. Ferreira

Lista de Exercícios sobre Recursividade

Professor: Anselmo Montenegro Conteúdo (aula 6): - Fecho Convexo 2D. Instituto de Computação - UFF

Melhores momentos AULA 2. Otimização Combinatória p. 71

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia. 23 de Março de 2018

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos divisão. divisão. combina. combina. Jorge Figueiredo, DSC/UFCG

5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006)

Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência

Projeto e Análise de Algoritmos Aula 1: Panorama (0.1,0.2)

Métodos de ordenação. Bubble sort:

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: Claudio Quick F. M.

AULA 17. Melhores momentos. Segmento de soma máxima. Segmento de soma máxima. Conclusões. Algumas técnicas

Análise de algoritmos

Projeto e Análise de Algoritmos

ORDENAÇÃO EXTERNA DE ARQUIVOS: GERAÇÃO DE PARTIÇÕES CLASSIFICADAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

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

Métodos de Ordenação Parte 4

Universidade Federal de Alfenas

Transcrição:

Entrada: (4, 5), (3, 1), (2, 3), (0, 2), (5, 4), (5, 2), (1, 5), (2, 4), (4, 0), (0, 0) 5 4 3 2 1 0 1 2 3 4 5 Entrada: (4, 5), (3, 1), (2, 3), (0, 2), (5, 4), (5, 2), (1, 5), (2, 4), (4, 0), (0, 0) Primeira solução: algoritmo quadrático, que testa todos os pares de pontos. 5 4 3 2 1 0 1 2 3 4 5 Saída: (2, 3) e (2, 4), que estão a distância 1. Geometria Computacional p.2/14 Primeira solução: algoritmo quadrático, que testa todos os pares de pontos. Problema: Dados n pontos numa reta, determinar dois deles Primeira solução: ordene os pontos, e encontre os dois consecutivos mais próximos. Tempo consumido: O(n lg n). Vamos considerar o problema na reta. Geometria Computacional p.2/14 Geometria Computacional p.3/14

Problema: Dados n pontos numa reta, determinar dois deles Primeira solução: ordene os pontos, e encontre os dois consecutivos mais próximos. Tempo consumido: O(n lg n). Solução melhor: use divisão e conquista! Geometria Computacional p.3/14 Conquista: resolver o problema nas instâncias menores recursivamente (ou diretamente, se elas forem pequenas o suficiente). Conquista: resolver o problema nas instâncias menores recursivamente (ou diretamente, se elas forem pequenas o suficiente). Combinação: combinar as soluções das instâncias menores para gerar uma solução da instância original.

PAR+PROX (x, n) 1 se n = 1 então devolva 2 m n/2 3 x e [1..m] x[1..m] 4 x d [1..n m] x[m + 1..n] 5 δ e PAR+PROX (x e,m) 6 δ d PAR+PROX (x d,n m) 7 δ min{δ e,δ d,x[m + 1] x[m]} 8 devolva δ PAR+PROX (x, n) 1 se n = 1 então devolva 2 m n/2 3 x e [1..m] x[1..m] 4 x d [1..n m] x[m + 1..n] 5 δ e PAR+PROX (x e,m) 6 δ d PAR+PROX (x d,n m) 7 δ min{δ e,δ d,x[m + 1] x[m]} 8 devolva δ Tempo consumido: O(n lg n) pelo pré-processamento Tempo consumido: e O(n) pelo PAR+PROX. Par mais próximo no plano Par mais próximo no plano Como generalizar essa idéia para o plano? Como generalizar essa idéia para o plano? Discussão... Geometria Computacional p.6/14 Geometria Computacional p.6/14 PAR+PROX (x, y, n) 1 para i 1 até n faça 2 p x[i] i 3 p y[i] i 4 MERGE-SORT(p x, n, x) ordenação indireta 5 MERGE-SORT(p y, n, y) ordenação indireta 6 devolva PAR+PROX-REC(x, y, p x, p y, n) PAR+PROX (x, y, n) 1 para i 1 até n faça 2 p x[i] i 3 p y[i] i 4 MERGE-SORT(p x, n, x) ordenação indireta 5 MERGE-SORT(p y, n, y) ordenação indireta 6 devolva PAR+PROX-REC(x, y, p x, p y, n) PAR+PROX-REC (x, y, p x, p y, n) 1 se n 3 2 então resolva o problema diretamente 3 senão (p e x, p e y, n e, p d x, p d y, n d ) DIVIDE(x, y, p x, p y, n) 4 (i e, j e ) PAR+PROX-REC (x, y, p e x, p e y, n e ) 5 (i d, j d ) PAR+PROX-REC (x, y, p d x, p d y, n d ) 6 devolva COMBINA (x, y, i e, j e, i d, j d, p x, p y, n) Geometria Computacional p.7/14 Geometria Computacional p.7/14

DIVIDE (x, y, p x, p y, n) 1 n e n/2 2 n d n n e 3 p e x[1.. n e ] p x[1.. n e ] 4 p d x[1.. n d ] p x[n e + 1.. n] 5 x c x[p x[n e ]] 6 i 0 7 j 0 8 para k 1 até n faça 9 se x[p y[k]] x c 10 então i i + 1 11 p e y[i] p y[k] 12 senão j j + 1 13 p d y[j] p y[k] 14 devolva (p e x, p e y, n e, p d x, p d y, n d ) Geometria Computacional p.8/14 COMBINA (x, y, i e, j e, i d, j d, p x, p y, n) 1 δ min{dist(x, y, i e, j e ), DIST(x, y, i d, j d )} 2 x c x[p x[ n/2 ]] 3 m δ t 0 4 para k 1 até n faça 5 se x[p y[k]] x c δ 6 então t t + 1 f y[t] p y[k] 7 para i 1 até t 1 faça 8 para j i + 1 até min{i + 7, t} faça 9 d DIST(x, y, f y[i], f y[j]) 10 se d < m 11 então m d 12 p 1 f y[i] p 2 f y[j] 13 se m = δ 14 então devolva argmin{dist(x, y, i e, j e ), DIST(x, y, i d, j d )} 15 senão devolva (p 1, p 2) Geometria Computacional p.9/14 Quanto tempo consome o DIVIDE em função de n? linha 1-2 O(1) 3-4 O(n) 5-7 O(1) 8-9 O(n) 10 13 O(n) 14 O(1) total consumo de todas as execuções da linha O(3n + 3) = O(n) Quanto tempo consome o COMBINA em função de n? linha consumo de todas as execuções da linha 1-3 O(1) 4-6 O(n) 7 O(n) 8 12 O(n) 7 O(n) = O(n) 13 15 O(1) total O(3n + 2) = O(n) Geometria Computacional p.10/14 Geometria Computacional p.11/14

Essa é a mesma recorrência que a do MERGE-SORT, e portanto temos que T(n) = O(n lg n). Essa é a mesma recorrência que a do MERGE-SORT, e portanto temos que T(n) = O(n lg n). Disso é fácil concluir que o consumo de tempo do PAR+PROX também é O(n lg n). Versão um pouco diferente Versão alternativa do Combina O algoritmo COMBINA pode ser escrito de maneira um pouco diferente. Na versão apresentada a seguir, o ajustamos para devolver apenas a distância mínima, e não um par de pontos a distância mínima. Naturalmente o algoritmo PAR+PROX-REC tem que ser ajustado de acordo, mas omitimos isso aqui. COMBINA (x, y, δ e, δ d, p x, p y, n) 1 δ min{δ e, δ d } 2 x c x[p x[ n/2 ]] 3 m δ t 0 4 para k 1 até n faça 5 se x[p y[k]] x c δ 6 então t t + 1 f y[t] p y[k] 7 para i 1 até t 1 faça 8 j i + 1 9 enquanto j t e y[f y[j]] y[f y[i]] < δ faça 10 se DIST(x, y, f y[i], f y[j]) < m 11 então m d 12 j j + 1 13 devolva m Geometria Computacional p.13/14 Geometria Computacional p.14/14