pior caso nas operações de manipulação é O(N) pior caso surge sistematicamente emusos correntes (ex: elementos previamente ordenados)
|
|
- Geraldo Martinho Valente
- 6 Há anos
- Visualizações:
Transcrição
1 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 de dispersão. Implementação de tabela de dispersão fechada com teste quadrático. HASH (v2) - 1 Tabela de Dispersão Árvores binárias (de pesquisa) simples pior caso nas operações de manipulação é O(N) pior caso surge sistematicamente emusos correntes (e: 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 nemcomparação de elementos ocorrência do pior caso tem probabilidade muito baia Aplicações tabelas de símbolos dos compiladores HASH (v2) - 2
2 Resolver colisões - dispersão com listas 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 eemplo com função de dispersão hash() = mod 10 e inserção na cauda: , 1, 4, 81, 64 1º último HASH (v2) - 3 Resolver colisões - dispersão aberta Perante colisão procura-se célula alternativa Tenta-se sequência de células H 0 (), H 1 (), H 2 (),... H i () = ( hash() + 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 f(i) = i Teste quadrático procurar próima posição livre a seguir a H com passo quadrático - tenta-se H , H , H ,... é preciso garantir que se pode percorrer a tabela toda - ver adiante f(i) = i 2 HASH (v2) - 4
3 Desempenho na dispersão com listas Factor de carga l razão entre o número de elementos na tabela e o tamanho da tabela Dispersão com listas 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 bomdesempenho para λ próimo de 1 HASH (v2) - 5 Desempenho na Dispersão Aberta (1) 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 pesquisacom sucesso: 1/2 ( 1 + 1/(1- λ) ) caso ideal (semclustering) - número de tentativas para inserção e para pesquisa sem sucesso: 1/(1- λ) - número de tentativas para pesquisacom sucesso: 1/ λ ln (1/(1- λ) ) função quadrática elimina clustering primário - na prática, eficiência próima do caso ideal λ= 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 HASH (v2) - 6
4 Desempenho na Dispersão Aberta (2) nº de posições acedidas para inserção e pesquisa ,0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1,0 factor de carga função linear, elemento ineistente função linear, elemento eistente caso ideal (sem clustering), elemento ineistente caso ideal (sem clustering), elemento eistente com dispersão aberta, o factor de carga não deve eceder 0,5 para se garantir um bom desempenho! HASH (v2) - 7 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() + i 2 (mod Tam) = h() + j 2 (mod Tam) com i j e 0 < i,j < Tam/2 h() + i 2 = h() + 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 HASH (v2) - 8
5 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óima H i = H 0 + i 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 modse reduz a subtrair Tam) HASH (v2) - 9 Eliminação com Dispersão Aberta Para eliminar um elemento da tabela, marca-se como apagado, para que posteriores pesquisas funcionem correctamente 3 estados: posição ocupada, livre ou marcada como apagada posição activa: ocupada ou marcada como apagada Eemplo, com hash() = mod add(13) add(23) remove(13) contains(23) 3 marca posição como apagada como a posição está marcada como apagada, procura na posição seguinte HASH (v2) - 10
6 Tabela de Dispersão em HashSet package weiss.util; import java.io.serializable; public class HashSet etends AbstractCollection implements Set private static final int DEFAULT_TABLE_SIZE = 101; private int currentsize = 0; private int occupied = 0; private int modcount = 0; private HashEntry [ ] array; public HashSet( ) allocatearray( DEFAULT_TABLE_SIZE ); clear( ); public HashSet( Collection other ) allocatearray( other.size( ) * 2 ); clear( ); Iterator itr = other.iterator( ); while( itr.hasnet( ) ) add( itr.net( ) ); HASH (v2) - 11 Tabela de Dispersão em HashSet public int size( ) return currentsize; /** * Thismethodis not partof standard Java1.2. * Like contains, it checks if is in the set. * If it is, it returns the reference to the matching * object; otherwise it returns null. */ public Object getmatch( Object ) int currentpos = findpos( ); if( array[ currentpos ] == null ) return null; return array[ currentpos ].element; HASH (v2) - 12
7 Tabela de Dispersão em HashSet /** * Tests if some item is in this collection. any object. true if this collection contains an item equal to. */ public boolean contains( Object ) return isactive( array, findpos( ) ); /** * Tests if item in pos is active. pos a position in the hash table. arr the HashEntry array (can be oldarray during rehash). true if this position is active. */ private static boolean isactive( HashEntry [ ] arr, int pos ) return arr[ pos ]!= null && arr[ pos ].isactive; HASH (v2) - 13 Tabela de Dispersão em HashSet /** * Adds an item to this collection. */ public boolean add( Object ) int currentpos = findpos( ); if( isactive( array, currentpos ) ) return false; array[ currentpos ] = new HashEntry(, true ); currentsize++; occupied++; modcount++; if( occupied > array.length / 2 ) rehash( ); return true; HASH (v2) - 14
8 Tabela de Dispersão em HashSet /** * Private routine to perform rehashing. * Can be called by both add and remove. */ private void rehash( ) HashEntry [ ] oldarray = array; // Create a new, empty table allocatearray( netprime( 4 * size( ) ) ); currentsize = 0; occupied = 0; // Copy table over for( int i = 0; i < oldarray.length; i++ ) if( isactive( oldarray, i ) ) add( oldarray[ i ].element ); HASH (v2) - 15 Tabela de Dispersão em HashSet /** * Removes an item from this collection. */ public boolean remove( Object ) int currentpos = findpos( ); if(!isactive( array, currentpos ) ) return false; array[ currentpos ].isactive = false; currentsize--; modcount++; if( currentsize < array.length / 8 ) rehash( ); return true; HASH (v2) - 16
9 Tabela de Dispersão em HashSet public void clear( ) currentsize = occupied = 0; modcount++; for( int i = 0; i < array.length; i++ ) array[ i ] = null; public Iterator iterator( ) return new HashSetIterator( ); HASH (v2) - 17 Tabela de Dispersão em HashSet private class HashSetIterator implements Iterator private int epectedmodcount = modcount; private int currentpos = -1; private int visited = 0; public boolean hasnet( ) if( epectedmodcount!= modcount ) throw new ConcurrentModificationEception( ); return visited!= size( ); HASH (v2) - 18
10 Tabela de Dispersão em HashSet public Object net( ) if(!hasnet( ) ) throw new NoSuchElementEception( ); do currentpos++; while( currentpos < array.length &&!isactive( array, currentpos ) ); visited++; return array[ currentpos ].element; HASH (v2) - 19 Tabela de Dispersão em HashSet public void remove( ) if( epectedmodcount!= modcount ) throw new ConcurrentModificationEception( ); if( currentpos == -1!isActive( array, currentpos ) ) throw new IllegalStateEception( ); array[ currentpos ].isactive = false; currentsize--; visited--; modcount++; epectedmodcount++; HASH (v2) - 20
11 Tabela de Dispersão em HashSet private static class HashEntry implements Serializable public Object element; // the element public boolean isactive; // false if marked deleted public HashEntry( Object e ) this( e, true ); public HashEntry( Object e, boolean i ) element = e; isactive = i; HASH (v2) - 21 Tabela de Dispersão em HashSet private int findpos( Object ) int collisionnum = 0; int currentpos = ( == null )? 0 : Math.abs(.hashCode( ) % array.length ); while( array[ currentpos ]!= null ) if( == null ) if( array[ currentpos ].element == null ) break; else if(.equals( array[ currentpos ].element ) ) break; currentpos += 2 * ++collisionnum - 1; // Compute ith probe if( currentpos >= array.length ) // Implement the mod currentpos -= array.length; return currentpos; HASH (v2) - 22
12 Tabela de Dispersão em HashSet private void allocatearray( int arraysize ) array = new HashEntry[ arraysize ]; private static int netprime( int n ) if( n % 2 == 0 ) n++; for( ;!isprime( n ); n += 2 ) ; return n; HASH (v2) - 23 Tabela de Dispersão em HashSet private static boolean isprime( int n ) if( n == 2 n == 3 ) return true; if( n == 1 n % 2 == 0 ) return false; for( int i = 3; i * i <= n; i += 2 ) if( n % i == 0 ) return false; return true; HASH (v2) - 24
13 Implementação de Dicionários (maps) com Tabelas de Dispersão (1) Um dicionário, ou função finita definida em etensão (map), é um conjunto de pares (chave, valor) tal que não eistem dois pares com chaves iguais Tanto a chave como o valor podem ser de um tipo arbitrariamente compleo Eemplo: chave nº da conta; valor nome do dono da conta - É função (finita): (1, "João"), (3, "João"), (5, "Rui") chave valor - Não é função (finita) (1, "João"), (1, "Ana "), (5, "Rui") (mas é uma relação binária) chave valor HASH (v2) - 25 Implementação de Dicionários (maps) com Tabelas de Dispersão (2) Implementação com tabela de dispersão (classe HashMap) um elemento da tabela é um par (chave, valor) (classe Pair) a função de dispersão (hashcode) e a função de comparação (equals) baseiam-se apenas na chave do par as funções de pesquisa (containskey, get) e eliminação (remove) têm como argumento a chave - funções implementadas na classe abstracta MapImpl a função de inserção (put) tem como argumentos a chave e o valor - função implementada na classe abstracta MapImpl pode-se modificar o valor correspondente a uma dada chave (put) - função implementada na classe abstracta MapImpl HASH (v2) - 26
14 Tabela de Dispersão em HashMap package weiss.util; /** * Hash table implementation of the Map. */ public class HashMap etends MapImpl public HashMap( ) super( new HashSet( ) ); public HashMap( Map other ) super( other ); HASH (v2) - 27 Tabela de Dispersão em HashMap protected Map.Entry makepair( Object key, Object value ) return new Pair( key, value ); protected Set makeemptykeyset( ) return new HashSet( ); protected Set clonepairset( Set pairset ) return new HashSet( pairset ); HASH (v2) - 28
15 Tabela de Dispersão em HashMap private static final class Pair implements Map.Entry public Pair( Object k, Object v ) key = k; value = v; public Object getkey( ) return key; public Object getvalue( ) return value; HASH (v2) - 29 Tabela de Dispersão em HashMap public int hashcode( ) return key.hashcode( ); public boolean equals( Object other ) if( other instanceof Map.Entry ) return getkey( ).equals( ((Map.Entry) other).getkey() ); else return false; private Object key; private Object value; HASH (v2) - 30
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 maisTabelas 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 maisAlgoritmos 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 maisCapí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 maisAlgoritmos 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 maisLista 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 maiscapta 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 maisJava 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 maisColeçõ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 maisALGORITMOS 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 maisAlgoritmos 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 maisAgenda. 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 maisTabelas 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 maisTabelas 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 maisOrientaçã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 maisUNIP - 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 maisESTRUTURAS 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 maisProva 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 maisTipos, 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 maisTipos, 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 maisTabelas 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 maisTabelas 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 maisTABELAS 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 maisColeçõ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 maisESTRUTURAS 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 maisEstrutura 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 maisDicioná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 maisTabelas 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 maisUNIVERSIDADE 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 maisPalavras 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 maisColeçõ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 maisProva 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 maisLEIC-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 maisPCC104 - 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 31 de outubro de 2017 Marco Antonio
Leia maisProva 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 maisESTRUTURAS 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 maisJava 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 maisA Relação de Subtipo e Tipos Genéricos
O tipo List representa as listas que declaram ter elementos do tipo Object O tipo que representa as listas que declaram ter elementos de um tipo qualquer é List Este tipo é definido à custa
Leia maisUNIVERSIDADE 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 maisFilas 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 maisTAD 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 maisCollections. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa
Collections Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Coleções em Java As coleções agrupam vários
Leia maisProgramaçã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 maisDesenvolvimento e Projeto de Aplicações Web
Desenvolvimento e Projeto de Aplicações Web cecafac@gmail.com Coleções Conteúdo 1 Introdução Desde a versão 1.2 do JDK, a plataforma J2SE inclui um framework de coleções (Collections) Uma coleção é um
Leia maisAlgoritmos 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 maisProgramação Orientada a Objetos
Programação Orientada a Objetos Prof. Kléber de Oliveira Andrade pdjkleber@gmail.com Coleções, Propriedades, Resources e Strings (Parte 2) Coleções É comum usarmos um objeto que armazena vários outros
Leia maisTipos 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 maisColeções Avançadas. Programação Orientada a Objetos Java. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior
Coleções Avançadas Programação Orientada a Objetos Java Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior Objetivos Aprender como o conceito de coleção pode ser expresso de forma genérica Examinar
Leia maisProgramação Orientada a Objetos
Collections Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 08 Arranjos, Listas, Filas, Pilhas, Conjuntos e Mapas 1 Introdução Java fornece implementação de Estruturas de Dados recorrentemente utilizadas.
Leia maisInterfaces 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 maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
Java Collections Framework (JCF) Uma coleção (collection) é um objeto que agrupa vários elementos. A JCF consiste numa arquitetura para representação e manipulação de coleções. Contém: - Um conjunto de
Leia maisImplemente 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 maisFilas 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 maisAula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU
Aula 5 POO 1 Encapsulamento Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem de adaptações
Leia maisLaboratório de Programação. Aula 13 Java 5COP088. Aula 13 Genéricos e Conjuntos Java Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr barbon@uel.
5COP088 Laboratório de Programação Aula 13 Genéricos e Conjuntos Java Prof. Dr. Sylvio Barbon Junior 1 Sumário: 1) Métodos hashcode(), equals() e tostring(); 2) Conjuntos; 3) Genéricos; 4) Resumo. 2 1)
Leia maisTabelas 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 maisListas 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 maisUniversidade 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 maisIterator. Professor: Hyggo Almeida
Professor: Hyggo Almeida Utilização de estruturas de dados Vector, ArrayList, HashSet,... Vector collection; public void classexusando(vector col){... ArrayList collection; public void classewusando(arraylist
Leia maisTabelas 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 maisAED 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 maisVamos 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Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo
PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó
Leia maisAná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 maisTabelas 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 maisHASHING 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 maisProva 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 maisTipo de Dados Abstracto
Listas Algoritmos e Estruturas de Dados 2005/2006 Tipo de Dados Abstracto TDA conjunto de objectos + conjuntos de operações constituem uma abstracção matemática em C++ são implementados por classes; as
Leia maisEdital 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 maisTabelas 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Árvores & Árvores Binárias
Árvores & Árvores Binárias Problema Implementações do TAD Lista Linear Lista encadeada eficiente para inserção e remoção dinâmica de elementos, mas ineficiente para busca Lista seqüencial (ordenada) Eficiente
Leia mais4 Conceito de Herança
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 maisFilas de Prioridade. Uma fila de prioridade pode ser vista como uma generalização das filas com as seguintes duas operações:
Filas de Prioridade e Heaps 9.1 Filas de Prioridade Uma fila de prioridade pode ser vista como uma generalização das filas com as seguintes duas operações: inserir um elemento na fila; remover o elemento
Leia maisColeçõ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Árvores. Estruturas de Dados. Prof. Vilson Heck Junior
Árvores Estruturas de Dados Prof. Vilson Heck Junior Árvores INTRODUÇÃO Introdução Árvores são estruturas de dados utilizadas para armazenar e recuperar dados de forma rápida e eficiente; Árvores não são
Leia maisMÉTODOS DE PESQUISA DE DADOS EM MEMÓRIA PRIMÁRIA. Material da Prof. Ana Eliza
MÉTODOS DE PESQUISA DE DADOS EM MEMÓRIA PRIMÁRIA Material da Prof. Ana Eliza Métodos de Pesquisa em Memória Primária Pesquisa Seqüencial Bases ordenadas e não-ordenadas Pesquisa Seqüencial Melhorada Bases
Leia maisDepartamento de Ciência de Computadores Estruturas de Dados (CC114)
1. Cotação de cada pergunta: 1. 32 / 2. 36 / 3. 32 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 32%) Responda às seguintes questões:
Leia maisAPI e Coleções Java. Sérgio Luiz Ruivace Cerqueira
API e Coleções Java Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java API Introdução API Endereço http://download.oracle.com/javase/6/docs/api/ API - Descrição API - Resumo API - Detalhes Coleções
Leia maisIntroduçã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 maisAlgoritmos e Estruturas de Dados 2006/2007
Listas Algoritmos e Estruturas de Dados 2006/2007 Tipo de Dados Abstracto TDA conjunto de objectos + conjuntos de operações constituem uma abstracção matemática em C++ são implementados por classes; as
Leia maisÁrvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo
PMR2300 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó (exceto a
Leia maisProgramação orientada a objetos em Java
Programação orientada a objetos em Java Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons
Leia maisFabrí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 maisAlgoritmos e Estruturas de Dados 2009/2010
Listas Algoritmos e Estruturas de Dados 2009/2010 Tipo de Dados Abstracto TDA conjunto de objectos + conjuntos de operações constituem uma abstracção matemática em C++ são implementados por classes; as
Leia maisTipos de Dados Abstractos Estruturas Lineares Listas
Tipos de Dados Abstractos Estruturas Lineares Listas FEUP - MIEEC Programação 2-2008/2009 Tipo de Dados Abstractos (TDA) TDA conjunto de objectos + conjuntos de operações abstracção matemática (dados são
Leia maisÁ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 maisFILAS. 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 maisCollections Framework
Collections Framework 1 Arrays p Manipular array é bastante trabalhoso. p Dificuldades aparecem em diversos momentos: n não podemos redimensionar um array em Java; n é impossível buscar diretamente por
Leia maisEstruturas 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 maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Frequência Resolução 19/maio/2015 A. [3.5 val] Algoritmos de ordenação e de pesquisa Considere-se as seguintes
Leia maisProf. 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Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo
PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó
Leia maisLinguagem 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 maisO 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