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

Documentos relacionados
Pesquisa Sequencial e Binária

Busca. Pesquisa sequencial

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

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

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

Árvores Binárias de Busca

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

Árvore Binária de Busca

Estruturas de Dados I

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

Árvores Binárias de Busca

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11

Índice. Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial

Algoritmos de Busca em Tabelas

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

INF 1007 Programação II

Algoritmos de pesquisa. Tabelas de dispersão/hash

EAD Árvore árvore binária

Linguagem C: Árvores Binarias

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

2ª Lista de Exercícios

Árvores Binárias Balanceadas

Métodos Computacionais. Árvores

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

Pesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) R. P. António Viera, 23. R. Carlos Seixas, 9, 6º

Métodos de Pesquisa 472

ESTRUTURA DE DADOS PILHA

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

Árvores Binárias e Busca. Jeane Melo

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

Árvores binárias de pesquisa com balanceamento. Algoritmos e Estruturas de Dados II

Algoritmos e Estrutura de Dados. Aula 13 Estrutura de Dados: Árvores de Pesquisa Binária Prof. Tiago A. E. Ferreira

Figura 1 Busca Linear

9 Comandos condicionais

ESTRUTURAS DE DADOS II

Tabela de símbolos: tabelas de espalhamento

Aula 15: Pesquisa em Memória Primária. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Árvores. Algoritmos e Estruturas de Dados 2005/2006

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

Projeto e Análise de Algoritmos. Profa. Juliana Kaizer Vizzotto. Projeto e Análise de Algoritmos - Aula 1

Análise de complexidade

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

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

EAD Árvore - representação usando listas ligadas

Sistema de Arquivos. Ambientes Operacionais. Prof. Simão Sirineo Toscani

Trabalho Prático 1 Revisão de Programação, Tipos Abstratos de Dados e Combinação de Alocação Estática e Dinâmica de Memória

BCC202 - Estrutura de Dados I

ST364 Estruturas de Dados Grupo 4 apresenta: Seminário MERGESORT Blog -

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

ALGORITMO I VARIÁVEIS INDEXADAS

Fila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

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

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

UNIVERSIDADE FEDERAL DE SANTA MARIA

Pilhas. Profa Morganna Diniz

Tabelas de Espalhamento

1. Introdução Definição Conceitos relacionados... 2

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

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

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa

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

Figura 13.1: Um exemplo de árvore de diretório.

Algoritmos de Pesquisa e Ordenação em Vectores

Algoritmos e Estrutura de Dados III. Árvores

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

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

Aula Teórica 12. Material Didático Proposto

ÁRVORES BINÁRIAS DE PESQUISA

Tutorial de Matlab Francesco Franco

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais:

Pesquisa digital. Algoritmos e Estruturas de Dados II

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa

Métodos Computacionais. Fila

Estruturas de Dados Pilhas, Filas e Deques

Recursão em Listas. Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de Programação Funcional

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

Aula 04 Ordenação parcial

Hashing (Tabela de Dispersão)

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

INF 1010 Estruturas de Dados Avançadas

Geração de código intermediário. Novembro 2006

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

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

Programação WEB I Estruturas de controle e repetição

-Estrutura linear de acesso seqüencial que ordena seus elementos pela seqüência cronológica de sua entrada;

Algoritmos e Estruturas de Dados II. Trabalho Prático 2

INF 1620 P1-10/04/02 Questão 1 Nome:

Algoritmos e Estruturas de Dados: Árvore Binária de Busca

VETORES. Lista de Exercícios Vetores e Matrizes Prof: Yuri Frota

Ata da resolução de exercício

Estruturas de Dados Aula 15: Árvores 17/05/2011

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Introdução a linguagem C Estruturas de decisão

Pesquisa Sequencial e Binária

Sistemas Operacionais

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

Programas operam sobre dados. Dados são relacionados e possuem estrutura. Como representar e manipular dados em um computador

Aula 03 Limite assintótico para a ordenação, Ordenação em tempo linear

Transcrição:

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

Pesquisa em Memoria Primária Estudo de como recuperar informação a partir de uma grande massa de informação previamente armazenada. A informação é dividida em registros. Cada registro possui uma chave para ser usada na pesquisa. Objetivo da pesquisa: Encontrar uma ou mais ocorrências de registros com chaves iguais à chave de pesquisa. Pesquisa com sucesso X Pesquisa sem sucesso

Pesquisa em Memoria Primária Conjunto de registros ou arquivos TABELAS Tabela: Associada a entidades de vida curta, criadas na memória interna durante a execução de um programa. Arquivo: Geralmente associado a entidades de vida mais longa, armazenadas em memória externa. Distinção não é rígida: tabela: arquivo de índices arquivo: tabela de valores de funções.

Escolha do Método de Pesquisa Depende principalmente: 1. Quantidade dos dados envolvidos. 2. Arquivo estar sujeito a inserções e retiradas frequentes. se conteúdo do arquivo é estável é importante minimizar o tempo de pesquisa, sem preocupação com o tempo necessário para estruturar o arquivo.

Algoritmos de Pesquisa Tipos Abstratos de Dados É importante considerar os algoritmos de pesquisa como tipos abstratos de dados, com um conjunto de operações associado a uma estrutura de dados, de tal forma que haja uma independência de implementação para as operações. Operações mais comuns: 1. Inicializar a estrutura de dados. 2. Pesquisar um ou mais registros com determinada chave. 3. Inserir um novo registro. 4. Retirar um registro especifico. 5. Ordenar um arquivo para obter todos os registros em ordem de acordo com a chave. 6. Ajuntar dois arquivos para formar um arquivo maior.

Pesquisa sequencial ou linear Método de pesquisa mais simples: a partir do primeiro registro, pesquise sequencialmente até encontrar a chave procurada; então pare. Armazenamento de um conjunto de registros por meio do tipo estruturado arranjo.

Pesquisa sequencial ou linear 1. Posicionar-se no início do arquivo 2. Se registro atual = registro desejado Sucesso, Terminar; 3. Se registro atual > registro desejado Fracasso, Terminar; 4. Se registro atual < registro desejado Avançar registro; 5. Se não for final de arquivo Avance o registro e volte ao passo 2 6. Fracasso, Terminar;

Pesquisa sequencial ou linear - Exemplo 1º passo inicialização i = 0; encontrado = 0; /*Falso*/ 2º passo busca while (i < TAMANHO &&!encontrado) { if (vetor[i] == valor) { encontrado = 1; /*Verdadeiro*/ } else { i++; } }

Pesquisa sequencial ou linear- Exemplo 3º passo tratamento do resultado if (encontrado) { printf ("Valor esta na posicao", i); } else { printf ("Valor não encontrado",valor); }

Pesquisa sequencial ou linear Análise Quanto tempo a busca sequencial demora para executar? Em outras palavras, quantas vezes a comparação valor == vetor[i] é executada? Caso valor não esteja presente no vetor, n vezes. Caso valor esteja presente no vetor: 1 vez no melhor caso (valor está na primeira posição). n vezes no pior caso (valor está na última posição). n/2 vezes no caso médio.

Pesquisa Binária Algoritmo de busca em tabelas que segue o paradigma de divisão e conquista. Pesquisa em tabela pode ser mais eficiente Se registros forem mantidos em ordem Para saber se uma chave está presente na tabela 1. Compare a chave com o registro que está na posição do meio da tabela. 2. Se a chave é menor então o registro procurado está na primeira metade da tabela 3. Se a chave é maior então o registro procurado está na segunda metade da tabela. 4. Repita o processo até que a chave seja encontrada, ou fique apenas um registro cuja chave é diferente da procurada, significado uma pesquisa sem sucesso.

Pesquisa Binária Passo 1: inicialização int direita, esquerda, meio; encontrado = 0; /*Falso*/ esquerda = 0; direita = TAMANHO - 1;

Pesquisa Binária Passo 2: busca while(esquerda<=direita &&!encontrado){ meio=(direita + esquerda)/2; if (vetor[meio] == valor) encontrado = 1; /*Verdadeiro*/ else if (valor < vetor[meio]) direita = meio - 1; else esquerda = meio + 1; }

Pesquisa Binária Passo 3: tratamento do resultado if(encontrado){ printf ("Valor encontrado na posicao", meio); }else{ printf ("Valor não encontrado", valor); }

Pesquisa Binária - Análise A cada iteração do algoritmo, o tamanho da tabela é dividido ao meio. Logo: o número de vezes que o tamanho da tabela é dividido ao meio é cerca de log n. Ressalva: o custo para manter a tabela ordenada é alto: a cada inserção na posição p da tabela implica no deslocamento dos registros a partir da posição p para as posições seguintes. Consequentemente, a pesquisa binária não deve ser usada em aplicações muito dinâmicas

Atividade 1 Ordenar o vetor e aplicar as verificações do slide 7 dessa apresentação, na pesquisa sequencial para que seja encontrado o valor 1. 2 Apresentar as implementações das pesquisas sequencial e binária para que encontrem o elemento 8. 3 Implementação do algoritmo de busca binária de forma recursiva. 4 Apresente a média do tempo de execução dos dois algoritmos do exercícios 2 e faça suas conclusões. *Utilize esse vetor para fazer os testes 4 1 3 2 1 9 1 1 8 7 2 4 6 7 3 3 5 7 3 6 6 2 7 1