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º



Documentos relacionados
Busca. Pesquisa sequencial

Análise de complexidade

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

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

Pesquisa Sequencial e Binária

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

Árvores Binárias de Busca

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

Árvores Binárias de Busca

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

Hashing. Rafael Nunes LABSCI-UFMG

Árvore Binária de Busca

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

Tabelas de Espalhamento

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

Algoritmos de pesquisa. Tabelas de dispersão/hash

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

EAD Árvore árvore binária

Métodos de Pesquisa 472

EAD Árvore - representação usando listas ligadas

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

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

Análises Geração RI (representação intermediária) Código Intermediário

Administração e Optimização de BDs

Unidade 5 Armazenamento e Indexação

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores

Tabela de símbolos: tabelas de espalhamento

Organização de Arquivos

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

Programação SQL. Manipulação de Dados. DML Data Manipulation Language

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

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

Unidade IV: Ponteiros, Referências e Arrays

DAS5102 Fundamentos da Estrutura da Informação

ÁRVORES BINÁRIAS DE PESQUISA

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

Tabelas (arrays) (vetores, matrizes, etc) Algoritmos de pesquisa Algoritmos de ordenação

BCC202 - Estrutura de Dados I

Índices* Professora Rosane Minghim. * Baseado no material de Leandro C. Cintra e M. C. F. de Oliveira. Fonte: Folk & Zoelick, File Structures.

Hashing Letícia Rodrigues Bueno

Pesquisa e organização de informação

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

PROGRAMAÇÃO II 4. ÁRVORE

INF 1007 Programação II

Variáveis e estruturas de controlo. Introdução à Programação André L. Santos

ESTRUTURA DE DADOS PILHA

Prof. Daniela Barreiro Claro

Aplicações de Escritório Electrónico

Algoritmos e Estruturas de Dados I 01/2013. Arquivos. Pedro O.S. Vaz de Melo

Algoritmos de Busca em Tabelas

Árvores Binárias Balanceadas

Estruturas de Dados I

Linguagem C: Árvores Binarias

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

Trabalho 3: Agenda de Tarefas

DICIONÁRIOS. template<class K,class T> class Par { public: K chave; T valor; Par():chave(),valor()

Pragmática das Linguagens de Programação 2004/2005

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

O dono de uma livraria cuja base de dados é administrada por si pediu-lhe para efectuar as seguintes alterações ao preço dos livros:

Funções de um SO. Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção

Algoritmos de Pesquisa e Ordenação em Vectores

O Modelo de Entidades e Relacionamentos (MER) é um modelo conceitual usado para projeto de aplicações de banco de dados.

Árvores Binárias e Busca. Jeane Melo

MICROSOFT ACCESS MICROSOFT ACCESS. Professor Rafael Vieira Professor Rafael Vieira

EXCEL. Listas como Bases de Dados

Grupo I [4v] executaprograma();

5 Caso de estudo O cartão fidelidade

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

Pesquisa Sequencial e Binária

Programação Concorrente em java - Exercícios Práticos Abril 2004

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

Pesquisa digital. Algoritmos e Estruturas de Dados II

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

I. COMO FAZER O REGISTO NA PLATAFORMA MOODLE 3 II. COMO ACEDER (ENTRAR) NO MOODLE DA ESCOLA 1

INF 1010 Estruturas de Dados Avançadas

Árvores Binárias. Observação: Material elaborado a partir do material do Professor Marcos Costa.

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

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

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

Sistemas Operativos 2005/2006. Arquitectura Cliente-Servidor Aplicada A Uma Biblioteca. Paulo Alexandre Fonseca Ferreira Pedro Daniel da Cunha Mendes

Exemplo de aplicação Car Parking 1in1out

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

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

EAmb V.1 ESPOSENDE AMBIENTE. GestProcessos Online. Manual do Utilizador

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

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

Métodos Computacionais. Árvores

Sistemas de Arquivos. André Luiz da Costa Carvalho

LeYa Educação Digital

Conceitos importantes

Tabelas Hash. Jeane Melo

Algoritmos e Estruturas de Dados I. Arquivos. Pedro O.S. Vaz de Melo

Grupo I [4v] b. [0,6v] De que forma é que o escalonador do Linux tenta minimizar o impacto desta limitação?

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

Base de dados I. Uma base de dados é um simples repositório de informação relacionado com um determinado assunto ou finalidade

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

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

Coleções. Page 1. Coleções. Prof. Anderson Augustinho Uniandrade

Transcrição:

Pesquisa Pesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) Ficheiro (ou tabela) Campos Nome Endereço Telefone Antunes, João A. R. P. António Viera, 23 720456 Baptista, Vitor C. R. Carlos Seixas, 9, 6º 705423 Melo, Eurico R. Quinta Nova, L12, B 346512 Registos Pereira, Maria A. Lrg. da Portagem, 12, 4º 20345 Silva, José A. R. das Padeira, 23, 3º 816524 Ficheiro de tamanho n: sequência de n items r(1), r(2), r(3)... r(n) designados por registos Registos: divididos em campos (no ex: nome, endereço, telefone) António José Mendes - Programação e Algoritmos II 210 Chave A cada registo está associada uma chave, que serve para diferenciar os registos; A associação de uma chave a um registo pode ser simples ou complexa; Na sua forma mais simples, a chave consiste num dos campos do registo; Uma outra alternativa consiste numa tabela separada contendo as chaves e os ponteiros para os registos respectivos. Chave primária: quando todos os registos têm uma chave diferente Chave secundária: quando há mais do que um registo com a mesma chave António José Mendes - Programação e Algoritmos II 211 1

Algoritmos de pesquisa Algoritmo de pesquisa: aceita uma chave a e tenta encontrar um registo cuja chave seja igual a a. Todo o registo, ou Devolve Um ponteiro para o registo, ou Registo vazio ou ponteiro nulo no caso de não ter sido encontrado nenhum registo para a chave fornecida Algoritmo de pesquisa e inserção: no caso da pesquisa não ser bem sucedida insere na tabela o registo correspondente à chave pesquisada. António José Mendes - Programação e Algoritmos II 212 Organização dos ficheiros Os ficheiros (ou tabelas) podem estar organizados de diversas formas: array lista ligada árvore outras... Em regra, uma dada técnica de pesquisa pressupõe também uma forma específica de organização do ficheiro Pesquisa interna: todo o ficheiro está em memória central Pesquisa externa: o ficheiro (ou parte) está em memória secundária. António José Mendes - Programação e Algoritmos II 213 2

Pesquisa sequencial Aplicável a uma tabela (organizada como um array ou como uma lista ligada ). Seja K uma array de n chaves e r um array de registos tal que k(i) é a chave de r(i); Seja o argumento de pesquisa chave; A variável pesquisa conterá o menor inteiro i tal que k(i)=chave, se i existir, e conterá -1 se i não existir. static int pesquisa_seq (int t[], int chave, int n) { int j; for (j = 0; j < n; j++) if (chave == t[j]) return (j); return (-1); } António José Mendes - Programação e Algoritmos II 214 Eficiência da pesquisa sequencial O número de comparações necessário para encontrar um registo numa tabela de dimensão n é, obviamente, dependente da posição do registo na tabela (1 comparação para o 1º registo; n para o último). Em média, o número de comparações é (n + 1)/2 É possível diminuir o número médio de comparações colocando os registos acedidos mais frequentemente no início da tabela António José Mendes - Programação e Algoritmos II 215 3

Pesquisa numa tabela ordenada O ordenamento da tabela de chaves (e da tabela de registos), por ordem crescente ou decrescente, permite tornar as pesquisas muito mais eficientes. Existem diversas técnicas para tirar partido da ordenação, tornando as pesquisas mais rápidas. Algumas das técnicas, no entanto, impõem que o tamanho da tabela seja fixo, ou, pelo menos, tornam-se muito complexas se o tamanho da tabela variar. Uma vantagem imediata da ordenação obtêm-se no caso em que o elemento pesquisado não faz parte da tabela. Numa tabela não ordenada são necessárias n comparações para concluir que o elemento não existe, enquanto que numa tabela ordenada bastam n/2 (em média), assumindo que as chaves a pesquisar se distribuem uniformemente. António José Mendes - Programação e Algoritmos II 216 Pesquisa sequencial indexada Método para melhorar a eficiência da pesquisa numa tabela ordenada por ordem crescente É criada uma tabela auxiliar ordenada por ordem crescente da chave (tal como a tabela principal) Cada elemento da tabela de índices consiste num chave (Kindice) e num ponteiro para o registo da tabela que corresponde a Kindice A tabela de índices tem 1/m do tamanho da tabela principal. No exemplo m = 8, ou seja a tabela índice tem 1/8 do tamanho da principal. Os registos representados na tabela de índices estão espaçados de m em m. Kindice Índice Pindice k (Chave) António José Mendes - Programação e Algoritmos II 217 8 14 26 38 72 115 306 329 387 409 512 540 567 583 602 611 618 741 798 811 814 r (Registos) 4

Pesquisa sequencial indexada: método Método: A pesquisa é feita primeiro na tabela de índices; Assim que o índice correcto é encontrado a pesquisa continua na tabela principal; Na tabela principal a pesquisa restringe-se a uma pequena zona de tamanho m (8 elementos no exemplo ao lado). Vantagens: Permite reduzir o tempo de pesquisa; É utilizada uma simples pesquisa sequencial. Inconvenientes: Kindice A inserção e o apagamento de novos elementos é mais complicada (utilização de flags no apagamento). Índice Pindice k (Chave) António José Mendes - Programação e Algoritmos II 218 8 14 26 38 72 115 306 329 387 409 512 540 567 583 602 611 618 741 798 811 814 r (Registos) Pesquisa sequencial indexada: tabelas muito grandes Índice Secundário 824 999 Para tabelas muito grandes é possível utilizar várias tabelas de índice Índice Primário 824 923 987 999 k (Chave) 8 14 26 38 72 115 306 329 387 409 512 540 567 583 602 611 618 741 798 811 814 824 836 856 887 891 902 914 917 923 r (Registos) António José Mendes - Programação e Algoritmos II 219 5

Pesquisa binária Método: A chave da pesquisa é comparada com a chave do registo a meio da tabela Se forem iguais -> fim da pesquisa; Se não, continua-se a pesquisa na metade superior ou inferior da tabela, consoante o resultado a chave de pesquisa for maior ou menor do que a chave do registo a meio da tabela; A pesquisa binária pode ser efectuada na tabela principal ou então utilizada conjuntamente com a tabela sequencial indexada. Eficiência: O número máximo de comparações é log 2 n. Limitação: A pesquisa binária só pode ser utilizada se a tabela estiver sob a forma de um array estático. António José Mendes - Programação e Algoritmos II 220 Pesquisa binária static int pesquisa_bin (int t[], int chave, int n) { int low, hi, meio; low = 0; hi = n-1; while (low <= hi) { meio = (low + hi) / 2; if (chave == t[meio]) return (meio); if (chave < t[meio]) hi = meio - 1; else low = meio + 1; } return (-1); } António José Mendes - Programação e Algoritmos II 221 6

Pesquisa em Java O Java API inclui já algumas funções de pesquisa que se encontram na classe java.utils. Arrays Existe uma função binarysearch que implementa o algoritmo de pesquisa binária sobre tabelas de vários tipos Esta função recebe a tabela e a chave a pesquisar António José Mendes - Programação e Algoritmos II 222 7