Pesquisa Sequencial e Binária



Documentos relacionados
Pesquisa Sequencial e Binária. Introdução à Programação SI2

Árvores Binárias de Busca

Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos

Área que visa determinar a complexidade (custo) de um algoritmo, com isso é possível:

Sumário. 5COP096 Teoria da Computação Aula 8 Pesquisa em Memória Primária

Algoritmos de Busca em Tabelas

Universidade Federal de Mato Grosso do Sul Faculdade de Computação Disciplina de Verão: Algoritmos e Programação II

BCC202 - Estrutura de Dados I

Figura 1 Busca Linear

Universidade Federal de Alfenas

Conceitos Importantes:

ALGORITMO I VARIÁVEIS INDEXADAS

Análise de complexidade

Árvores Binárias de Busca

Capítulo 19. Algoritmos de Ordenação e de Pesquisa. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Empresa de Pesquisa Energética (EPE) Analista de Projetos da Geração de Energia

Aula 03 Custos de um algoritmo e funções de complexidade

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

PROGRAMAÇÃO II 4. ÁRVORE

Busca. Pesquisa sequencial

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

Árvores AVL. Prof. Othon M. N. Batista Estrutura de Dados

Árvores Binárias Balanceadas

Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II

Pesquisa em Memória Primária. Prof. Jonas Potros

Introdução a Algoritmos Parte 04

Métodos de Pesquisa em Memória Primária

Sistemas Operacionais e Introdução à Programação. Vetores e matrizes

Disciplina: Unidade III: Prof.: Período:

Métodos de Pesquisa 472

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

Árvore Binária de Busca

Terceira Avaliação Visualg & Pascal

[a11 a12 a1n 4. SISTEMAS LINEARES 4.1. CONCEITO. Um sistema de equações lineares é um conjunto de equações do tipo

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Dadas a base e a altura de um triangulo, determinar sua área.

Árvore B UNITINS ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 3º PERÍODO 43

Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO

4 Segmentação Algoritmo proposto

1ª Lista de exercícios

Microsoft Access XP Módulo Um

Algoritmos e Estrutura de Dados III. Árvores

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE

Algoritmos com VisuAlg

MESTRADO EM MACROECONOMIA e FINANÇAS Disciplina de Computação. Aula 02. Prof. Dr. Marco Antonio Leonel Caetano

Lógica de Programação

Curso : Tecnologia em Desenvolvimento de Sistemas - AEMS

ALGORITMOS DE ORDENAÇÃO. Algoritmos de comparação-e-troca. Bubble Sort Merge Sort Quick Sort

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

5COP096 TeoriadaComputação

Programação de Computadores I. Linguagem C Vetores

FACULDADE DE IMPERATRIZ - FACIMP BACHARELADO EM SISTEMAS DE INFORMAÇÃO ESTRUTURA DE DADOS 2. Vieira Lima Junior. Everson Santos Araujo

Capítulo 2 - Problemas de Valores Fronteira para Equações Diferenciais Ordinárias

Análise de Algoritmos: Melhor caso, pior caso, caso médio

15 4 Operação Avançada do Sistema: Inclusão de Nota Fiscal e seus relacionamentos

Controle do Arquivo Técnico

Algoritmo e Programação

Questão Essência do Excel

VisuALG Estruturas de Repetição. Professores: Vilson Heck Junior Felipe Schneider Costa

Associação Educacional Dom Bosco Curso de Engenharia 1º ano

Tutorial de Matlab Francesco Franco

CURSO BÁSICO DE PROGRAMAÇÃO AULA 7

Análise e Complexidade de Algoritmos

Qual é o risco real do Private Equity?

Projeto 1: Aprovação de Transação de Cartão de Crédito

Introdução aos cálculos de datas

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

Árvores. Algoritmos e Estruturas de Dados 2005/2006

Hashing Letícia Rodrigues Bueno

Instruções para Avaliação de Projetos

Organização de Computadores. Cálculos Binários e Conversão entre Bases Aritmética Binária

Manual de Relação de Pontos por Indicação

Universidade Tecnológica Federal do Paraná UTFPR Programa de Pós-Graduação em Computação Aplicada Disciplina de Mineração de Dados

Lista de Exercícios. Vetores

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

Tutorial do Usuário para utilização do Magento e commerce

Noções Básicas de Excel página 1 de 19

Trabalho Final. Data da Submissão: das 8h do dia 16/06 às 24h do dia 17/06. Data da Entrega do Relatório: das 15h às 18h no dia 18/06.

MÓDULO DE ENVIO DE MENSAGEM (SMS) MANUAL DO SISTEMA MICROWORK ADICION

Backup. Permitir a recuperação de sistemas de arquivo inteiros de uma só vez. Backup é somente uma cópia idêntica de todos os dados do computador?

Resolução de problemas e desenvolvimento de algoritmos

MANUAL DO SISTEMA. Versão 6.04

Orientação a Objetos

OPENOFFICE PLANILHA SEMANA 4

O Crivo de Eratóstenes. Jones Albuquerque DFM-UFRPE. 2004, Recife - PE.

b) A quantidade mínima de peças que a empresa precisa vender para obter lucro.

Pointer Jumping. odg(v) e idg(v): graus de saída e entrada do vértice v V. um vértice r tal que. O vértice r é dita raíz de T

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

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

computador-cálculo numérico perfeita. As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

Estruturas de Dados I

TRIBUNAL DE JUSTIÇA DO PARANÁ PROJUDI REFORMULAÇÃO DE CUMPRIMENTOS - MANDADOS

Guia de boas práticas para realização de Backup

5 Experiência de implantação do software de roteirização em diferentes mercados

PROCEDIMENTOS PARA REALIZAÇÃO DE INVENTÁRIO FÍSICO - ESTOQUES

Transcrição:

Pesquisa Sequencial e Binária Prof. Wylliams Barbosa Santos wylliamss@gmail.com Introdução à Programação Crédito de Conteúdo: Professora Ceça Moraes

Agenda Pesquisa Sequencial Noções de complexidade Pesquisa Binária 2

Contexto Diferentes estratégias para pesquisa (busca) de um elemento específico em um conjunto de dados. Lista, array, coleção Operação importante, encontrada com muita freqüência em diversas aplicações Dois métodos mais conhecidos: Busca Seqüencial linear Busca Binária 3

Pesquisa Sequencial Forma mais simples de realizar pesquisas. Metodologia: Pesquisa bem sucedida: É efetuada a verificação de cada elemento do conjunto, sequencialmente, até que o elemento desejado seja encontrado; Pesquisa mal sucedida: Todos os elementos do conjunto tenham sido verificados sem que o elemento procurado tenha sido encontrado;

Pesquisa Sequencial 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 14 21 5 45 12 3 86 98 46 53 24 2 1 15 90 47 Questão 1: O elemento 90 está presente no vetor? Questão 2: Quantas comparações são necessárias para achar o elemento 90? 5

Características Algoritmo extremamente simples Pode ser muito ineficiente quando o conjunto de dados se torna muito grande Alto número de comparações

COMPLEXIDADE DE ALGORITMOS 7

Complexidade A Complexidade de um Algoritmo consiste na quantidade de trabalho necessária para a sua execução, expressa em função das operações fundamentais. Operações críticas variam de acordo com o algoritmo, e em função do volume de dados Por exemplo, na pequisa sequencial é fundamental as comparações entre elementos 8

Complexidade Um algoritmo serve para resolver um determinado problema, e os problemas têm sempre uma entrada de dados (E) O tamanho de E (N elementos) afeta diretamente o tempo de resposta do algoritmo Dependendo do problema, já existem alguns algoritmos prontos, ou que podem ser adaptados Decisão: qual algoritmo escolher?

Complexidade A complexidade de um algoritmo pode ser dividida em: Complexidade Espacial: quantidade de recursos utilizados para resolver o problema Complexidade Temporal: quantidade de tempo utilizado. Pode ser visto também como o número de passos necessários para resolver determinado problema Em ambos os casos, a complexidade é medida de acordo com o tamanho dos dados de entrada (N) 10

Complexidade Definimos a expressão matemática de avaliação do tempo de execução de um algoritmo como sendo uma função que fornece o número de passos efetuados pelo algoritmo a partir de uma certa entrada 11

Exemplos Soma de vetores para I de 1 até N faça S[I] X[I] + Y[I] fimpara Número de passos = número de somas (N somas) Ordem de N ou O(N) 12

Exemplos Soma de matrizes para I de 1 até N faça para J de 1 até N faça C[I,J] A[I,j] + B[I,J] fimpara fimpara Número de passos = número de somas (N*N somas) Ordem de N 2 ou O(N 2 ) 13

Exemplos Produto de matrizes para I de 1 até N faça para J de 1 até N faça P[I,J] 0 para K de 1 até N faça P[I,J] P[I,J] + A[I,K] * B[K,J] fimpara fimpara Fimpara Número de passos = Número de operações de somas e produtos (N*N*N) Ordem de N 3 ou O(N 3 ) 14

Tipos A complexidade pode ser qualificada quanto ao seu comportamento como: Polinomial à medida em que N aumenta o fator que estiver sendo analisado (tempo ou espaço) aumenta linearmente Exponencial A medida que N aumenta o fator que estiver sendo analisado (tempo ou espaço) aumenta exponencialmente 15

Complexidade de Algoritmos Existem três escalas de complexidade: Melhor Caso Caso Médio Pior Caso

Melhor Caso Representado pela letra grega Ω (Ômega) É o menor tempo de execução em uma entrada de tamanho N É pouco usado, por ter aplicação em poucos casos Exemplo Se tivermos uma lista de N números e quisermos executar uma busca sequencial assume-se que a complexidade no melhor caso é de N = 1 f(n) = Ω (1) = 1, pois assume-se que o número estaria logo na primeira posição da lista

Caso Médio Definido pela letra grega θ (Theta) Dos três, é o mais difícil de se determinar Deve-se obter a média dos tempos de execução de todas as entradas de tamanho 1, 2,... até N, ou baseado em probabilidade de determinada situação ocorrer 18

Pior Caso Representado pela letra grega O (O maiúsculo. Trata-se da letra grega ômicron maiúscula) É o método mais fácil de se obter Baseia-se no maior tempo de execução sobre as entradas de tamanho N Exemplo: Se tivermos uma lista de N números e quisermos executar uma busca sequencial assume-se que a complexidade no pior caso é f(n) = O (N) = N, pois assume-se que o número estaria no pior caso, no final da lista 19

Busca Sequencial Complexidade Pior Caso: é quando é necessário realizar N comparações (onde N é o número de elementos) Qual o cenário de pior caso possível? O elemento procurado na última posição Melhor Caso: é quando é necessário realizar somente uma comparação Qual o cenário de melhor caso possível? O elemento procurado na primeira posição Caso Médio: (Pior Caso + Melhor Caso)/2 20

Busca Sequencial Complexidade Pior Caso: n comparações O(n) = n Melhor Caso: uma comparação Ω(1) = 1 Caso Médio: (Pior Caso + Melhor Caso)/2 θ(n) = (n + 1) /2 21

BUSCA BINÁRIA 22

Busca Binária Algoritmo de busca em vetores com acesso aleatório aos elementos Parte do pressuposto de que o vetor está ordenado Realiza sucessivas divisões do vetor e compara o elemento buscado (chave) com o elemento no meio do segmento 3 opções: Se igual, a busca termina com sucesso Se o elemento do meio for menor que o elemento buscado, então a busca continua na metade posterior do vetor. Se o elemento do meio for menor que a chave, a busca continua na metade anterior do vetor 23

Busca Binária Metodologia 1) Checar onde está o ponto médio do vetor. 2) Comparar o elemento do ponto médio (EPM) com elemento chave. 3) Continuar a pesquisa da seguinte forma: Se chave=epm, então a pesquisa pára com sucesso, pois achou o dado desejado! Se chave<epm realizar a pesquisa no sub-vetor à esquerda do EPM, partindo do passo 1. Se chave>epm realizar a pesquisa no sub-vetor à direita do EPM, partindo do passo 1. 24

Exemplo vetor a inspecionar vazio o valor 2 não existe no vetor original! 25

Exemplo de Busca Binária Exemplo Inicial: Após ordenação: Ponto médio 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 5 12 14 15 21 24 45 46 47 53 86 90 98 Pergunta: Como verificar se o elemento 90 está presente no vetor acima? Pergunta: Quantas comparações são necessárias para achar o elemento 90?

Exemplo de Busca Binária Procurando pelo elemento 90

Busca Binária Divide-se o vetor como se este fosse uma árvore 20 30 40 50 90 100 Raiz Folhas 28

Complexidade da Busca Binária Pior Caso: quando o dado desejado encontra-se na folha da árvore (nas pontas) ou não existe. O(log 2 N) Melhor Caso: quando o elemento procurado corresponde a exatamente o elemento do meio do vetor (raiz da árvore). Ω(1) Caso Médio: quando o dado desejado encontra-se próximo do meio da árvore. θ(log 2 N) Lembrando que log 2 N = e => 2 e = N

Complexidade da Busca Binária Para um vetor de 8, é necessário apenas 3 comparações para se encontrar a chave no pior caso: Exemplo: localizar a chave 2 no vetor: 11 21 34 39 41 45 89 98 Comparação 1: 11 21 34 39 41 45 89 98 Comparação 2: 11 21 34 39 41 45 89 98 Comparação 3: 11 21 34 39 41 45 89 98 30

Complexidade da Busca Binária Exemplo: localizar o valor 0 (zero) 31

Qual das duas buscas é melhor? Para uma lista com N = 1000, o algoritmo de pesquisa sequencial irá executar 1000 comparações no pior caso, e cerca de 500 operações no caso médio; Por sua vez, o algoritmo de pesquisa binária irá executar 10 comparações no pior caso, para o mesmo N. (log 2 1000 10) O logaritmo de base 2 aparece porque divide-se o intervalo de busca pela metade: 1000, 500, 250, 125, 63, 32, 16, 8, 4, 2, 1 (10 divisões) 32

Qual das duas buscas é melhor? O algoritmo de pesquisa binária assume que a lista está ordenada Ordenar uma lista também tem um custo, geralmente superior ao custo da pesquisa sequencial. Se for para fazer uma só pesquisa, não vale à pena ordenar a lista Por outro lado, se pretende-se fazer muitas pesquisas, o esforço da ordenação pode valer a pena 33

EXERCÍCIOS 34

Exercício 1. Faça um programa em python que realize a pesquisa sequencial em uma lista de números inteiros. Peça para o programa ler os números até que o valor -999 seja digitado. Em seguida o programa deve pedir para o usuário digitar o número a ser procurado na lista e efetuar a busca sequencial, informando se o mesmo foi ou não encontrado e se foi, em qual posição da lista este se encontra. 2. Refaça o programa anterior para usar o algoritmo de busca binária.

Exercício 3. Implementar a busca e remoção da agenda, buscando por nome e telefone. Implementrar a busca de duas formas (sequencial ou binária)

Exercício

Bibliografia Cormen, Thomas H. et. al. Algoritmos: Teoria e Prática. Editora Campus, 2002. Ziviani, Nivio. Projeto de Algoritmos. Editora Nova Fronteira, 2004. Complexidade (Prof. Jones Albuquerque) http://www.cin.ufpe.br/~joa/menu_options/school/cursos/ppd/ aulas/complexidade.pdf 38

39