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

Documentos relacionados
Estruturas de Dados 2

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

Análise de algoritmos

Análise de algoritmos

Solução de Recorrências

Aula 02 Notação Assintótica p. 4. Usodanotação O. Notação O. Notação O, Ω, ΘeExemplos. Intuitivamente... O(f(n)) funções que não crescem mais

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

Análise de Algoritmos

Lista de Exercícios 6: Soluções Funções

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

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

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

Análise de Algoritmos

ANÁLISE DE ALGORITMOS

Algoritmos de ordenação Quicksort

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

Projeto e Análise de Algoritmos

Análise e Complexidade de Algoritmos

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

Aula 06: Análise matemática de algoritmos recursivos

Aula 1. Teoria da Computação III

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.

Estruturas de Dados 2

André Vignatti DINF- UFPR

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)

Análise de Complexidade para algoritmos iterativos e recursivos

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

Melhores momentos AULA 3. Algoritmos p.148/188

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

Complexidade de Algoritmos

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

Introdução à Análise Algoritmos

Lista de Exercícios 6 Funções

Projeto e Análise de Algoritmos

Teoria da Computação. Aula 4 Técnicas de Análise 5COP096. Aula 4 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

PCC104 - Projeto e Análise de Algoritmos

Melhores momentos AULA PASSADA. Complexidade Computacional p. 205

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

Algoritmos de Ordenação: QuickSort

Análise de Algoritmos

Estruturas de Dados 2

Projeto e Análise de Algoritmos

I. Correção de Algoritmos Não-Recursivos

MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017

Rascunho. CI165 - Análise de algoritmos (rascunho alterado constantemente) André Guedes Departamento de Informática UFPR. 7 de dezembro de 2016

Rascunho. CI165 - Análise de algoritmos (rascunho alterado constantemente) André Guedes Departamento de Informática UFPR. 11 de junho de 2017

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

1 a Lista de Exercícios

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

Melhores momentos AULA 1. Algoritmos p.38/86

Lista de março de 2014

Análise de algoritmos

ANÁLISE DE ALGORITMOS: PARTE 3

5. Invólucros Convexos no Plano (cont )

Ordenação em tempo linear

Complexidade de Algoritmos

BCC202 - Estrutura de Dados I

Resposta da pergunta 2: Θ(n 3 ). Resposta da pergunta 8: 1. 7 O(n). Sim. 22. n log n O(1). Não. 3. n + 7 O(n). Sim. 4. n + 7 O(1). Não.

Técnicas de análise de algoritmos

Análise de Algoritmos e Estruturas de Dados

Análise e Complexidade de Algoritmos

Análise de algoritmos

Elementos de Análise Assintótica

Funções. Antonio Alfredo Ferreira Loureiro. UFMG/ICEx/DCC MD Funções 1

QUESTÕES DE PROVAS ANTIGAS

EEL470 Algoritmos e Estruturas de Dados Prof. Heraldo L. S. Almeida Prova 1 (22/05/2009)

LISTA DE EXERCÍCIOS 1

Projeto e Análise de Algoritmos

Algoritmos de Ordenação

LISTA DE EXERCÍCIOS 1

Algoritmos de Ordenação. Cota inferior. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017

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

Resposta pergunta 1: i n t dectobin ( i n t n ) { i n t mdc( i n t x, i n t y ) ; void testpalindromo ( ) ; i n t main ( ) { testmult ( ) ;

AULA 13. Algoritmos p.526/582

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

Lista de Exercícios de Algoritmos e Estruturas de Dados

Quantidade de memória necessária

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

Uma recorrência é uma equação que descreve uma função em termos do seu valor em entradas menores

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

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

O Teorema Mestre da Complexidade

Análise e Projeto de Algoritmos

Análise de Algoritmos e Estruturas de Dados

Comportamento Assintótico. Algoritmos e Estruturas de Dados Flavio Figueiredo (

Classes, Herança e Interfaces

ANÁLISE DE ALGORITMOS: PARTE 4

Algoritmos de Ordenação

Paradigmas de Projeto de Algoritmos

Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins

André Vignatti DINF- UFPR

Relações de recorrência

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

Paradigmas de Projeto de Algoritmos

Projeto e Análise de Algoritmos

Paradigmas de Projeto de Algoritmos

Luís Fernando Schultz Xavier da Silveira. 12 de maio de 2010

BCC202 - Estrutura de Dados I

Transcrição:

Busca Binária Aula 05 Equações com Recorrência Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Idéia: Divisão e Conquista Busca_Binária(A[l...r],k) 1:if r < lthen 2: index = 1 3:else 4: mid = (l + r)/2 5: if k = A[mid]then 6: index = mid 7: else 8: if k < midthen 9: index = Busca_Binária(A[l...mid 1],k) 10: else 11: index = Busca_Binária(A[mid + 1...r],k) Aula 05 p. 1 Aula 05 p. 3 Busca em um vetor ordenado Entrada: Um vetor ordenado crescentemente e um inteiro Saída: O índice do número encontrado ou -1 a 0,a 1,a 2,...,a n 1 ; k j 3, 6, 8, 9, 12, 19, 21; 9 3 3, 6, 8, 9, 12, 19, 21; 11 1 Algoritmo Busca Linear - Tempo O(n) Análise do Busca Binária T(n) = { c se n 1 T(n/2) + c se n > 1 T(n) = T(n/2) + c. = (T(n/4) + c) + c = ((T(n/8) + c) + c) + c = T(1) + c lg n Portanto T(n) = Θ(logn) Aula 05 p. 2 Aula 05 p. 4

Árvore de Decisão melhoramos o tempo da busca de Θ(n) para Θ(log n). Dá para fazer melhor? árvore de decisão Para uma entrada de tamanho n, é uma árvore binária com nós rotulados de 0 a n 1 A raiz é rotulada com o índice da primeira entrada do vetor que o algoritmo busca binária compara à k Logo, para um dado nó i, o rótulo do filho esquerdo é o índice da entrada quando k < A[i] (análogo ao filho direito). Se o nó não tem filho esquerdo(direito) o algoritmo termina. Árvore de Decisão o pior caso do número de comparações é o maior caminho p da raiz até uma folha. Supondo que a árvore de decisão tem n nós e cada nó pelo menos 2 filhos. n 1 + 2 + 4 + + 2 p 1 = 2 p 1 2 p n + 1 p log(n + 1) Será que uma árvore de decisão pode ter menos que n nós? Lema Existe um nó rotulado com i para cada i, 0 i n 1 Aula 05 p. 5 Aula 05 p. 7 Árvore de Decisão- Exemplo Demostração Árvore de decisão para n = 10 Suponha que não existe um nó rotulado com algum i. Considere dois vetores de entrada A1 e A2 tal que 4 A1[i] = k e A2[i] = k > k para j < i, A1[j] = A2[j] usando valores menores que k para j > i, A1[j] = A2[j] usando valores maiores que k 1 7 Visto que nenhum nó da árvore de decisão está rotulado com i um algoritmo nunca compara k com A1[i] ou A2[i], mas isto dá a mesma saída para ambas as entradas. 0 2 5 8 Tal algoritmo dá uma saída errada para para pelo menos uma das entradas. Conclusão: A árvore tem pelo menos n nós. 3 6 9 Teorema Qualquer algoritmo com um vetor de tamanho n deve fazer ao menos Θ(log n) comparações para alguma entrada. Corolário O algoritmo busca binária é ótimo Aula 05 p. 6 Aula 05 p. 8

Resolvendo Recorrências Recorrência: Equação ou inequação que descreve uma função em termos de seus próprios valores em entradas menores. As análises do Mergesort e do Busca Binária necessitaram da resolução de uma recorrência Recorrências aparencem em análise de tempo de algoritmos recursivos, mas não só. Recorrências são como demais equações matemáticas Necessitam de alguns truques Há vários método de resolver: Iterativo, Substituição, Mestre. Método substituição 4c(n/2) 3 + n = c 2 n3 + n = cn 3 ( c 2 n3 n) cn 3 Contanto que 2 cn3 n 0. Por exemplo para n = 1 e c = 2. Aula 05 p. 9 Aula 05 p. 11 Método substituição O método mais geral Chute uma equação para a solução Verifique por indução Resolva para achar as constante Exemplo Supor T(1) = Θ(1) Chute Θ(n 3 ). (prove O e Ω separadamente) Suponha T(k) ck 3, para k < n Prove T(n) cn 3 Método substituição Nós devemos também verificar as condições iniciais, ou seja a base da indução T(n) = Θ(1) para todo n < n 0, onde n 0 é uma constante adequada. Para 1 n < n 0 temos Θ(1) cn 3, para uma constante c suficientemente grande. Este limitante superior não é justo! Aula 05 p. 10 Aula 05 p. 12

Método substituição Vamos mostrar que T(n) = Θ( ) Suponha que T(k) ck 2, para k < n 4c(n/2) 2 + n = c + n c Errado! Árvore de Recursão Uma árvore de recursão modela o tempo de execução recursivo de um algoritmo A árvore de recursão é uma forma de produzir um chute para o método de substituição A árvore de recursão pode não ser confiável. A árvore de recursão ajuda na intuição. Não há escolha para c que torne a expressão verdadeira Aula 05 p. 13 Aula 05 p. 15 Método Substituição Um limitante superior mais justo. T(n) = Θ( ) Idéia: Reduzir a hipótese de indução Subtrair um termo de menor grau. Hipótese indutiva: T(k) c 1 k 2 c 2 k, para k < n 4(c 1 (n/2) 2 c 2 n/2) + n = c 1 2c 2 n + n = c 1 c 2 n (c 2 n n) c 1 c 2 n Exemplo da Árvore de Recursão Resolva T(n) = T(n/4) + T(n/2) + T( n 4 ) T( ) Tomando c 2 > 1 Aula 05 p. 14

Exemplo da Árvore de Recursão Resolva T(n) = T(n/4) + T(n/2) + Exemplo da Árvore de Recursão Resolva T(n) = T(n/4) + T(n/2) + ( n 4 )2 ( )2 ( n 4 )2 ( )2 5 16 n2 h = O(lg n) ( n 16 )2 ( n 8 )2 ( n 8 )2 ( n 4 )2 h = O(lg n) ( n 16 )2 ( n 8 )2 ( n 8 )2 ( n 4 )2 25 256 n2 c c (1 + 5 16 + ( 5 16 )2... ) = Θ( ) Exemplo da Árvore de Recursão Resolva T(n) = T(n/4) + T(n/2) + Método Mestre O Método Mestre se aplica a recorrências da forma: h = O(lg n) ( n 4 )2 ( )2 ( 16 n )2 ( n 8 )2 ( n 8 )2 ( n 4 )2 c 5 16 n2 25 256 n2 T(n) = at(n/b) + f(n), Onde a 1, b > 1 são constantes e f(n) é uma função assintoticamente positiva. Há três casos comuns: Compare f(n) com n log b a se f(n) = O(n log b a ǫ ) para algum ǫ > 0 f(n) cresce menos que n log b a (por um fator n ǫ ) T(n) = Θ(n log b a ) se f(n) = Θ(n log b a lg k n), para algum k > 0 f(n) e n log b a crescem assintoticamente iguais T(n) = Θ(n log b a lg k+1 n) Aula 05 p. 17

Método Mestre Há três casos comuns: Compare f(n) com n log b a se f(n) = Ω(n log b a+ǫ ) para algum ǫ > 0 f(n) cresce polinomialmente mais rápida que n log b a (por um fator n ǫ ) se f satisfaz a condição de regularidade que af(n/b) cf(n) então T(n) = Θ(f(n)) Método Mestre- Exemplos 3 a = 4, b = 2 n log b a =, f(n) = n 3 Caso 3 f(n) = Ω(+ǫ ) para ǫ = 1 e Cond. Reg. 4(cn/2) 3 cn 3 para c = 1/2 Solução : T(n) = Θ(n 3 ) T(n) = 4T(n/2) + / log n a = 4, b = 2 n log b a =, f(n) = / log n Método Master não se aplica. Para todo ǫ > 0 temos n ǫ = ω(log n) Aula 05 p. 18 Aula 05 p. 20 Método Mestre- Exemplos a = 4, b = 2 n log b a =, f(n) = n Caso 1 f(n) = O( ǫ ) para ǫ = 1 Solução : T(n) = Θ( ) T(n) = 4T(n/2) + a = 4, b = 2 n log b a =, f(n) = Caso 2 f(n) = Θ( log 0 n) i.e k = 0 Solução : T(n) = Θ( log n) Exercícios- Resolva Usando método iterativo T(n) = 3T(n/4) + n Usando método substituição T(n) = 2T(n/2) + n Usando método master T(n) = 9T(n/3) + n T(n) = T(2n/3) + 1 T(n) = 3T(n/4) + n log n Aula 05 p. 19 Aula 05 p. 21