Algoritimos e Estruturas de Dados III CIC210

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

Análise e Complexidade de Algoritmos

BCC202 - Estrutura de Dados I

Estruturas de Dados 2

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

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

Algoritmos de Ordenação

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

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

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

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

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

Análise de algoritmos

Algoritmos de ordenação Quicksort

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

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

Introdução Paradigmas

Algoritmos de Ordenação: QuickSort

Sistemas de Computação

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

Projeto e Análise de Algoritmos

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

Projeto e Análise de Algoritmos

ANÁLISE DE ALGORITMOS (INF 1721)

ANÁLISE DE ALGORITMOS

CURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI

Algoritmos de Ordenação: MergeSort

Solução de Recorrências

Algoritmos de Ordenação

Busca em Memória Primária Estrutura de Dados II

Busca em Memória Primária Estrutura de Dados II

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

Projeto e Análise de Algoritmos

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

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

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

Algoritmos de Ordenação

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

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

Análise de algoritmos

Complexidade de Algoritmos. Edson Prestes

Quicksort Letícia Rodrigues Bueno

Algoritmos de Ordenação: Tempo Linear

Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet

SCC Capítulo 3 Análise de Algoritmos - Parte 2

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

QuickSort CI/2015. Análise e Projeto de Algoritmos. - Prof. Lucídio A. F. Cabral

Carlos Eduardo Batista. Centro de Informática - UFPB

PUC-Rio Departamento de Informática Prof. Marcus Vinicius S. Poggi de Aragão Período: Horário: 4as-feiras de 13 às 16 horas - Sala 520L

ALGORITMOS DE ORDENAÇÃO

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

Branch and Bound - Ramicar e Limitar

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

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

Estruturas de Dados 2

1. O que é a eficiência assintótica de um algoritmo. Explique com suas palavras.

Multiplicação de inteiros

Análise de Complexidade para algoritmos iterativos e recursivos

ANÁLISE DE ALGORITMOS (INF 1721)

ALGORITMOS DE ORDENAÇÃO RECURSIVOS

Complexidade de Algoritmos

Estruturas de Dados 2

Sistemas de Computação. Seção Notas. Valores Interessantes. Notas. Ponto Flutuante. Haroldo Gambini Santos. 26 de abril de 2010.

Paradigmas de Projetos de Algoritmos

Universidade da Madeira. 1. Recursão. 3. Busca. Profa. Dra. Laura Rodríguez Estruturas de dados e algoritmos 2

O Problema da Ordenação Métodos de Ordenação Parte 1

Projeto e Análise de Algoritmos

Introdução a Algoritmos Parte 08

Conteúdo. Busca Seqüencial. Busca Binária. Algoritmos de Ordenação e Busca e sua Análise de Complexidade. Alneu de Andrade Lopes Rosane Minghim

UNIVERSIDADE FEDERAL DO PIAUÍ COLÉGIO TÉCNICO DE TERESINA-TÉCNICO EM INFORMÁTICA DISCIPLINA: ESTRUTURA DE DADOS PROFESSOR: Valdemir Junior

Projeto e Análise de Algoritmos

Tópico 5 Algoritmos de Ordenação. Parte II - métodos de ordenação: counting sort, radix sort e bucket sort.

Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 4, 6

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

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)

Análise de Algoritmos

Algoritmos e Estruturas de Dados I Linguagem C

Análise de Algoritmos

Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática

Ordenação. Prof. Jonas Potros

Ordenação: Heapsort. Algoritmos e Estruturas de Dados II

ALGORITMOS I. Procedimentos e Funções

O PROFESSOR ADVERTE: SLIDES NÃO DEVEM SER UTILIZADOS COMO ÚNICA FONTE PARA ESTUDAR OS CONTEÚDOS MINISTRADOS. PROCURE CONSULTAR, PELO MENOS, A

5. Algoritmos de Ordenação

BCC202 - Estrutura de Dados I

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser

Projeto e Análise de Algoritmos

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI2

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 25

Métodos de Ordenação Parte 3

Métodos de Pesquisa de Dados (II) Árvore N-ária de Pesquisa

Algoritmo MergeSort. Estrutura de Dados II Prof Jairo Francisco de Souza

6. Pesquisa e Ordenação

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

Algoritmos e Complexidade

Transcrição:

Algoritimos e Estruturas de Dados III CIC210 Divisão e Conquista Haroldo Gambini Santos Concurso Universidade Federal de Ouro Preto - UFOP 3 de setembro de 2009 Haroldo Gambini Santos Divisão e Conquista 1/21

Conteúdo 1 Introdução 2 Exemplos Busca Binária Quicksort 3 Resolvendo Recorrências O Método Mestre Haroldo Gambini Santos Divisão e Conquista 2/21

Seção 1 Introdução 2 Exemplos Busca Binária Quicksort 3 Resolvendo Recorrências O Método Mestre

Técnica de Divisão e Conquista Passos Básicos Dividir Dividir o problema em uma ou mais subproblemas Haroldo Gambini Santos Divisão e Conquista 3/21

Técnica de Divisão e Conquista Passos Básicos Dividir Dividir o problema em uma ou mais subproblemas Conquistar Resolver os subproblemas caso esses sejam sucientemente pequenos, caso contrário continuar a divisão Haroldo Gambini Santos Divisão e Conquista 3/21

Técnica de Divisão e Conquista Passos Básicos Dividir Dividir o problema em uma ou mais subproblemas Conquistar Resolver os subproblemas caso esses sejam sucientemente pequenos, caso contrário continuar a divisão Combinar Soluções dos subproblemas para a solução do problema original Haroldo Gambini Santos Divisão e Conquista 3/21

Divisão e Conquista Haroldo Gambini Santos Divisão e Conquista 4/21

Divisão e Conquista Haroldo Gambini Santos Divisão e Conquista 4/21

Divisão e Conquista Haroldo Gambini Santos Divisão e Conquista 4/21

Divisão e Conquista Haroldo Gambini Santos Divisão e Conquista 4/21

Divisão e Conquista Haroldo Gambini Santos Divisão e Conquista 4/21

Divisão e Conquista Haroldo Gambini Santos Divisão e Conquista 4/21

Divisão e Conquista Haroldo Gambini Santos Divisão e Conquista 4/21

Divisão e Conquista Haroldo Gambini Santos Divisão e Conquista 4/21

Divisão e Conquista Haroldo Gambini Santos Divisão e Conquista 4/21

Divisão e Conquista Haroldo Gambini Santos Divisão e Conquista 4/21

Divisão e Conquista Haroldo Gambini Santos Divisão e Conquista 4/21

Divisão e Conquista 1 2 3 4 5 6 7 8 9 10 11 função divconq( x ) se x é sucientemente pequeno então retorna resolver(x) ; senão decomponha x em k conjuntos menores: x 1, x 2,..., x k ; para i=1 até k faça y i = divconq( x i ); m combine o resultados de y 1, y 2,..., y k ; retorne y; m Haroldo Gambini Santos Divisão e Conquista 5/21

Divisão e Conquista Vantagens Eciência do algoritmo Haroldo Gambini Santos Divisão e Conquista 6/21

Divisão e Conquista Vantagens Eciência do algoritmo Tratamento da complexidade Haroldo Gambini Santos Divisão e Conquista 6/21

Divisão e Conquista Vantagens Eciência do algoritmo Tratamento da complexidade Paralelismo Haroldo Gambini Santos Divisão e Conquista 6/21

Divisão e Conquista Vantagens Eciência do algoritmo Tratamento da complexidade Paralelismo Acesso à memória Haroldo Gambini Santos Divisão e Conquista 6/21

Seção 1 Introdução 2 Exemplos Busca Binária Quicksort 3 Resolvendo Recorrências O Método Mestre

Subseção 1 Introdução 2 Exemplos Busca Binária Quicksort 3 Resolvendo Recorrências O Método Mestre

Entrada Entrada: 2 inteiros, x e y representados em n bits. Algoritmo trivial Θ(n 2 ) Haroldo Gambini Santos Divisão e Conquista 7/21

Entrada Entrada: 2 inteiros, x e y representados em n bits. Algoritmo trivial Θ(n 2 ) Pode-se melhorar? Haroldo Gambini Santos Divisão e Conquista 7/21

Entrada Entrada: 2 inteiros, x e y representados em n bits. Algoritmo trivial Θ(n 2 ) Pode-se melhorar? SIM, ao menos comportamento assintotico. Haroldo Gambini Santos Divisão e Conquista 7/21

Passo 1 Dividir os números x e y em duas partes: x = 2 n 2 a + b y = 2 n 2 c + d Haroldo Gambini Santos Divisão e Conquista 8/21

Passo 1 Dividir os números x e y em duas partes: x = 2 n 2 a + b y = 2 n 2 c + d Obtemos xy = 2 n ac + 2 n 2 (ad + bc) + bd Haroldo Gambini Santos Divisão e Conquista 8/21

Continuando xy = 2 n ac + 2 n 2 (ad + bc) + bd 4 multiplicações Haroldo Gambini Santos Divisão e Conquista 9/21

Continuando xy = 2 n ac + 2 n 2 (ad + bc) + bd 4 multiplicações Alternativa x 1 = multiplica(a, c) x 2 = multiplica(b, d) x 3 = multiplica(a + b, c + d) x 1 x 2 Haroldo Gambini Santos Divisão e Conquista 9/21

Alternativa x 1 = multiplica(a, c) x 2 = multiplica(b, d) x 3 = multiplica(a + b, c + d) x 1 x 2 Recorrência T (n) = 3T ( n 2 ) + Θ(n) Θ(n 1.59 ) Haroldo Gambini Santos Divisão e Conquista 10/21

1 função multiplicainteiros( x, y, n ) 2 // x e y são vetores binários de tamanho n Saída: vetor binário z com o resultado da multiplicação 3 se n == 1 então 4 retorne xy; 5 m 6 x L = n bits à esquerda de x; 7 2 x R = n bits à direita de x; 8 y 2 L = n bits à esquerda de y; 9 y 2 R = n bits à direita de y; 10 P 2 1 = multiplicainteiros(x L, y L, n ) 2 ; 11 P 2 = multiplicainteiros(x R, y R, n ) 2 ; 12 P 3 = multiplicainteiros(x L + y R, x L + y R, n ) 2 ; 13 retorne P 1 2 n + (P 3 P 1 P 2) 2 n 2 + P2 Haroldo Gambini Santos Divisão e Conquista 11/21

Subseção 1 Introdução 2 Exemplos Busca Binária Quicksort 3 Resolvendo Recorrências O Método Mestre

Busca Binária Busca Binária 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 função buscabin( V [], n, chave ) // V deve ser um vetor ordenado com posições 0,..., n 1 Saída: posição de V com valor igual a chave ou -1 l = 0; r = n 1; enquanto l r faça m = (l+r) ; 2 se V [m] == chave então retorne m; senão se chave < V [m] então r = m - 1; senão l = m + 1; m m m retorne 1; Haroldo Gambini Santos Divisão e Conquista 12/21

Busca Binária Busca Binária Exemplo chave 31 V[i] = 3 14 27 31 39 42 55 70 74 81 85 93 98 i 0 1 2 3 4 5 6 7 8 9 10 11 12 it. 1 l m r it. 2 l m r it. 3 l m r it. 4 l m r Haroldo Gambini Santos Divisão e Conquista 13/21

Busca Binária Busca Binária Comentários número de possíveis índices: r l + 1 reduz-se pela metade (ou mais) a cada iteração nr. de vezes que n é divido por 2 até que n < 1 lg n Haroldo Gambini Santos Divisão e Conquista 14/21

Subseção 1 Introdução 2 Exemplos Busca Binária Quicksort 3 Resolvendo Recorrências O Método Mestre

Quicksort Quicksort 1 2 3 4 5 6 função quicksort( V [l,..., r] ) se l < r então p = partition( V [l,..., r] ); quicksort(v[l,...,p-1]); quicksort(v[p+1,...,r]); m Haroldo Gambini Santos Divisão e Conquista 15/21

Quicksort Quicksort 1 2 3 4 5 6 7 8 9 10 11 12 13 função partition( V [l,..., r] ) pivot = V [l]; i = l; j = r + 1; repita repita i = i + 1 até que V [i] pivot; repita j = j 1 até que V [j] pivot; se i < j então troque V [i] e V [j] m até i j ; troque V [l] e V [j]; retorne j; Haroldo Gambini Santos Divisão e Conquista 16/21

Quicksort Quicksort Exemplo 5 3 1 9 8 2 7 4 2 3 1 4 *5 8 7 9 1 *2 3 4 7 *8 8 3 4 Haroldo Gambini Santos Divisão e Conquista 17/21

Seção 1 Introdução 2 Exemplos Busca Binária Quicksort 3 Resolvendo Recorrências O Método Mestre

Resolvendo Recorrências Padrão Genérico Problema é sucessivamente: Dividido em a subproblemas Cada subproblema de tamanho n b Haroldo Gambini Santos Divisão e Conquista 18/21

Resolvendo Recorrências tamanho n divisão em a subproblemas tamanho n/b tamanho n/b 2...... profundidade log b n... tamanho 1 largura a log b n Haroldo Gambini Santos Divisão e Conquista 19/21

Subseção 1 Introdução 2 Exemplos Busca Binária Quicksort 3 Resolvendo Recorrências O Método Mestre

O Método Mestre O Método Mestre Utilidade Caracterizar assintoticamente um algoritmo recursivo Permite resolver recorrências que aparecem em algoritmos do tipo D e C Formato T (n) = at ( n b ) + O(nd ) a: número de subproblemas (> 1) n b : tamanho de cada subproblema (b > 1) custo de dividir o problema e de se combinar os resultados (d 0) Haroldo Gambini Santos Divisão e Conquista 20/21

O Método Mestre O Método Mestre Utilidade Caracterizar assintoticamente um algoritmo recursivo Permite resolver recorrências que aparecem em algoritmos do tipo D e C Formato T (n) = at ( n b ) + O(nd ) a: número de subproblemas (> 1) n b : tamanho de cada subproblema (b > 1) custo de dividir o problema e de se combinar os resultados (d 0) Haroldo Gambini Santos Divisão e Conquista 20/21

O Método Mestre O Método Mestre Utilidade Caracterizar assintoticamente um algoritmo recursivo Permite resolver recorrências que aparecem em algoritmos do tipo D e C Formato T (n) = at ( n b ) + O(nd ) a: número de subproblemas (> 1) n b : tamanho de cada subproblema (b > 1) custo de dividir o problema e de se combinar os resultados (d 0) Haroldo Gambini Santos Divisão e Conquista 20/21

O Método Mestre O Método Mestre Utilidade Caracterizar assintoticamente um algoritmo recursivo Permite resolver recorrências que aparecem em algoritmos do tipo D e C Formato T (n) = at ( n b ) + O(nd ) a: número de subproblemas (> 1) n b : tamanho de cada subproblema (b > 1) custo de dividir o problema e de se combinar os resultados (d 0) Haroldo Gambini Santos Divisão e Conquista 20/21

O Método Mestre O Método Mestre T (n) T (n) = at ( n b ) + O(nd ) Limitação assintotica de T (n) O(n d ) T (n) = O(n d log n) O(n log b a ) se d > log b a se d = log b a se d < log b a Haroldo Gambini Santos Divisão e Conquista 21/21