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

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

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

Transcrição

1 Capítulo VIII Tipo Abstracto de Dados Dicionário Acesso por Chave Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 1

2 Interface Dicionário (K,V) (1) package datastructures; public interface Dictionary<K,V> // Returns true iff the dictionary contains no entries. boolean isempty( ); // Returns the number of entries in the dictionary. int size( ); // Returns an iterator of the entries in the dictionary. Iterator<Entry<K,V>> iterator( ); Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 2

3 Interface Dicionário (K,V) (2) // Returns the value in the dictionary whose key is the specified // key; or null if no such entry exists. V find( K key ); // Inserts the entry (key, value) in the dictionary. // If the dictionary already contained an entry with the specified // key, returns the old value (which is replaced by the specified // value); otherwise, returns null. V insert( K key, V value ); // Removes the entry whose key is the specified key from the // dictionary and returns the associated value, if such entry // exists. Otherwise, returns null. V remove( K key ); } // End of Dictionary. Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 3

4 Interface Entrada (K,V) package datastructures; public interface Entry<K,V> // Returns the key in the entry. K getkey( ); } // Returns the value in the entry. V getvalue( ); Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 4

5 Listas Ligadas (simples ou duplas, sem repetições) Não Ordenadas Ordenadas Pesquisa com sucesso n/2 O(n) n/2 O(n) sem sucesso n O(n) n/2 O(n) Inserção com sucesso n O(n) n/2 O(n) sem sucesso n/2 O(n) n/2 O(n) Remoção com sucesso n/2 O(n) n/2 O(n) sem sucesso n O(n) n/2 O(n) Percurso simples n O(n) n O(n) ordenado O(n log n) n O(n) n: número de entradas do dicionário. Coluna 1: número médio de células visitadas. Coluna 2: complexidade no pior caso e no caso esperado. Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 5

6 Tabela de Dispersão [Luhn 1953, vários ] dispersão : K 0, 1, 2,..., dim 1} dispersão(k) = i k, v 0 i dim 1 Operações Suportadas: Pesquisa, Inserção, Remoção. Complexidade ideal : O(1) Problema (das Colisões) Se #K > dim, existem k 1, k 2 K tais que: k 1 k 2 e dispersão(k 1 ) = dispersão(k 2 ). Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 6

7 Função de Dispersão Objectivos Deve ser eficiente. Deve distribuir as chaves uniformemente por todas as posições da tabela. Regras Práticas A função de dispersão deve ser simples. A dimensão da tabela (dim) deve ser um número primo. Se as chaves são grandes, deve-se considerar apenas uma parte, oriunda de vários pontos. Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 7

8 Cálculo da Função de Dispersão (2 passos) Passo 1: Cada chave sabe calcular o seu código de dispersão. public int hashcode( ); Passo 2: A tabela de dispersão converte o código de dispersão da chave num índice da tabela. Math.abs( key.hashcode() ) % table.length Exemplos de Códigos de Dispersão: Se a chave é um número inteiro n: n. Se a chave é uma cadeia de caracteres s 0 s 1 s n 1 : s 0 + s s n 1 ; (s 0 a n 1 + s 1 a n s n 1 ) % b (com a e b primos). Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 8

9 Regra de Horner (1) códigodisp(s 0 s 1 s n 1 ) = (s 0 a n 1 + s 1 a n s n 1 ) % b v 0; v ( v a + s 0 ) % b = ( s 0 ) % b v ( v a + s 1 ) % b = ( s 0 a + s 1 ) % b v ( v a + s 2 ) % b = ( s 0 a 2 + s 1 a + s 2 ) % b v ( v a + s 3 ) % b = ( s 0 a 3 + s 1 a 2 + s 2 a + s 3 ) % b Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 9

10 Regra de Horner (2) códigodisp(s 0 s 1 s n 1 ) = (s 0 a n 1 + s 1 a n s n 1 ) % b public static int hash( String key ) int a = 127; // a is a prime number. int b = ; // b is a prime number. int hashcode = 0; for ( int i = 0; i < key.length(); i++ ) hashcode = ( hashcode * a + key.charat(i) ) % b; } return hashcode; Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 10

11 Dispersão Aberta (Separate Chaining) Criar: Criar o vector de listas ligadas (do tipo dicionário) e criar todas as listas de colisões (que podem ser simples ou duplas, ordenadas ou desordenadas). Pesquisar k: Pesquisar k no dicionário dispersão(k). Inserir k, v: Inserir k, v no dicionário dispersão(k). Remover k: Remover k do dicionário dispersão(k). Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 11

12 Complexidade da Dispersão Aberta Sejam: n o número de entradas na tabela dim a dimensão da tabela Factor de Ocupação da tabela λ: λ = n dim (λ é o comprimento médio das listas de colisões.) Nota importante: λ deve ser sempre inferior a 1. Pesquisa Melhor Caso Pior Caso Caso Esperado com sucesso O(1) O(n) O(1 + λ) sem sucesso O(1) O(n) O(1 + λ) Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 12

13 Classe Abstracta Tabela de Dispersão (1) package datastructures; public abstract class HashTable<K,V> implements Dictionary<K,V> // Default size of the hash table. protected static final int DEFAULT CAPACITY = 50; // Number of entries in the hash table. protected int currentsize; // Maximum number of entries. protected int maxsize; Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 13

14 Classe Abstracta Tabela de Dispersão (2) // Public Static Methods // Returns the hash code of the specified key, // which is an integer in the range 0,..., b-1. public static int hash( String key ) int a = 127; // a is a prime number. int b = ; // b is a prime number. int hashcode = 0; for ( int i = 0; i < key.length(); i++ ) hashcode = ( hashcode * a + key.charat(i) ) % b; } return hashcode; Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 14

15 Classe Abstracta Tabela de Dispersão (3) // Protected Static Methods // Returns a prime number that is not less than the specified number; // or zero if all such primes are greater than Integer.MAX VALUE. protected static int nextprime( int number ) for ( int i = 0; i < PRIMES.length; i++ ) if ( PRIMES[i] >= number ) return PRIMES[i]; return 0; } protected static final int[] PRIMES = 11, 19, 31, 47, 73,..., , }; Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 15

16 Classe Abstracta Tabela de Dispersão (4) // Public Instance Methods // Returns true iff the dictionary contains no entries. public boolean isempty( ) return currentsize == 0; } // Returns the number of entries in the dictionary. public int size( ) return currentsize; } Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 16

17 Classe Abstracta Tabela de Dispersão (5) // Returns the value in the dictionary whose key is the specified // key; or null if no such entry exists. public abstract V find( K key ); // Inserts the entry (key, value) in the dictionary. // If the dictionary already contained an entry with the specified // key, returns the old value (which is replaced by the specified // value); otherwise, returns null. public abstract V insert( K key, V value ); // Removes the entry whose key is the specified key from the // dictionary and returns the associated value, if such entry // exists. Otherwise, returns null. public abstract V remove( K key ); // Returns an iterator of the entries in the dictionary. public abstract Iterator<Entry<K,V>> iterator( ); Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 17

18 Classe Abstracta Tabela de Dispersão (6) // Protected Instance Methods // Returs true iff the hash table cannot contain more entries. protected boolean isfull( ) return currentsize == maxsize; } } // End of HashTable. Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 18

19 Classe Tabela de Dispersão Aberta (1) package datastructures; public class SepChainHashTable<K extends Comparable<K>, V> extends HashTable<K,V> // The array of dictionaries. protected Dictionary<K,V>[] table; public SepChainHashTable( ) this(default CAPACITY); } Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 19

20 Classe Tabela de Dispersão Aberta (2) public SepChainHashTable( int capacity ) int arraysize = HashTable.nextPrime((int) (1.1 * capacity)); // Compiler gives a warning. table = (Dictionary<K,V>[]) new Dictionary[arraySize]; for ( int i = 0; i < arraysize; i++ ) table[i] = new OrderedDoublyLL<K,V>(); maxsize = capacity; } currentsize = 0; Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 20

21 Classe Tabela de Dispersão Aberta (3) // Returns the hash value of the specified key. protected int hash( K key ) return Math.abs( key.hashcode() ) % table.length; } // Returns the value in the dictionary whose key is the specified // key; or null if no such entry exists. public V find( K key ) return table[ this.hash(key) ].find(key); } Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 21

22 Classe Tabela de Dispersão Aberta (4) // Inserts the entry (key, value) in the dictionary. // If the dictionary already contained an entry with the specified // key, returns the old value (which is replaced by the specified // value); otherwise, returns null. public V insert( K key, V value ) if ( this.isfull() ) this.rehash(); } // Efectua-se a inserção } // End of SepChainHashTable. Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 22

23 Dispersão Fechada (Open Addressing) dispersão : K 0, 1, 2,..., dim 1} dispersão(k) = i k, v dispersão(k ) = i 0 i dim 1 Na pesquisa da chave k, quando a posição da tabela indicada pela função de dispersão dispersão(k ) já está ocupada com uma entrada cuja chave é diferente de k, recorre-se a uma segunda função a função de sondagem que indica outra posição da tabela. Visitam-se as posições p 0 (k ), p 1 (k ), p 2 (k ),... tais que: p j (k ) = ( dispersão(k ) + sondagem(j) ) % dim tendo-se sempre sondagem(0) = 0. Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 23

24 Sondagem Linear (Linear Probing) sondagem(j) = j sondagem(0) = 0 p 0 = ( dispersão(k) + 0 ) % dim sondagem(1) = 1 p 1 = ( dispersão(k) + 1 ) % dim sondagem(2) = 2 p 2 = ( dispersão(k) + 2 ) % dim sondagem(3) = 3 p 3 = ( dispersão(k) + 3 ) % dim Primeira Posição: pos dispersão(k); } Posição Seguinte: pos (pos + 1) % dim; } Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 24

25 Sondagem Linear Exemplo dim = 7 e dispersão(n) = n % dispersão(5) = 5 dispersão(24) = 3 dispersão(39) = dispersão(11) = 4 dispersão(10) = Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 25

26 Sondagem Linear PROBLEMAS Existência de blocos contíguos de posições ocupadas de grandes dimensões (em geral, quando λ 0.5). A sondagem é igual para chaves que colidem. Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 26

27 Dispersão Dupla (Double Hashing) sondagem(j) = j dispersão2(k) O incremento varia com a chave, sendo definido pela segunda função de dispersão. p 0 = ( dispersão(k) + 0 ) % dim p 1 = ( dispersão(k) + dispersão2(k) ) % dim p 2 = ( dispersão(k) + 2 dispersão2(k) ) % dim p 3 = ( dispersão(k) + 3 dispersão2(k) ) % dim Primeira Posição: pos dispersão(k); inc dispersão2(k); } Posição Seguinte: pos ( pos + inc ) % dim; } Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 27

28 Objectivos Dispersão Dupla Segunda Função de Dispersão Não pode retornar zero. Deve retornar números que sejam primos com dim. Se dim for primo, basta garantir que os valores retornados variam entre 1 e dim 1. Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 28

29 Dispersão Fechada Nota Importante Para garantir que o ciclo de pesquisa termina, é necessário assegurar a existência de posições vazias. Sondagem λ Ideal λ Máximo Linear Dupla Portanto, deve-se pré-dimensionar a tabela tendo em vista o factor de ocupação ideal, permitindo inserções apenas enquanto não for atingido o factor de ocupação máximo. Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 29

30 Dimensionamento da Dispersão Fechada Por exemplo, se o número esperado de entradas for 50, a dimensão da tabela deve ser 101 (o menor número primo superior a ) e só se permite a inserção de 80 entradas (porque = 80.8). Quando se tenta inserir a 81 a entrada, efectua-se a redispersão, copiando as 80 entradas existentes para uma tabela maior (que, em geral, tem o dobro da capacidade) e insere-se a nova entrada na nova tabela. Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 30

31 Sondagem Linear / Só Pesquisas e Inserções (1) package datastructures; public class LinProbHashTable<K extends Comparable<K>, V> extends HashTable<K,V> // The array of entries. protected EntryClass<K,V>[] table; public LinProbHashTable( ) this(default CAPACITY); } Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 31

32 Sondagem Linear / Só Pesquisas e Inserções (2) public LinProbHashTable( int capacity ) int arraysize = HashTable.nextPrime(2 * capacity); // Compiler gives a warning. table = (EntryClass<K,V>[]) new EntryClass[arraySize]; maxsize = ( 8 * arraysize ) / 10; currentsize = 0; } // Returns the hash value of the specified key. protected int hash( K key ) return Math.abs( key.hashcode() ) % table.length; } Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 32

33 Sondagem Linear / Só Pesquisas e Inserções (3) // Returns the position where the entry with the specified key is, // or the first empty position found, if no such entry exists. protected int findpos( K key ) int pos = this.hash(key); while ( table[pos]!= null && table[pos].getkey().compareto(key)!= 0 ) pos = ( pos + 1 ) % table.length; } return pos; Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 33

34 Sondagem Linear / Só Pesquisas e Inserções (4) // Returns the value in the dictionary whose key is the specified // key; or null if no such entry exists. public V find( K key ) int pos = this.findpos(key); if ( table[pos] == null ) return null; else return table[pos].getvalue(); } Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 34

35 Sondagem Linear / Só Pesquisas e Inserções (5) // Inserts the entry (key, value) in the dictionary. // If the dictionary already contained an entry with the specified // key, returns the old value (which is replaced by the specified // value); otherwise, returns null. public V insert( K key, V value ) if ( this.isfull() ) this.rehash(); } int pos = this.findpos(key); if ( table[pos] == null )... else } // End of LinProbHashTable. Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 35

36 Sondagem Linear / Só Pesquisas e Inserções (6) // Expansão do if-then-else. int pos = this.findpos(key); if ( table[pos] == null ) table[pos] = new EntryClass<K,V>(key, value); currentsize++; return null; } else V oldvalue = table[pos].getvalue(); table[pos].setvalue(value); return oldvalue; } Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 36

37 Complexidade da Sondagem Aleatória no Caso Esperado Pesquisa com Insucesso 1 λ probabilidade de visitar 1 posição λ (1 λ) probabilidade de visitar 2 posições λ 2 (1 λ) probabilidade de visitar 3 posições λ k 1 (1 λ) probabilidade de visitar k posições Insucesso(λ) = k=1 k λ k 1 (1 λ) = 1 (1 λ) (1 λ) 2 = 1 1 λ Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 37

38 Complexidade da Sondagem Aleatória no Caso Esperado Pesquisa com Sucesso O número de posições visitadas para encontrar uma entrada com chave k é igual ao número de posições visitadas para descobrir que k não existia, no momento em que a entrada foi inserida. Sucesso(λ) = 1 λ λ 0 Insucesso(x) dx = 1 λ λ x dx = 1 λ ln 1 1 λ Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 38

39 Complexidade da Sondagem Aleatória Pesquisa Melhor Caso Pior Caso Caso Esperado com sucesso 1 n sem sucesso 1 n 1 λ ln 1 1 λ 1 1 λ (n é o número de entradas na tabela) Pesquisa Factor de Ocupação no Caso Esperado com sucesso sem sucesso Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 39

40 Complexidade da Sondagem Linear Pesquisa Melhor Caso Pior Caso Caso Esperado com sucesso 1 n sem sucesso 1 n 1 2 ( λ ) 1 2 (1 + 1 (1 λ) 2) (n é o número de entradas na tabela) Pesquisa Factor de Ocupação no Caso Esperado com sucesso sem sucesso Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 40

41 Remoção Exemplo com Sondagem Linear (1) dim = 7 e dispersão(n) = n % Remover 24 9? Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 41

42 Remoção Exemplo com Sondagem Linear (2) dim = 7 e dispersão(n) = n % Remover 24 9 remo vida Inserir 72, v dispersão(72) = 2 Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 42

43 Remoção Exemplo com Sondagem Linear (3) dim = 7 e dispersão(n) = n % Remover 24 9 remo vida Inserir 72, v dispersão(72) = Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 43

44 Ciclos com Remoção Pesquisar k: O ciclo termina quando se encontra k (S) ou uma posição VAZIA (I). Remover k: O ciclo termina quando se encontra k (S) ou uma posição VAZIA (I). (S): Assinala-se que a posição está REMOVIDA. Inserir k, v: O primeiro ciclo termina quando se encontra k (I), uma posição VAZIA (S) ou uma posição REMOVIDA (R). (S): Insere-se k, v nessa posição. (R): Guarda-se essa posição (posiç~ao-se-inserir) e executa-se o segundo ciclo. O segundo ciclo termina quando se encontra k (I) ou uma posição VAZIA (S). (S): Insere-se k, v em posiç~ao-se-inserir. Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 44

45 Vantagens da Dispersão Aberta em relação à Dispersão Fechada + Suporta a operação de remoção. + Os diferentes conjuntos de chaves que colidem (as listas de colisões ) não se misturam. Vantagens da Dispersão Fechada em relação à Dispersão Aberta Gasta menos memória (alguns bytes por entrada). Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 45

46 Vantagens da Dispersão + A complexidade das operações de pesquisa e de inserção (e de remoção, na DA), no caso esperado, é constante. A técnica é eficiente e só depende do factor de ocupação e da qualidade das funções (dispersão, sondagem (na DF)). Problemas da Dispersão + Não é uma estrutura dinâmica. + Não suporta operações que se baseiem na relação de ordem entre as chaves: mínimo, máximo, percurso ordenado. A complexidade das operações de pesquisa e de inserção (e de remoção, na DA), no pior caso, é linear no número de entradas na tabela. Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 46

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

Tabelas de Dispersão. Estrutura de Dados e Algoritmos

Tabelas de Dispersão. Estrutura de Dados e Algoritmos Tabelas de Dispersão 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

Leia mais

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

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

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

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

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

Lista Ligada. Nó de Lista Ligada

Lista Ligada. Nó de Lista Ligada Lista Ligada Estrutura com nós que armazenam elementos manter referências para elementos do início e fim da lista Operações Inserir: a seguir à posição corrente Remover: na posição corrente Pesquisar:

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

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

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

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

Tabelas de Hash MBB. Novembro de Algoritmos e Complexidade LEI-LCC

Tabelas de Hash MBB. Novembro de Algoritmos e Complexidade LEI-LCC Tabelas de Hash Algoritmos e Complexidade LEI-LCC 2010-2011 MBB Novembro de 2010 Tabelas e Acesso a Informação As estruturas de dados apresentadas anteriormente têm como objectivo o armazenamento de informaçã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

Tabelas de símbolos e de distribuição AULA 23. Tabela de símbolos. Um exemplo simples. Interface

Tabelas de símbolos e de distribuição AULA 23. Tabela de símbolos. Um exemplo simples. Interface Tabelas de símbolos e de distribuição AULA 23 Fonte: http://programmingnotes.freeweq.com S 12.4, 12.5, 12.8, 14.1, 14.2 http://www.ime.usp.br/ pf/.../symbol-table.html http://www.ime.usp.br/ pf/.../symb-table.html

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

Exercício de Estrutura de dados. Java Fila

Exercício de Estrutura de dados. Java Fila Exercício de Estrutura de dados Java Fila Obs.: Esse projeto foi um exercício realizado em sala de aula da matéria de Estrutura de dados com o Profº Frederico Augusto Siqueira Gentil Aqui está sendo relatado

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

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

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 (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

Tabela Hash. Disciplina de Algoritmos e Estrutura de Dados III. Prof. Marcos Antonio Schreiner 15/05/2015

Tabela Hash. Disciplina de Algoritmos e Estrutura de Dados III. Prof. Marcos Antonio Schreiner 15/05/2015 Tabela Hash Disciplina de Algoritmos e Estrutura de Dados III Prof. Marcos Antonio Schreiner 15/05/2015 Introdução Seja um conjunto de chaves armazenadas em um vetor e em uma árvore AVL. Qual a complexidade

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

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

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

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

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

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

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

Coleções em Java. Prof. Gustavo Willam Pereira ENG10082 Programação II. Créditos: Prof. Clayton Vieira Fraga Filho

Coleções em Java. Prof. Gustavo Willam Pereira ENG10082 Programação II. Créditos: Prof. Clayton Vieira Fraga Filho Coleções em Java Prof. Gustavo Willam Pereira ENG10082 Programação II Créditos: Prof. Clayton Vieira Fraga Filho Introdução O que é uma coleção? Um objeto que agrupa múltiplos elementos em uma única unidade

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

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

Hashing. Cormen Capítulo 11

Hashing. Cormen Capítulo 11 Hashing Cormen Capítulo 11 Motivação Um compilador utiliza uma tabela de símbolos para relacionar símbolos aos dados associados. Símbolos: nomes de variáveis, funções, etc.. Dados associados: localização

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

Java Util Collections - Interfaces Interfaces definidas

Java Util Collections - Interfaces Interfaces definidas Java Util Collections - Interfaces Interfaces definidas 245 Collection Raiz da hierarquia Grupo mais genérico de elementos Não garante nas implementações Duplicatas Ordenação Não possui nenhuma implementação

Leia mais

Teste à Primalidade. (Método de Monte Carlo) Geração de Números Primos (Grandes)

Teste à Primalidade. (Método de Monte Carlo) Geração de Números Primos (Grandes) Teste à Primalidade (Método de Monte Carlo) Margarida Mamede, DI FCT/UNL APD, 2010/11, Teste à Primalidade 1 Geração de Números Primos (Grandes) Como se pode obter um número primo grande? Gerando números

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

Introdução aos Algoritmos e Estruturas de Dados. 2 o Teste - A

Introdução aos Algoritmos e Estruturas de Dados. 2 o Teste - A Ano Lectivo 2017/2018 2 o Semestre Introdução aos Algoritmos e Estruturas de Dados 2 o Teste - A Data: 20 de Junho de 2018 Duração: 1h30m RESOLUÇÃO I. (2,0 + 2,0 + 2,0 + 2,0 = 8,0 val.) I.a) Considere

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

Listas Lineares. continuando...

Listas Lineares. continuando... Listas Lineares continuando... 1 Listas! relembrando: listas lineares agrupa informações referentes aum conjunto de elementos que, de alguma forma, se relacionam entre si! Uma lista linear ou está vazia,

Leia mais

ESTRUTURAS DE DADOS E ALGORITMOS ÁRVORE BINÁRIA

ESTRUTURAS DE DADOS E ALGORITMOS ÁRVORE BINÁRIA ESTRUTURAS DE DADOS E ALGORITMOS 1 ÁRVORE BINÁRIA Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande ÁRVORE (EXEMPLO) Como seria pesquisar a localização de

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

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

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

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

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

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) rosalvo.oliveira@univasf.edu.br

Leia mais

Tabelas de Espalhamento (hash)

Tabelas de Espalhamento (hash) Tabelas de Espalhamento (hash) Universidade Federal do Amazonas Departamento de Eletrônica e Computação Hashing Método eficiente de busca com base em assinaturas Objetivos Conceitos Tratamento de Colisões

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

Á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

Linguagem Algorítmica OO. Linguagem Algorítmica

Linguagem Algorítmica OO. Linguagem Algorítmica UFSC-CTC-INE INE5384 - Estruturas de Dados Linguagem Algorítmica OO Prof. Ronaldo S. Mello 2002/2 Linguagem Algorítmica Independente de linguagem de programação OO Utilizada para: Exemplificar os algoritmos

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

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

Algoritmos e Estruturas de Dados 2005/2006

Algoritmos e Estruturas de Dados 2005/2006 Filas de prioridade Algoritmos e Estruturas de Dados 2005/2006 Filas de prioridade Uma fila de prioridade permite, pelo menos, duas operações sobre um conjunto de valores comparáveis: inserção de um elemento

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

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

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I Pilhas e Filas Encadeadas Algoritmos e Estruturas de Dados I Pilha Lista linear: pilha Represente graficamente o funcionamento da pilha, representando a pilha vazia, a entrada e a saída de elementos Quais

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

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

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

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

Lista de Exercícios 07 Introdução à Ciência de Computação II (SCC0201/501)

Lista de Exercícios 07 Introdução à Ciência de Computação II (SCC0201/501) Lista de Exercícios 07 Introdução à Ciência de Computação II (SCC0201/501) Prof. Moacir P. Ponti Jr. 24 de novembro de 2010 1 Hashing 1. Suponha uma tabela hash de tamanho 10 com endereçamento aberto para

Leia mais

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler Aula 14 Listas Duplamente Encadeadas prof Leticia Winkler 1 Lista Duplamente Encadeada É um tipo de lista encadeada que pode ser vazia (NULL) ou que pode ter um ou mais nós, sendo que cada nó possui dois

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

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

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Programação II 2º Semestre Frequência 2 (8 valores) Resolução 30/05/2018 A. Análise de complexidade dos algoritmos 1. (0.75 val) Considere a seguinte função em C: void funcao

Leia mais

Árvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza

Árvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza Árvores B Hashing Estrutura de Dados II Jairo Francisco de Souza Pesquisa sequencial Procedimento Elementos pesquisados sucessivamente Comparação determina se o elemento foi encontrado ou não Exemplo:

Leia mais

Tabelas Hash. Também conhecido como tabelas de dispersão. Até agora... MoFvação. Exercício

Tabelas Hash. Também conhecido como tabelas de dispersão. Até agora... MoFvação. Exercício Tabelas Hash Rohit Gheyi Também conhecido como tabelas de dispersão 1 Até agora Listas Chaves ordenadas ou não Árvores Binárias de Pesquisa Ordenadas Heaps Binárias Chaves com certa ordem MoFvação Estruturas

Leia mais

2 Vectores de objectos

2 Vectores de objectos 2 Vectores de objectos Agenda de contactos 3 Objectivo Manipular uma agenda de contactos. Descrição e Funcionalides Cada contacto na agenda caracteriza-se por um nome, um telefone e um e-mail. Na agenda,

Leia mais

AED Algoritmos e Estruturas de Dados LEEC /2007. Tabelas de Dispersão

AED Algoritmos e Estruturas de Dados LEEC /2007. Tabelas de Dispersão AED Algoritmos e Estruturas de Dados LEEC - 2006/2007 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

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

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

Árvores e Mapas. Luís Lopes. Estruturas de Dados DCC-FCUP

Árvores e Mapas. Luís Lopes. Estruturas de Dados DCC-FCUP Árvores e Mapas Luís Lopes DCC-FCUP Estruturas de Dados Estruturas não lineares Os arrays e as listas são exemplos de estruturas de dados lineares, cada elemento tem: um predecessor único (excepto o primeiro

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

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

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

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

Árvores Binárias de Busca (ABB) 18/11

Árvores Binárias de Busca (ABB) 18/11 Árvores Binárias de Busca (ABB) 18/11 Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguintes propriedade: Para todo nó da árvore, se seu valor é X, então:

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

13 Hashing (parte 2) SCC201/501 - Introdução à Ciência de Computação II

13 Hashing (parte 2) SCC201/501 - Introdução à Ciência de Computação II 13 Hashing (parte 2) SCC201/501 - Introdução à Ciência de Computação II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2010/2 Moacir Ponti Jr. (ICMCUSP)

Leia mais

Algoritmos e Estruturas de Dados 1

Algoritmos e Estruturas de Dados 1 1. Algoritmos e Estruturas de Dados 1 Época Normal - 21 Janeiro 2005 public class Data private int dia, mes, ano; public Data(int d, int m, int dia = d; mes = m; ano = a; public Data(int d, int m) this(d,

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Programação II 2º Semestre Exame Época Norma (15 val) Resolução 22/06/2018 1 [1,00 val + 1,00 val] - Memória Dinâmica Considere as seguintes declarações de variáveis: int

Leia mais

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing, Filas Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing, pelo uso da CPU Algoritmos e Estruturas de Dados I José

Leia mais

Prova de Recuperação PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins

Prova de Recuperação PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins Prova de Recuperação PMR21/PMR2 1o. semestre 2 Prof. Thiago Martins Instruções: screva o nome e o número USP na folha de papel almaço. 1. (2 pontos) Uma pilha é uma estrutura de dados na qual o elemento

Leia mais

Profa. Thienne Johnson EACH/USP

Profa. Thienne Johnson EACH/USP Profa. Thienne Johnson EACH/USP Declarando classes usando generics Métodos que usam um parâmetro de tipo como tipo de retorno Declaração da classe BasicGeneric: class BasicGeneric Contém o parâmetro

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

Coleções. Prof. Marcelo Roberto Zorzan

Coleções. Prof. Marcelo Roberto Zorzan Coleções Prof. Marcelo Roberto Zorzan Coleções Aula de Hoje Introdução Coleções podem representar estruturas de dados complexas de forma transparente para o programador. Exemplos: Músicas favoritas armazenadas

Leia mais

Coleções POO. Prof. Marcio Delamaro

Coleções POO. Prof. Marcio Delamaro Coleções POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/54 Definição Interface Collection E - the type of elements in this collection The root interface in

Leia mais

Estruturas de dados para listas arrays e listas ligadas

Estruturas de dados para listas arrays e listas ligadas Estruturas de dados para listas arrays e listas ligadas Fernando Lobo Algoritmos e Estrutura de Dados Algumas figuras retiradas do livro Introduction to Algorithms, 3rd Edition. 1 / 29 Listas Uma lista

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca Algoritmos e Estruturas de Dados I Nesta aula será apresentado o ADT árvore binária de busca, também conhecidas como dicionários binários Uma árvore binária de busca é uma estrutura

Leia mais

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 27 de setembro de 2018 Marco Antonio

Leia mais

Cálculo de Endereço (hashing) Pesquisa de Dados em Tabelas. Função de Cálculo de endereço chave. Eficiência

Cálculo de Endereço (hashing) Pesquisa de Dados em Tabelas. Função de Cálculo de endereço chave. Eficiência Pesquisa de Dados em Tabelas Aula 11 unções de Cálculo de ndereço e Tratamento de Colisões URGS IN014 Cálculo de ndereço (hashing) Método de cálculo de endereço Aleatorização Randomização Hashing Não é

Leia mais

Proposta de trabalho

Proposta de trabalho Proposta de trabalho 1º semestre 2004/2005 No âmbito das disciplinas de: Algoritmos e Estruturas de Dados I José Braga de Vasconcelos jvasco@ufp.pt Linguagens de Programação I Rui Silva Moreira rmoreira@ufp.pt

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