Tabelas de Dispersão. Estrutura de Dados e Algoritmos

Tamanho: px
Começar a partir da página:

Download "Tabelas de Dispersão. Estrutura de Dados e Algoritmos"

Transcrição

1 Tabelas de Dispersão

2 Tabelas de Dispersão Sumário Definição. Características. Resolução de colisões: dispersão com listas e dispersão aberta. Teste quadrático. Desempenho de tabelas de dispersão. Interface de tabela de dispersão. Implementação de tabela de dispersão fechada com teste quadrático.

3 Tabela de Dispersão items de informação guardados num vector[tamanho] cada chave é mapeada num inteiro entre 0 e Tamanho-1 usada como índice do vector mapeamento é designado por função de hash a função deverá ser fácil de calcular e atribuir a chaves diferentes células diferentes. como o número de chaves é em geral maior que Tamanho o problema torna-se mais complicado O problema reside então em escolher Tamanho, a função de hash e decidir como resolver os casos em que mais que uma chave são mapeadas na mesma célula colisão

4 Tabelas de Dispersão versus Árvores binárias Árvores binárias simples pior caso nas operações de manipulação é O(N) pior caso surge sistematicamente em usos correntes (ex: elementos previamente ordenados) Tabela de dispersão pesquisa baseada na geração de um inteiro a partir da chave tempo médio constante para inserção, remoção e pesquisa não requer gestão de memória especial nem comparação de elementos ocorrência do pior caso tem probabilidade muito baixa Aplicações tabelas de símbolos dos compiladores

5 Resolver colisões - dispersão com listas de encadeamento Manter lista de elementos colocados na mesma entrada 1 lista com cabeçalho em cada entrada da tabela escolhe-se inserção a ocorrer na cabeça ou na cauda da lista

6 Resolver colisões - dispersão aberta Perante colisão procura-se célula alternativa Tenta-se sequência de células H0 (x), H 1 (x), H 2 (x),... Hi (x) = (hash(x) + f(i)) mod TamanhoTabela Teste linear: procurar sequencialmente a partir de H 0 primeira posição livre a seguir à inicial H 0 é usada tenta-se H 0+1, H 0+2,... pesquisa dá a volta no fim da tabela Teste quadrático procurar próxima posição livre a seguir a H com passo quadrático tenta-se H 0+1, H 0+2 2, H 0+3 2,... é preciso garantir que se pode percorrer a tabela toda Hashing duplo usar f(x) = i*hash2 (x)

7 Desempenho com Dispersão com listas de encadeamento Factor de carga λ razão entre o número de elementos na tabela e o tamanho da tabela Dispersão com listas de encadeamento comprimento médio de cada lista é λ tempo médio de pesquisa: avaliação da função de dispersão + percurso na lista pesquisa sem sucesso: número médio de ligações a percorrer é λ pesquisa com sucesso: número médio de ligações a percorrer é 1 + λ/2 bom desempenho para λ próximo de 1

8 Desempenho com Dispersão aberta Dispersão aberta com função linear número de tentativas para inserção e para pesquisa sem sucesso: 1/2 (1 + 1/(1- λ)2) número de tentativas para pesquisa com sucesso: 1/2 (1 + 1/(1- λ)) caso ideal (sem clustering) número de tentativas para inserção e para pesquisa sem sucesso: 1/(1- λ) número de tentativas para pesquisa com sucesso: 1/ λ ln (1/(1- λ)) função quadrática elimina clustering primário na prática, eficiência próxima do caso ideal clustering secundário λ= 0.2 Ins, Falha: 1.3 Sucesso: 1.1 λ= 0.8 Ins, Falha: 13 Sucesso: 3 λ= 0.2 Ins, Falha: 1.3 Sucesso: 1.1 λ= 0.8 Ins, Falha: 5.0 Sucesso: 2.0

9 Dispersão com Teste Linear exemplo hash(x) = x mod 10 f(i) = i vazia após 89 após 18 após 49 após 58 após Data Structures & Algorithm Analysis in Java, Weiss

10 Dispersão com Teste Quadrático Teorema Usando teste quadrático e uma tabela cujo tamanho é um número primo, um novo elemento pode sempre ser inserido se a tabela não estiver preenchida a mais de 50% Mostra-se que as primeiras Tam/2 posições alternativas são todas distintas, por redução ao absurdo h(x) + i 2 (mod Tam) = h(x) + j 2 (mod Tam) com i j e 0 < i,j < Tam/2 h(x) + i 2 = h(x) + j 2 (mod Tam) i 2 = j 2 (mod Tam) i 2 - j 2 = 0 (mod Tam) (i-j)(i+j) = 0 (mod Tam) (o mesmo que (i-j)(i+j) = k Tam) Sendo Tam número primo, (i-j) ou (i+j) tem de ser 0 (mod Tam). Sendo i e j distintos, (i-j) não é 0; sendo 0 < i,j < Tam/2, (i+j) também não é 0. Então as primeiras Tam/2 posições alternativas são distintas

11 Dispersão com Teste Quadrático Teorema A geração de posições alternativas no teste quadrático pode ser feita com apenas uma multiplicação Seja H 0 a posição inicial, H i 1 a última posição calculada e H i a próxima H i = H 0 + i 2 (mod Tam) H i 1 = H 0 + (i-1) 2 (mod Tam) H i - H i 1 = i 2 - (i-1) 2 (mod Tam) H i = H i 1 + 2i - 1 (mod Tam) O valor de H i pode assim ser obtido sem operações pesadas de multiplicação Para calcular o mod: 2i-1 é menor que Tam H i 1 + 2i - 1 ou é menor que Tam (caso em que o mod se dispensa) ou é pouco maior que Tam (caso em que o mod se reduz a subtrair Tam)

12 Dispersão com Teste Quadrático exemplo hash(x) = x mod 10 f(i) = i 2 vazia após 89 após 18 após 49 após 58 após Data Structures & Algorithm Analysis in Java, Weiss

13 Dispersão com Teste Quadrático exemplo hash(x) = x mod 10 ; f(i) = i* hash 2(x) ; hash 2(x)= 7 - (x mod 7) vazia após 89 após 18 após 49 após 58 após Data Structures & Algorithm Analysis in Java, Weiss

14 Rehasing aumentar o tamanho da tabela para o menor número primo superior a 2 * tamanho actual preciso copiar todos os elementos não removidos para o novo vector com a nova função (O(N)) o programador não se preocupa com o tamanho da tabela é preciso estabelecer um critério para decidir quando copiar

15 Interface de Tabela de Dispersão public interface HashTable{ /* * Insert into the hash table. If the item is * already present, then replace it with the new item. */ void insert(hashable x); /* Remove from the hash table */ void remove(hashable x) throws ItemNotFound; /* Find an item in the hash table */ Hashable find(hashable x) throws ItemNotFound; void makeempty();

16 Entrada de Tabela de Dispersão class HashEntry{ Hashable element; // the element boolean isactive; // false is deleted public HashEntry(Hashable e){ this(e, true); public HashEntry(Hashable e, boolean i){ element = e; isactive = i;

17 Implementação de Tabela de Dispersão public abstract class ProbingHashTable implements HashTable{ private static final int DEFAULT TABLE SIZE = 11; protected HashEntry [] array; // The array of elements private int currentsize; // The number of occupied cells /** * Abstract method that performs collision resolution. * Each class must override this method only. */ protected abstract int findpos(hashable x); public ProbingHashTable(){ allocatearray(default TABLE SIZE); makeempty();

18 Implementação de Tabela de Dispersão public final void insert(hashable x){ int currentpos = findpos(x); array[currentpos] = new HashEntry(x, true); if(++currentsize < array.length / 2) return; // REHASHING CODE // Save old table HashEntry [] oldarray = array; // Create a new double-sized, empty table allocatearray(nextprime(2 * oldarray.length)); currentsize = 0; // Copy table over for(int i = 0; i < oldarray.length; i++) if(oldarray[ i ]!= null && oldarray[ i ].isactive) insert(oldarray[ i ].element); return;

19 Implementação de Tabela de Dispersão public final void remove(hashable x) throws ItemNotFound{ int currentpos = findpos(x); assertfound(currentpos, ProbingHashTable remove ); array[currentpos].isactive = false; public final Hashable find(hashable x) throws ItemNotFound{ int currentpos = findpos(x); assertfound(currentpos, ProbingHashTable find ); return array[currentpos].element; private final void assertfound(int currentpos, String message) throws ItemNotFound{ if(array[currentpos] == null!array[currentpos].isactive) throw new ItemNotFound(message);

20 Implementação de Tabela de Dispersão public final void makeempty(){ currentsize = 0; for(int i = 0; i < array.length; i++) array[i] = null; public final static int hash(string key, int tablesize){ int hashval = 0; for(int i = 0; i < key.length(); i++) hashval = 37 * hashval + key.charat(i); hashval %= tablesize; if(hashval < 0) hashval += tablesize; return hashval;

21 Dispersão com teste quadrático public class QuadraticProbingTable extends ProbingHashTable{ protected final int findpos(hashable x){ int collisionnum = 0; int currentpos = x.hash(array.length); while(array[currentpos]!= null &&!array[ currentpos ].element.equals(x)){ currentpos += 2 * ++collisionnum - 1; // Compute ith probe if(currentpos >= array.length) // Implement the mod currentpos -= array.length; return currentpos;

22 Dispersão com teste quadrático public static void main(string [] args){ HashTable H = new QuadraticProbingTable(); final int NUMS = 4000; final int GAP = 37; System.out.println( Checking... no more output means success) ); try{... catch(exceptions.itemnotfound e){ System.out.println(e); try{ for(int i = GAP; i!= 0; i = (i + GAP) % NUMS) H.insert(new MyInteger(i)); for(int i = 1; i < NUMS; i+= 2) H.remove(new MyInteger(i)); for(int i = 2; i < NUMS; i+=2) H.find(new MyInteger(i)); for(int i = 1; i < NUMS; i+=2){ try{ System.out.println( OOPS!!! + H.find(new MyInteger(i))); catch(exceptions.itemnotfound e){

Tabelas de Dispersão. Tabela de Dispersão

Tabelas de Dispersão. Tabela de Dispersão Tabelas de Dispersão Sumário Definição. Características. Resolução de colisões: dispersão aberta e dispersão fechada. Teste quadrático. Desempenho de tabelas de dispersão. Interface de tabela de dispersão.

Leia mais

pior caso nas operações de manipulação é O(N) pior caso surge sistematicamente emusos correntes (ex: elementos previamente ordenados)

pior caso nas operações de manipulação é O(N) pior caso surge sistematicamente emusos correntes (ex: elementos previamente ordenados) Tabelas de Dispersão (Hash( Tables) Sumário Definição. Características. Resolução de colisões: dispersão aberta e dispersão fechada. Teste quadrático. Desempenho de tabelas de dispersão. Interface de tabela

Leia mais

Algoritmos e Estruturas de Dados 2005/2006

Algoritmos e Estruturas de Dados 2005/2006 Tabelas de dispersão Algoritmos e Estruturas de Dados 2005/200 Tabela de dispersão Uma tabela de dispersão é um vector de tamanho fixo em que os elementos são colocados em na posição determinada por uma

Leia mais

Algoritmos e Estruturas de Dados 2008/2009

Algoritmos e Estruturas de Dados 2008/2009 Algoritmos e Estruturas de Dados 2008/2009 Tabela de dispersão Uma tabela de dispersão é um vector de tamanho fixo em que os elementos são colocados em na posição determinada por uma função denominada

Leia mais

Capítulo VIII. Tipo Abstracto de Dados Dicionário. Acesso por Chave

Capítulo VIII. Tipo Abstracto de Dados Dicionário. Acesso por Chave Capítulo VIII Tipo Abstracto de Dados Dicionário Acesso por Chave Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 1 Interface Dicionário (K,V) (1) package datastructures; public interface Dictionary

Leia mais

Tabelas de dispersão

Tabelas de dispersão Tabelas de dispersão FEUP - MIEEC Programação 2-2008/2009 Tabelas de dispersão Uma tabela de dispersão é um vector de tamanho fixo em que os elementos são colocados na posição determinada por uma função

Leia mais

Algoritmos de pesquisa. Tabelas de dispersão/hash

Algoritmos de pesquisa. Tabelas de dispersão/hash Algoritmos de pesquisa Tabelas de dispersão/hash Introdução Motivação: Considerar o problema de pesquisar um determinado valor num vetor. Se o vetor não está ordenado, a pesquisa requer O(n) de complexidade.

Leia mais

Tabelas de Dispersão. Algoritmos e Estruturas de Dados Verão Cátia Vaz 1

Tabelas de Dispersão. Algoritmos e Estruturas de Dados Verão Cátia Vaz 1 Tabelas de Dispersão Algoritmos e Estruturas de Dados Verão 2012 1 Tabelas de endereçamento directo Endereçamento directo é usado quando o universo de chaves é pequeno e todas as chaves são distintas:

Leia mais

capta a noção elementar de ordemde chegada no processamento de tarefas, além da ordem de chegada é típico atender à prioridade

capta a noção elementar de ordemde chegada no processamento de tarefas, além da ordem de chegada é típico atender à prioridade Fila de Prioridade (1) Fila capta a noção elementar de ordemde chegada no processamento de tarefas, além da ordem de chegada é típico atender à prioridade Fila de prioridade objectos na fila têmum número

Leia mais

TABELAS DE DISPERSÃO/HASH

TABELAS DE DISPERSÃO/HASH 1/47 TABELAS DE DISPERSÃO/HASH Introdução 2/47 Introdução Motivação - Considerar o problema de pesquisar um determinado valor num vetor: - Se o vetor não está ordenado, a pesquisa requer O(n) de complexidade

Leia mais

Dicionários. TAD Orientado a conteúdo

Dicionários. TAD Orientado a conteúdo Dicionários TAD Orientado a conteúdo Dicionários efinição: Tipo abstrato de dados orientado a onteúdo. Contrasta com as PILHAs e FILAs que são orientadas a posição. perações implementadas: Inserir(d,x)

Leia mais

ESTRUTURAS DE DADOS E ALGORITMOS TABELA HASH

ESTRUTURAS DE DADOS E ALGORITMOS TABELA HASH ESTRUTURAS DE DADOS E ALGORITMOS 1 TABELA HASH Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande ESTRUTURAS VISTAS ATÉ AGORA Busca O(n) Busca O(log(n)) 2 É

Leia mais

Tabelas Hash O Que é uma Tabela Hash? O Que é uma Tabela Hash? O Que é uma Tabela Hash? Inserindo um Novo Registro. O Que é uma Tabela Hash?

Tabelas Hash O Que é uma Tabela Hash? O Que é uma Tabela Hash? O Que é uma Tabela Hash? Inserindo um Novo Registro. O Que é uma Tabela Hash? Tabelas Hash O Que é uma Tabela Hash? Nesta aula são discutidos modos de armazenar informações em um vetor, e depois procurar por uma informação Tabelas Hash constituem uma abordagem comum para o problema

Leia mais

Prof. Jesus José de Oliveira Neto

Prof. Jesus José de Oliveira Neto Prof. Jesus José de Oliveira Neto Encapsulam a representação dos dados e as operações que podem ser realizadas sobre eles Usuário do TAD vs. programador do TAD Usuário só enxerga a interface, não a implementação

Leia mais

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra

Leia mais

Tipos, Literais, Operadores

Tipos, Literais, Operadores Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não

Leia mais

Tipos, Literais, Operadores

Tipos, Literais, Operadores Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não

Leia mais

Vamos considerar um arquivo de dados que armazena uma lista de alunos. Cada registro é um objeto com um número de matrícula e um nome.

Vamos considerar um arquivo de dados que armazena uma lista de alunos. Cada registro é um objeto com um número de matrícula e um nome. Tabelas de dispersão Vamos considerar um arquivo de dados que armazena uma lista de alunos. Cada registro é um objeto com um número de matrícula e um nome. A tabela está sujeita a dois tipos de operação:

Leia mais

Análise da Complexidade de Algoritmos

Análise da Complexidade de Algoritmos Análise da Complexidade de Algoritmos (revisões) Algoritmos e Estruturas de Dados II Licenciatura em Engenharia Informática e Computação www.fe.up.pt/ rcamacho/cadeiras/aed2 LIACC/FEUP Universidade do

Leia mais

HASHING HASHING 6/10/2008

HASHING HASHING 6/10/2008 Hashing é uma técnica que busca realizar as operações de inserção, remoção e busca em tempo constante. Motivação - Acesso Direto: Suponha que existam n chaves a serem armazenadas em uma tabela T, seqüencial

Leia mais

TAD dicionário. Métodos do TAD dicionário:

TAD dicionário. Métodos do TAD dicionário: TAD dicionário O TAD dicionário modela uma coleção buscável de itens chave-elemento As principais operações em dicionários são busca, inserção e remoção de itens Vários itens com a mesma chave são permitidos

Leia mais

Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou

Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou também denominada de tabela hashing com endereçamento aberto.

Leia mais

Programação Estruturada e Orientada a Objetos

Programação Estruturada e Orientada a Objetos INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br

Leia mais

Orientação a Objetos AULA 09

Orientação a Objetos AULA 09 Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este

Leia mais

Tabela Hash. Prof. Msc. Mariella Berger

Tabela Hash. Prof. Msc. Mariella Berger Tabela Hash Prof. Msc. Mariella Berger http://www.inf.ufes.br/~mberger mberger@inf.ufes.br mariellaberger@gmail.com HASHING Suponha que você pudesse criar um array onde qualquer item pudesse ser localizado

Leia mais

TABELA HASH. Prof. André Backes. Princípio de funcionamento dos métodos de busca

TABELA HASH. Prof. André Backes. Princípio de funcionamento dos métodos de busca TABELA HASH Prof. André Backes Problema 2 Princípio de funcionamento dos métodos de busca Procurar a informação desejada com base na comparação de suas chaves, isto é com base em algum valor que a compõe

Leia mais

ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA (ABORDAGEM RECURSIVA)

ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA (ABORDAGEM RECURSIVA) ESTRUTURAS DE DADOS E ALGORITMOS 1 LISTA LIGADA (ABORDAGEM RECURSIVA) Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande QUESTÕES DE IMPLEMENTAÇÃO Implementacao

Leia mais

Tabelas de dispersão/hash

Tabelas de dispersão/hash Tabelas de dispersão/hash 1 Tabelas de dispersão/hash 1. Considere uma tabela de hash de tamanho m = 1000 e a função de hash h(k)= [m.(k.a % 1)], com A=( 5-1)/2. Calcule os valores de hash das chaves 61,

Leia mais

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões Edital de Seleção 024/2017 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: «Nome» INSCRIÇÃO: «Inscrição» Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome

Leia mais

Implemente a função de remoção de uma chave na tabela hashing fechada em questão. void remover(tabela tabela, int n) {

Implemente a função de remoção de uma chave na tabela hashing fechada em questão. void remover(tabela tabela, int n) { Implemente a função de remoção de uma chave na tabela hashing fechada em questão. void remover(tabela tabela, int n) { } Tabelas de hash fechada: Exercício int posicao = buscar(tabela, n); if (posicao

Leia mais

Interfaces POO. Prof. Marcio Delamaro

Interfaces POO. Prof. Marcio Delamaro Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso

Leia mais

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins Prova PMR0 o semestre 0 Prof Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço ( pontos) Uma árvore binária de busca é uma árvore binária na qual para qualquer sub-árvore

Leia mais

ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA

ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA ESTRUTURAS DE DADOS E ALGORITMOS 1 LISTA LIGADA Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande LISTA LIGADA (LINKED LIST) É uma estrutura de dados em que

Leia mais

Java Collections Framework II

Java Collections Framework II Java Collections Framework II Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4 Gilad Bracha, Generics in the Java Programming Language a.k.a The

Leia mais

Programação Orientada a Objetos II JAVA Décima Aula. Prof. Rogério Albuquerque de Almeida

Programação Orientada a Objetos II JAVA Décima Aula. Prof. Rogério Albuquerque de Almeida Programação Orientada a Objetos II JAVA Décima Aula Prof. Rogério Albuquerque de Almeida 1 Programação Orientada a Objeto II Introdução à Estruturas de Dados Alocação Dinâmica Listas, pilhas e filas Construção

Leia mais

Agenda. Ideia. Buscar um item em um array. Função hash. Função hash. Hash Table. Introdução Definição Hash Table. Métodos de resolução de conflitos

Agenda. Ideia. Buscar um item em um array. Função hash. Função hash. Hash Table. Introdução Definição Hash Table. Métodos de resolução de conflitos Agenda joao@uefs.br Introdução Definição função hash Kpo abstrato de dados Métodos de resolução de conflitos lista encadeada endereçamento aberto Departamento de Ciências Exatas niversidade Estadual de

Leia mais

Hashing. Prof. Josenildo Silva IFMA 2014

Hashing. Prof. Josenildo Silva IFMA 2014 Hashing Prof. Josenildo Silva jcsilva@ifma.edu.br IFMA 2014 Esta versão é de 2014.11.08 2012-2014, Prof. Josenildo Silva. (jcsilva@ifma.edu.br) Estas notas de aula foram preparadas por Josenildo Silva

Leia mais

Árvores Binárias de Pesquisa

Árvores Binárias de Pesquisa Árvores Binárias de Pesquisa (revisões) Algoritmos e Estruturas de Dados II Licenciatura em Engenharia Informática e Computação www.fe.up.pt/ rcamacho/cadeiras/aed2 LIACC/FEUP Universidade do Porto rcamacho@fe.up.pt

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Exame Época Normal Resolução 13/junho/2015 A. [3.5 val] Algoritmos de ordenação e de pesquisa Considere-se as

Leia mais

Coleções. João Paulo Q. dos Santos

Coleções. João Paulo Q. dos Santos Coleções João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre coleções; Tipos de coleções; Como são classificadas; Exemplos. 04/02/14 2 Coleções Classes e interfaces do pacote java.util

Leia mais

Estrututas de Dados e Algoritmos. Estrutura de Dados e Algoritmos

Estrututas de Dados e Algoritmos. Estrutura de Dados e Algoritmos Estruturas de Dados e Algoritmos Algoritmos conceitos básicos Algoritmo: Sequência de passos simples, claramente especificada, para resolver um determinado problema. Uma receita. Problemas e Algoritmos

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Programação II 1º Semestre Frequência 2 Resolução 07/01/2019 1. [1,25 val] - Análise de Complexidade dos Algoritmos Considere o seguinte bloco de código em linguagem C: for

Leia mais

Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins

Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Os códigos fornecidos na seção Códigos-fonte de apoio podem ser referenciados

Leia mais

i a[i]

i a[i] Técnicas de Hashing Outra forma de se fazer busca em uma tabela, é construir-se a tabela de forma a facilitar a busca, colocando-se cada elemento numa posição pré-determinada. Tal posição é obtida aplicando-se

Leia mais

Hashing. Rafael Nunes LABSCI-UFMG

Hashing. Rafael Nunes LABSCI-UFMG Hashing Rafael Nunes LABSCI-UFMG Sumário Mapeamento Hashing Porque utilizar? Colisões Encadeamento Separado Endereçamento Aberto Linear Probing Double Hashing Remoção Expansão Quando não usar! Mapeamento

Leia mais

TABELAS HASH. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

TABELAS HASH. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos TABELAS HASH Vanessa Braganholo Estruturas de Dados e Seus Algoritmos MOTIVAÇÃO Alternativas para acelerar buscas em grandes volumes de dados: Usar um índice (ex. Árvore B, Árvore B+) Usar cálculo de endereço

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa

Leia mais

Unidade: Tabela Hash e Grafos. Unidade I:

Unidade: Tabela Hash e Grafos. Unidade I: Unidade I: 0 Unidade: Tabela Hash e Grafos 1 Tabelas Hash Um dos maiores problemas encontrados quando se estuda a alocação de estruturas de dados é o tempo de resposta da pesquisa de uma chave em um conjunto

Leia mais

HASHING Hashing Motivação - Acesso Direto:

HASHING Hashing Motivação - Acesso Direto: Hashing é uma técnica que busca realizar as operações de inserção, remoção e busca em tempo constante. Motivação - Acesso Direto: Suponha que existam n chaves a serem armazenadas em uma tabela T, seqüencial

Leia mais

Listas Lineares Ordenadas

Listas Lineares Ordenadas Listas Lineares Ordenadas Algoritmos e Estruturas de Dados I Nesta apresentação será apresentado o ADT lista linear ordenada Uma lista linear ordenada, ou simplesmente lista ordenada há uma ordem entre

Leia mais

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que: Tabelas Hash Tabelas Hash O uso de listas ou árvores para organizar informações é interessante e produz bons resultados. Porem, em nenhuma dessas estruturas se obtém o acesso direto a alguma informação,

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 05 Padrões GoF (Singleton e Iterator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype

Leia mais

ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 DICIONÁRIO. Armanda Rodrigues 6 de Outubro 2011

ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 DICIONÁRIO. Armanda Rodrigues 6 de Outubro 2011 ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 DICIONÁRIO Armanda Rodrigues 6 de Outubro 2011 2 Guardar todos os documentos da biblioteca Vamos voltar ao nosso exemplo da biblioteca Os utilizadores do sistema

Leia mais

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

Prova Substitutiva PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins Prova Substitutiva PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. 1. (20 pontos) Considere a classe HashSep que implementa uma

Leia mais

FILAS. As coisas de que uma fila é feita serão chamadas itens. Os itens podem ser números, strings, structs, etc., etc.

FILAS. As coisas de que uma fila é feita serão chamadas itens. Os itens podem ser números, strings, structs, etc., etc. KATIA LIMA FILAS RAFAEL DA SILVA REIAS JEFFERSON DA SILVA OLIVEIRA RAFFAELA LEITE SANTANA EXISTEM MUITOS EXEMPLOS DE FILA NO MUNDO REAL: UMA FILA DE BANCO; NO PONTO DE ÔNIBUS; UM GRUPO DE CARROS AGUARDANDO

Leia mais

Estrutura de Dados Listas

Estrutura de Dados Listas Universidade Federal da Paraíba Centro de Informática Departamento de Informática Estrutura de Dados Listas 1 Tiago Maritan tiago@ci.ufpb.br Conteúdos Abordados O Conceito de Listas Listas com Representação

Leia mais

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java Guia da Sintaxe do Java TIPOS PRIMITIVOS DE DADOS DO JAVA São os tipos nativos de dados do Java, que podem ser usados na declaração de atributos, variáveis, parâmetros. Tipo primitivo Tamanho Valor padrão

Leia mais

AED 2002/2003 p.1/16. Tabelas de Dispersão. Funçoes de dispersão Encadeamento externo Procura linear Double hashing Eficiência da procura

AED 2002/2003 p.1/16. Tabelas de Dispersão. Funçoes de dispersão Encadeamento externo Procura linear Double hashing Eficiência da procura AED 2002/2003 p.1/16 Tabelas de Dispersão Funçoes de dispersão Encadeamento externo Procura linear Double hashing Eficiência da procura AED 2002/2003 p.2/16 Funções de dispersão Deve distribuir as chaves

Leia mais

Dicionários. Prof. César Melo

Dicionários. Prof. César Melo Dicionários Prof. César Melo Definição Estruturas que permitem a recuperação da informação a partir do seu valor; Contrasta com filas e pilhas que é posicional; Três operações: Inserção(k, d), chave k;

Leia mais

Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes Árvores Fabrício J. Barth BandTec - Faculdade de Tecnologia Bandeirantes Setembro de 2011 Tópicos Introdução Árvores binárias Implementação em Java Ordens de percurso em árvores binárias Altura de uma

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Criando objeto Definindo valores para os atributos do objeto Método construtor Definindo valores padrão para os atributos dos

Leia mais

Introdução a árvores AVL. Prof. Ernesto Lindstaedt

Introdução a árvores AVL. Prof. Ernesto Lindstaedt Introdução a árvores AVL Prof. Ernesto Lindstaedt Definição O nome AVL vem dos seus criadores Adelson Velsky e Landis (1962); Uma ABP T é denominada AVL se: Para todos nós de T,, as alturas de suas duas

Leia mais

Tipos Abstractos de Dados (TADs) e Java

Tipos Abstractos de Dados (TADs) e Java Tipos Abstractos de Dados (TADs) e Java Neste capítulo apresentamos a metodologia de desenvolvimento dos TADs em Java, introduzimos o conceito de estrutura linear e sua implementação utilizando a estrutura

Leia mais

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I

Tabelas Hash. Prof. Túlio Toffolo  BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I Tabelas Hash Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I Pesquisa em Memória Primária Introdução - Conceitos Básicos Pesquisa Sequencial Pesquisa

Leia mais

Endereçamento Aberto

Endereçamento Aberto Endereçamento Aberto ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 11/2008 Material baseado em slides

Leia mais

Filas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013

Filas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013 Filas de prioridade Marcelo K. Albertini de Dezembro de / Filas de prioridade O que é uma fila de prioridade? Estrutura de dados que generaliza a ideia de ordenação. Coleções de elementos: inserir e remover

Leia mais

LEIC-FEUP 2001/2002 Algoritmos e Estruturas de Dados 1. Árvores-1

LEIC-FEUP 2001/2002 Algoritmos e Estruturas de Dados 1. Árvores-1 Sumário Árvores Definições Árvore binária Nó de árvore Implementação Iteradores de árvore pré-ordem, pós-ordem, in-ordem Árvore de pesquisa binária Nó de árvore Implementação Árvore com nível Árvores Conjunto

Leia mais

Hashing: conceitos. Hashing

Hashing: conceitos. Hashing Hashing: conceitos hashing é uma técnica conhecida como espalhamento, mapeamento ou randomização que tenta distribuir dados em posições aleatórias de uma tabela (array) associa cada objeto (de um determinado

Leia mais

Prova 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins

Prova 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins Prova PMR00 o. semestre 0 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço.. ( pontos) Um heap binário é uma árvore binária completa (todos os níveis exceto o último

Leia mais

Paradigmas da Programação PPROG. Linguagem JAVA. Contentores de Objetos

Paradigmas da Programação PPROG. Linguagem JAVA. Contentores de Objetos PPROG Paradigmas da Programação Linguagem JAVA Contentores de Objetos Nelson Freire (ISEP DEI-PPROG 2012/13) 1/33 Contentores Sumário Noção de Contentor Categorias de Contentores Conjunto Lista Fila de

Leia mais

Algoritmos probabilísticos

Algoritmos probabilísticos Algoritmos probabilísticos Na execução, algumas decisões usam números aleatórios Tempo de execução depende não só da entrada mas também de números aleatórios gerados Eficiência: pior caso é o mesmo ue

Leia mais

Tabelas de Dispersão - Introdução (1)

Tabelas de Dispersão - Introdução (1) Algoritmos e Estruturas de Dados LEE 2013/14 Tabelas de Dispersão Tabelas de Dispersão - Introdução (1) As tabelas de dispersão (hash tables) são estruturas de dados adequadas para: Tabelas de símbolos

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou

Leia mais

Prof. Rogério Rocha 1

Prof. Rogério Rocha  1 Uma estrutura de dados é um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente. Diferentes tipos de estrutura de dados são adequados a

Leia mais

Matemática Discreta 12

Matemática Discreta 12 Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Matemática Discreta 12 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br - www.univasf.edu.br/~jorge.cavalcanti 1 Introdução

Leia mais

1) Responda de acordo com os conceitos de orientação a objetos (0,5).

1) Responda de acordo com os conceitos de orientação a objetos (0,5). Avalição II (Teórica) 22/06/2017 Disciplina Linguagem de Programação II Prof. Wagner, dos Santos C. de Jesus Curso Engenharia da Computação Questões Solução da Avaliação 1) Responda de acordo com os conceitos

Leia mais

Palavras Reservadas da Linguagem Java

Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de

Leia mais

Programação Orientada por Objectos 2010/11. 2º Exame 28 de Junho de 2011

Programação Orientada por Objectos 2010/11. 2º Exame 28 de Junho de 2011 Programação Orientada por Objectos 2010/11 2º Exame 28 de Junho de 2011 Instruções (leia com cuidado): Escreva de forma CLARA o seu nome e número em todas as folhas. O exame contém 8 páginas dividido em

Leia mais

O acesso aos elementos é aleatório, isto é, qualquer elemento numa colecção pode ser acedido realizando uma pesquisa pela chave.

O acesso aos elementos é aleatório, isto é, qualquer elemento numa colecção pode ser acedido realizando uma pesquisa pela chave. DICIONÁRIOS São assim designadas as colecções de elementos em que cada elemento tem um campo chamado chave e não existem valores de chaves repetidos. As operações características que permitem a sua manipulação

Leia mais

Vetores Unimensionais

Vetores Unimensionais Vetores Unimensionais Objetivos Entender a importância e a necessidade do uso de Vetores Definição de Manipulação de Vetores Inserir elementos em um vetor (usando laços ou não) Imprimir elementos de um

Leia mais

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus Curso Disciplina Linguagem de Programação II Curso Engenharia da Computação Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis

Leia mais

Apêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:

Apêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são: Apêndice A Classe Vector A classe Vector permite a representação de um vetor de dados de maneira similar à de um array, visto na disciplina Programação Orientada a Objetos I, mas com maior flexibilidade.

Leia mais

Listas Encadeadas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Listas Encadeadas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes Listas Encadeadas Fabrício J. Barth BandTec - Faculdade de Tecnologia Bandeirantes Fevereiro de 2011 Tópicos Principais Motivação Listas encadeadas Implementações recursivas Listas de tipos estruturados

Leia mais

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc. Sintaxe Geral Tipos de Dados Comentários Comentários: De linha: // comentário 1 // comentário 2 De bloco: /* linha 1 linha 2 linha n */ De documentação: /** linha1 * linha2 */ Programa Exemplo: ExemploComentario.java

Leia mais

Filas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014

Filas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014 Filas de prioridade Marcelo K. Albertini de Novembro de / Filas de prioridade O que é uma fila de prioridade? Estrutura de dados que generaliza a ideia de ordenação. Coleções de elementos: inserir e remover

Leia mais

Tipos Abstractos de Dados

Tipos Abstractos de Dados Tipos Abstractos de Dados Pedro Ribeiro DCC/FCUP 2017/2018 (baseado e/ou inspirado parcialmente nos slides de Luís Lopes e de Fernando Silva) Pedro Ribeiro (DCC/FCUP) Tipos Abstractos de Dados 2017/2018

Leia mais

Estruturas de Dados Encadeadas

Estruturas de Dados Encadeadas CURSO: Ciência da Computação DATA: / / 2016 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 14 APRESENTAÇÃO Na aula de hoje vamos apresentar e discutir conceitos

Leia mais

Algoritmos e Estruturas de Dados: Tabela de Dispersão com Encadeamento

Algoritmos e Estruturas de Dados: Tabela de Dispersão com Encadeamento Algoritmos e Estruturas de Dados: Tabela de Dispersão com Encadeamento Rômulo Silva de Oliveira Departamento de Automação e Sistemas DAS UFSC romulo@das.ufsc.br http://www.das.ufsc.br/~romulo Maio/011

Leia mais

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010 Filas de prioridade Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010 Qual a Utilidade das Filas de Prioridade? Trabalhos maiores devem ser executados no fim (mesmo que não tenha sido o último

Leia mais

MsC. João Maria MsC. Liviane Melo

MsC. João Maria MsC. Liviane Melo Disciplina: Programação Orientada à Objetos AULA 02 Corpo docente: MsC. Alexandro Vladno Edmilson Campos MsC. Fábio Procópio Esp. Felipe Dantas MsC. João Maria MsC. Liviane Melo 2 Tipo Tamanho Alcance

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos; Fundação CECIERJ - Vice Presidência de Educação Superior a Distância Curso de Tecnologia em Sistemas de Computação Disciplina: Programação Orientada a Objetos AP2 2 semestre de 2016. Nome Assinatura Observações:

Leia mais

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS Professor: Fernando Maia da Mota Orientações Básicas Leia atentamente as instruções para cada questão. A prova deverá ser feita a lápis ou caneta (preta ou azul) em uma folha de rascunho que será fornecida

Leia mais

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Herança. Prof. Fernando V. Paulovich  23 de agosto de 2010 Herança SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação(ICMC) Universidade

Leia mais

Arrays em Java. Introdução à Programação. Bruno Cartaxo

Arrays em Java. Introdução à Programação. Bruno Cartaxo Arrays em Java Introdução à Programação Bruno Cartaxo http://sites.google.com/site/brunocartaxo bruno.cartaxo@olinda.ifpe.edu.br Tópicos a serem discutidos na disciplina Introdução a computadores e algoritmos

Leia mais