Tabela de símbolos: tabelas de espalhamento
|
|
- Valdomiro Cortês Beretta
- 8 Há anos
- Visualizações:
Transcrição
1 Tabela de símbolos: tabelas de espalhamento Marcelo K. Albertini 14 de Janeiro de 2014
2 2/28 Resumo de complexidades Análises para operação efetuada após N inserções pior caso caso médio keys chave get put delete get put delete lista N N N N/2 N N/2 não equals() vetores log N N N log N N/2 N/2 sim compareto() paralelos ABB N N N log N log N? sim compareto() ARN log N log N log N log N log N log N sim compareto() Se não necessitarmos de operações ordenadas, podemos fazer melhor: número constante de operações!
3 3/28 Tabelas de espalhamento Tabelas de espalhamento = Tabelas hash = Hashtable Hash significa cortar em pedaços ou informalmente misturar, bagunçar Porquê espalhar ajudaria na busca? Espalhamos elementos em um espaço limitado e montamos uma tabela para saber a posição. A tabela é definida por uma função pré-definida que associa chaves com a posição na tabela.
4 4/28 Hash table encadeada
5 5/28 Hashing Valores são mantidos em uma tabela indexada pela chave. Função hash Um método para computar a posição de uma chave em uma tabela. Questões Como computar a função hash Necessitamos ser capazes de comparar por igualdade Resolução de colisão: o que acontece quando a hash de duas chaves diferentes são iguais
6 6/28 Balanceamento entre custo de espaço e tempo Sem limitação de espaço: valor é diretamente associado à chave Sem limitação de tempo, colisões podem ser resolvidas com número linear de comparações Limitações de tempo e espaço: hashes
7 7/28 Função hash Meta computação da hash é barata boa distribuição das chaves nas posições da tabela (cada posição da tabela tem igual chance de receber chaves) Exemplo: números de telefones Ruim: três primeiros dígitos Melhor: três últimos dígitos Necessário Um cálculo de Hash diferente para cada tipo de chave
8 8/28 Em Java Todas as class herdam o método int hashcode() Obrigatório: Se x.equals(y) então x.hashcode() == y.hashcode() Meta: Se!x.equals(y) então x.hashcode()!= y.hashcode() Implementação padrão Uso do endereço de memória do objeto Implementações por tipo Integer, Double, String, File, Url, Date,
9 9/28 Implementações do Java Double Integer 1 int hashcode() { 2 return value ; 3 } Boolean 1 int hashcode() { 2 if ( value ) 3 return 1231; 4 else 5 return 1247; 6 } 1 int hashcode() { 2 // xor das metades do binario 3 long bits = doubletolongbits( this. doublevalue () ) ; 4 return ( int )( bits ˆ( bits >>> 32)) ; 5 } String 1 //s [0] 31ˆ(n 1)+s [1] 31ˆ(n 2)+...+s [ n 1] 2 public int hashcode() { 3 int h = 0; 4 for ( int i = 0; i < s. length ; i++) 5 h = s [ i ] + (31 hash) ; 6 return h; 7 }
10 10/28 Função hash para strings Função Hash de Jenkins Processa uma letra por vez 1 int jenkins (char [] chave) { 2 int hash = 0, i ; 3 int tam = chave. length ; 4 5 for ( i = 0; i < tam; ++i ) { 6 hash += chave [ i ]; 7 hash += (hash << 10) ; 8 hash ˆ= (hash >> 6) ; 9 } 10 hash += (hash << 3) ; 11 hash ˆ= (hash >> 11) ; 12 hash += (hash << 15) ; 13 return hash ; 14 } O operador << desloca bits à esquerda e >> à direita. O operador ˆ realiza a operação de OU exclusivo, o XOR, bit a bit. 10 ˆ 1 == ˆ 8 == ˆ 0001 == ˆ 1000 == 0010
11 11/28 Exemplo para tipo composto 1 class Transacao { 2 String quem; 3 Date quando; 4 double quanto ; 5 6 int hashcode() { 7 int hash = 17; 8 hash = 31 hash + quem. hashcode() ; 9 hash = 31 hash + quando.hashcode() ; 10 hash = 31 hash + ((Double) quanto). hashcode() ; 11 return hash ; 12 } 13 }
12 12/28 Hash para tipo composto Como fazer Se campo for primitivo, usar o hashcode() do wrapper Integer para int Double para double Se campo for tipo composto, usar hashcode() Se campo for array, usar hash para cada campo Se campo for null, usar 0 Combinar cada campo x na hash com a operação 31 hash+x.hashcode()
13 13/28 Hashing modular Hashcode: valor int entre 2 31 e Função hash: índice da tabela de 0 a M 1 para tabela com M posições 1 hash(chave c) { // Cógigo ERRADO 2 return c.hashcode() % M; // BUG 3 } Código errado! Problema com negativos.
14 13/28 Hashing modular Hashcode: valor int entre 2 31 e Função hash: índice da tabela de 0 a M 1 para tabela com M posições 1 hash(chave c) { // Cógigo ERRADO 2 return c.hashcode() % M; // BUG 3 } Código errado! Problema com negativos. 1 hash(chave c) { 2 return Math. abs(key. hashcode() ) % M; // BUG 3 } Código errado! Problema com Math.abs( 2 31 ) < 0!
15 13/28 Hashing modular Hashcode: valor int entre 2 31 e Função hash: índice da tabela de 0 a M 1 para tabela com M posições 1 hash(chave c) { // Cógigo ERRADO 2 return c.hashcode() % M; // BUG 3 } Código errado! Problema com negativos. 1 hash(chave c) { 2 return Math. abs(key. hashcode() ) % M; // BUG 3 } Código errado! Problema com Math.abs( 2 31 ) < 0! 1 int hash(chave c) { // Código CERTO 2 return (c.hashcode() & 0 x7fffffff ) % M; 3 }
16 14/28 Premissa do espalhamento uniforme Cada chave é igualmente provável a ser mapeada para um inteiro entre 0 e M-1. Propriedades conhecidas Duas chaves terão a mesma posição na tabela (colidirão) após cerca de πm/ chaves aleatórias Cada inteiro terá sido utilizado para mapear pelo menos uma vez após MlnM chaves Após M chaves, o inteiro mais mapeado foi usado Θ(logM/loglogM) vezes
17 15/28 Funções hash: colisões Uma boa função hash deve espalhar uniformemente valores no array. Colisões Valores distintos mapeados na mesma posição de um array são chamados de colisões Com uma hash perfeita, se as chaves são conhecidas de antemão, não haverá colisões.
18 16/28 Colisões Desafio Tratar colisões eficientemente é muito caro evitar colisões (memória O(n 2 )) colisões são uniformemente distribuídas
19 17/28 Tabela de símbolos com encadeamento separado Usar array de M < N de listas encadeadas Hash: mapear chave para [0,M 1] Inserção: inserir se não estiver nela Busca: percorrer cadeia Número de operações equals() e hashcode() para inserção e busca é proporcional a N/M Se M muito grande, muitas cadeias vazias Se M muito pequeno, cadeias muito longas Escolha típica: M N/5
20 18/28 Análise: Tabela de símbolos com encadeamento separado pior caso caso médio keys chave get put delete get put delete lista N N N N/2 N N/2 não equals() vetores log N N N log N N/2 N/2 sim compareto() paralelos ABB N N N log N log N? sim compareto() ARN log N log N log N log N log N log N sim compareto() hash: escadeamento log N log N log N não equals()
21 19/28 Tabela de símbolos: sondagem linear Endereçamento aberto Usar apenas o array da tabela. Não usar listas igadas. Ideia: inserção Se houver uma colisão, buscar algum lugar vazio nas posições seguintes Busca Verificar se o elemento na posição da hash da chave é o procurado Procurar nas posições seguintes até encontrar um vazio Array tem que maior que o número de elementos a serem inseridos.
22 20/28 Análise: sondagem linear Knuth: problema do estacionamento Sob a premissa de espalhamento uniforme, a média de sondagem de uma tabela hash de tamanho M que contém N = αm chaves, 0 < α < 1 é: Para( busca (encontrando) ) α Para( inserção (ou ) busca sem encontrar) (1 α) 2
23 21/28 Análise: sondagem linear Avaliação de carga de uma hash table: risco de colisões taxa de ocupação α = número de elementos tamanho da tabela Quando taxa de ocupação α = N/M Se M alto, muitas posições vazias no array Se M pequeno, tempo de busca aumenta devido a agrupamento Com α = 1/2, sondagens para busca é cerca de 3/2. Com α = 1/2, sondagens para inserção é cerca de 5/2
24 22/28 Análise: sondagem linear pior caso caso médio keys chave get put delete get put delete lista N N N N/2 N N/2 não equals() vetores log N N N log N N/2 N/2 sim compareto() paralelos ABB N N N log N log N? sim compareto() ARN log N log N log N log N log N log N sim compareto() hash: log N log N log N não equals() escadeamento hash: sondagem log N log N log N não equals()
25 23/28 Variações de hashing Hashing encadeado duplo Obter 2 hashes para uma chave e inserir na cadeia menor Reduz tamanho esperado da maior cadeia para loglogn Hashing com dupla sondagem Usar sondagem linear com saltos variáveis maiores que 1 Reduz agrupamento Cuckoo hashing Faz 2 hashes por chave; insere chave em uma das posições; se ocupado reinsere a chave deslocada na posição alternativa (com recorrência) (com recorrência) Pior caso constante para busca
26 24/28 Tabela hash vs. ABB balanceada Tabela Hash Mais fácil para codificar Bom para chaves sem ordem Rápido para chaves simples ABB balanceada Garantia de desempenho Permite operações ordendas Mais fácil implementar compareto() que hashcode()
27 25/28 Complexidade computacional Complexidades para a operação de consulta de um valor associado a uma chave pior caso - quando tudo sai errado (colisões) Ataque a uma função hash exploração do pior caso Solução família de funções hash para criação aleatória melhor caso - custo da função hash
28 26/28 Família de funções hash Se na família há m membros selecionados aleatoriamente e colisões tem probabilidade de 1/m. Essa família de funções hash é chamada de hashing universal. Aplicações Evitar ataques a uma função hash exploração do pior caso Reconstrução da hash quando fator de balanceamento é mostra risco de colisão
29 Construindo uma família universal de hashes Método da matriz Chave x tem u bits. Tamanho da tabela M é uma potência de 2. Assim, um índice tem b bits tal que M = 2 b. É universal pois a probabilidade de colisão é igual ou menor que 1/M. Passos do algoritmo de hash obter representacao binária x da chave definir aleatoriamente uma matriz h de tamanho b u com valores 0 ou 1 obter o hash usando a multiplicação h(x) = hx e fazendo soma resto 2. Exemplo: h = x = h(x) = 1 (1) Existe uma chance de 1/2 b de colisão. 27/28
30 28/28 Hashing universal perfeito método espaço quadrático Hashing é perfeito se não existe colisões. Se podemos usar O(n 2 ) de espaço e as temos n chaves a serem armazenadas, podemos testar uma família de hashes como a anterior e testamos. Existe uma chance de 50% de não ocorre colisões. Se houver, gerar outra matriz h aleatória.
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 (array). Se o vetor não está ordenado, a pesquisa requer O(n) de
Leia maisHashing. 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 maisTabelas Hash. Jeane Melo
Tabelas Hash Jeane Melo Roteiro Introdução Motivação Definição Tabelas Hash Exemplos Funções hash Colisões Introdução Estudamos a utilização de estruturas como listas e árvores para armazenar informações
Leia maisÁrvores Binárias de Busca
Árvores Binárias de Busca Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguinte propriedade: Para todo nó da árvore, se seu valor é X, então: Os nós pertencentes
Leia maisÁrvores Binárias de Busca
Árvores Binárias de Busca Uma Árvore Binária de Busca T (ABB) ou Árvore Binária de Pesquisa é tal que ou T = 0 e a árvore é dita vazia ou seu nó contém uma chave e: 1. Todas as chaves da sub-árvore esquerda
Leia maisHashing. Estruturas de Dados. Motivação
Estruturas de Dados Hashing Prof. Ricardo J. G. B. Campello Parte deste material é baseado em adaptações e extensões de slides disponíveis em http://ww3.datastructures.net (Goodrich & Tamassia). Motivação
Leia maisHashing Letícia Rodrigues Bueno
Hashing Letícia Rodrigues Bueno UFABC hash: Hashing (Tabelas de Dispersão): Introdução hash: Hashing (Tabelas de Dispersão): Introdução Hashing (Tabelas de Dispersão): Introdução hash: 1. fazer picadinho
Leia maisPesquisa Sequencial e Binária
Pesquisa Sequencial e Binária Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 20 Algoritmos e Estruturas de Dados I Pesquisa em Memória Primária Introdução - Conceitos Básicos Pesquisa Sequencial
Leia maisPossui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.
3. Tabelas de Hash As tabelas de hash são um tipo de estruturação para o armazenamento de informação, de uma forma extremamente simples, fácil de se implementar e intuitiva de se organizar grandes quantidades
Leia maisBusca. Pesquisa sequencial
Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um
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 Espalhamento
Tabelas de Espalhamento Motivação Algumas das estruturas de dados vistas anteriormente requerem que seus elementos (células dinâmicas) sejam inspecionados seqüencialmente até que a desejada seja encontrada.
Leia maisPesquisa em Memória Primária. Algoritmos e Estruturas de Dados II
Pesquisa em Memória Primária Algoritmos e Estruturas de Dados II Pesquisa em Memória Primária Pesquisa: Recuperação de informação em um grande volume de dados Informação é dividida em registros e cada
Leia maisDICIONÁRIOS. template<class K,class T> class Par { public: K chave; T valor; Par():chave(),valor()
DICIONÁRIOS Esta estrutura inclui-se nos chamados contentores associativos, que não são mais do que uma colecção de estruturas de tipo Par, com dois membros de dados (chave de pesquisa e valor associado),
Leia maisPesquisa em Memória Primária. Prof. Jonas Potros
Pesquisa em Memória Primária Prof. Jonas Potros Pesquisa em Memoria Primária Estudo de como recuperar informação a partir de uma grande massa de informação previamente armazenada. A informação é dividida
Leia maisMétodos de Pesquisa em Memória Primária
Algoritmos e Estrutura de Dados II Métodos de Pesquisa em Memória Primária Prof Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Pesquisa Por pesquisa (procura ou busca) entende-se o ato
Leia maisHASHING. Katia Guimarães. katia@cin.ufpe.br 1
HASHING Katia Guimarães katia@cin.ufpe.br 1 HASHING Suponha que você pudesse criar um array onde qualquer item pudesse ser localizado através de acesso direto. Isso seria ideal em aplicações do tipo Dicionário,
Leia maisFACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2
FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO Projeto e Análise de Algoritmos II Lista de Exercícios 2 Prof. Osvaldo. 1. Desenvolva algoritmos para as operações abaixo e calcule a complexidade
Leia maisEstrutura de Dados. Unidade VI. -Tabela Hash -Grafos. Prof. Ms. Amilton Souza Martha
Estrutura de Dados Unidade VI -Tabela Hash -Grafos Prof. Ms. Amilton Souza Martha Tabela Hash - Conceitos Um dos maiores problemas encontrados, quando se estuda a alocação de estruturas de dados, é o tempo
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 maisA memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande
A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande região de armazenamento formada por bytes ou palavras, cada
Leia maisINF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15
INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15 1. Um número racional é expresso por dois inteiros: um numerador e um denominador (este último diferente de zero!). Implemente um TAD para representar números
Leia maisSumário. 5COP096 Teoria da Computação Aula 8 Pesquisa em Memória Primária
5COP096 Teoria da Computação Aula 8 Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr barbon@uel.br 1 Sumário 1) Introdução à Pesquisa em Memória Primária 2) Pesquisa Sequencial 3) Pesquisa Binária 4) Árvore
Leia maisDEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA
DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA Sistemas Operativos 2003/2004 Trabalho Prático #2 -- Programação em C com ponteiros -- Objectivos Familiarização
Leia maisBUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES
BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES ALGORITMOS DE BUSCA EM LISTAS COM ALOCAÇÃO SEQÜENCIAL Busca em Listas Lineares A operação de busca é
Leia maisÁrvore Binária de Busca
Árvore Binária de Busca 319 Árvore Binária de Busca! construída de tal forma que, para cada nó:! nós com chaves menores estão na sub-árvore esquerda! nós com chaves maiores (ou iguais) estão na subárvore
Leia maisHashing (Tabela de Dispersão)
Hashing (Tabela de Dispersão) Motivação! Os métodos de pesquisa vistos até agora buscam informações armazenadas com base na comparação de suas chaves.! Para obtermos algoritmos eficientes, armazenamos
Leia maisEstruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos
Estruturas de Dados Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Árvores Conceitos Árvores binárias Árvores binárias de pesquisa Árvores binárias balanceadas Árvores ESTRUTURAS
Leia mais2ª Lista de Exercícios
Universidade Federal de Minas Gerais Departamento de Ciência da Computação Algoritmos e Estruturas de Dados II (Turmas M, N, W, F) 1º Semestre de 2012 Profs. Camilo Oliveira, Gisele Pappa, Ítalo Cunha,
Leia maisAnálise de complexidade
Introdução Algoritmo: sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador) Estratégia: especificar (definir propriedades) arquitectura
Leia maisPesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) R. P. António Viera, 23. R. Carlos Seixas, 9, 6º
Pesquisa Pesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) Ficheiro (ou tabela) Campos Nome Endereço Telefone Antunes, João A. R. P. António Viera, 23 720456
Leia maisCT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches
CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 4) Árvores balanceadas AVL, Rubro-Negras, B-Trees Operações em árvores binárias de busca
Leia maisEstruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa 10.1.4217
Estruturas de Armazenamento e Indexação Rafael Lage Moreira Barbosa 10.1.4217 Estruturas de Armazenamento Banco de Dados são armazenados fisicamente como arquivos de registro, que em geral ficam em discos
Leia maisSistemas Operacionais
Sistemas Operacionais Gerenciamento de Memória Norton Trevisan Roman Marcelo Morandini Jó Ueyama Apostila baseada nos trabalhos de Kalinka Castelo Branco, Antônio Carlos Sementille, Paula Prata e nas transparências
Leia maisAlgoritmos de Busca em Tabelas
Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas estão entre os mais usados. Considere por exemplo um sistema de banco de dados. As operações de busca e recuperação dos dados
Leia maisPesquisa digital. Algoritmos e Estruturas de Dados II
Pesquisa digital Algoritmos e Estruturas de Dados II Pesquisa digital A pesquisa digital usa a representação das chaves para estruturar os dados na memória Por exemplo, a representação de um número em
Leia maisESTRUTURAS DE DADOS AVANÇADAS (INF 1010) (a) Seja um TAD definido por uma lista circular implementada em um vetor.
PUC-Rio Departamento de Informática Período: 2015.1 Horário: 2as-feiras e 4as-feiras de 17-19 30 de março de 2015 ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) 1 a Lista de Exercícios 1. Lista (a) Seja um TAD
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 14 Árvores Binárias Edirlei Soares de Lima Árvores Uma estrutura de dados do tipo árvore permite que dados sejam organizados de maneira hierárquica.
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia maisARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto
Leia maisUniversidade Federal de Mato Grosso do Sul Faculdade de Computação Disciplina de Verão: Algoritmos e Programação II
Universidade Federal de Mato Grosso do Sul Faculdade de Computação Disciplina de Verão: Algoritmos e Programação II Professores: Liana Duenha 10 de março de 2014 Professores: Liana Duenha () Universidade
Leia maisINF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 10 Árvores Binárias (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Introdução Árvores binárias Representação em C Ordens de percurso em árvores binárias Altura de uma árvore
Leia maisPONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas CMP1132 Processo e qualidade de software II Prof. Me. Elias Ferreira Sala: 402 E Quarta-Feira:
Leia maisPROGRAMAÇÃO ESTRUTURADA. CC 2º Período
PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem
Leia maisEstruturas de Dados I
UFES - Curso de verão 2011 Estruturas de Dados I Profa. Juliana Pinheiro Campos jupcampos@gmail.com Árvores binárias de busca (ou São árvores projetadas para dar suporte a operações de busca de forma eficiente.
Leia maisMétodos Computacionais. Árvores
Métodos Computacionais Árvores Árvores Vetores e Listas são ótimos para representar estrutura de dados lineares, mas não para modelar dados hierárquicos Exemplos de dados hierárquicos: sistema de arquivos
Leia maisConversões em Sistemas de Numeração. José Gustavo de Souza Paiva
Conversões em Sistemas de Numeração José Gustavo de Souza Paiva 1 Conversões entre bases que são potências entre si Primeiro caso base binária para base octal Como 2 3 = 8, podemos separar os bits de um
Leia maisTipos de Dados, Tipos Abstratos de Dados Estruturas de Dados
Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados Tipo de dados, tipo abstrato de dados, estruturas de dados Termos parecidos, mas com significados diferentes Tipo de dado Em linguagens de programação
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 maisColeções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS
Coleções Conceitos e Utilização Básica c Professores de ALPRO I Faculdade de Informática PUCRS 05/2012 ALPRO I (FACIN) Coleções: Básico 05/2012 1 / 41 Nota Este material não pode ser reproduzido ou utilizado
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia maisDAS5102 Fundamentos da Estrutura da Informação
Pilhas A estrutura de dados Pilha emula a forma de organização de objetos intuitiva que é utilizada diariamente nos mais diversos contextos da vida humana. Containeres são empilhados e desempilhados diariamente
Leia maisLinguagem C: Árvores Binarias
Instituto de C Linguagem C: Árvores Binarias Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Tópicos Principais Introdução Árvores binárias Implementação
Leia maisLÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES
LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o funcionamento do computador Apresentar a função da memória e dos dispositivos
Leia maisUnidade IV: Ponteiros, Referências e Arrays
Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática
Leia maisESTRUTURAS DE DADOS II
ESTRUTURAS DE DADOS II Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação - UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação - UFJF Conteúdo Programático 1. Introdução
Leia maisBusca em Espaço de Estados
Busca em Espaço de Estados Jomi Fred Hübner jomi@inf.furb.br FURB / BCC Introdução 2 Agente orientado a meta O projetista não determina um mapeamento entre percepções e ações, mas determina que objetivo
Leia maisUniversidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática
Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]
Leia maisBatalha Naval Algoritmos de Busca. Correlações curriculares Matemática: Números: maior que, menor que, iguais a.
Atividade 6 Batalha Naval Algoritmos de Busca Sumário Computadores são freqüentemente requisitados a encontrar informação em grandes coleções de dados. Estes precisam desenvolver métodos rápidos e eficientes
Leia maisPesquisa Sequencial e Binária. Introdução à Programação SI2
Pesquisa Sequencial e Binária Introdução à Programação SI2 3 Contexto Diferentes estratégias para pesquisa (busca) de um elemento específico em um conjunto de dados. Lista, array, coleção Operação importante,
Leia maisE/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética
2 PARADIGMA IMPERATIVO 2.1 CONCEITO As linguagens que pertencem ao paradigma imperativo tomam por base a perspectiva da máquina. Ou seja, no modo como o computador executa programas em linguagem de máquina.
Leia maisMemória Cache. Prof. Leonardo Barreto Campos 1
Memória Cache Prof. Leonardo Barreto Campos 1 Sumário Introdução; Projeto de Memórias Cache; Tamanho; Função de Mapeamento; Política de Escrita; Tamanho da Linha; Número de Memórias Cache; Bibliografia.
Leia maisRAID Redundat Arrays of Inexpensive Disks
RAID Redundat Arrays of Inexpensive Disks Criado em alternativa para os discos grandes e caros. Justificativa: Substituindo discos grandes por muitos discos pequenos, o desempenho melhoraria mais cabeças
Leia maisALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11
ALGORITMOS E ESTRUTURAS DE DADOS Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Uma árvore binária é: uma árvore vazia; ou uma árvore onde qualquer
Leia maisO Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48
Conteúdo 1 Princípios de Contagem e Enumeração Computacional Permutações com Repetições Combinações com Repetições O Problema do Troco Principio da Casa dos Pombos > Princípios de Contagem e Enumeração
Leia maisColeções. Page 1. Coleções. Prof. Anderson Augustinho Uniandrade
Page 1 podem ser comparadas com arrays, visto que também apresentam a capacidade de armazenar referências para vários objetos. Entretanto, as coleções apresentam uma gama de funcionalidades bem maior do
Leia maisSISTEMAS DIGITAIS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com
- Aula 1 - SISTEMA DE NUMERAÇÃO BINÁRIA E DECIMAL Todos os computadores são formados por circuitos digitais, onde as informações e os dados são codificados com dois níveis de tensão, pelo que o seu sistema
Leia maisESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8.
ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8. Grafos Sugestão bibliográfica: ESTRUTURAS DE DADOS USANDO C Aaron
Leia maisFila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC 5710 - Estruturas de Dados - 2008
MAC 5710 - Estruturas de Dados - 2008 Fila de prioridade Fila de prioridade é uma estrutura de dado que mantém uma coleção de elementos, cada um com uma prioridade associada. Valem as operações seguintes.
Leia maisPROJETO DE REDES www.projetoderedes.com.br
PROJETO DE REDES www.projetoderedes.com.br Curso de Tecnologia em Redes de Computadores Disciplina: Redes I Fundamentos - 1º Período Professor: José Maurício S. Pinheiro AULA 6: Switching Uma rede corporativa
Leia maisEAD Árvore - representação usando listas ligadas
4.1. Definição É uma árvore binária em que os seus nodos têm associado uma chave, que - determina a sua posição de colocação na árvore e - obedece às seguintes regras: a chave de um nodo é - maior do que
Leia maisCircuitos Digitais. Conteúdo. Sistema de Numeração e Códigos :: Conversões de Binário para Decimal SISTEMA DE NUMERAÇÃO E CÓDIGOS
Ciência da Computação Sistemas de Numeração e Conversões Prof. Sergio Ribeiro Material adaptado das aulas do Prof. José Maria da UFPI Conteúdo Conversões de binário para decimal. Conversões de decimal
Leia maisPontifícia Universidade Católica do Rio Grande do Sul Faculdade de Engenharia Disciplina de Lógica Computacional Aplicada. Prof. Dr.
Índice 1. SISTEMAS NUMÉRICOS 1.1 Caracterização dos Sistemas Numéricos 1.2 Sistemas Numéricos em uma Base B Qualquer 1.2.1 Sistema de Numeração Decimal 1.2.2. Sistema de Numeração Binário 1.2.3 Sistema
Leia maisTipos agregados. Tipos estruturados
Tipos agregados ou Tipos estruturados permitem a implementação de agrupamentos de dados. exemplos: lista de valores que representam as taxas mensais de inflação durante um ano; ficha de cadastro de um
Leia maisExercícios de Java Aula 19
Exercícios de Java Aula 19 Link do curso: http://www.loiane.com/2013/10/curso-java-basico-java-se-gratuito/ 1. Criar um vetor A com 5 elementos inteiros. Construir um vetor B de mesmo tipo e tamanho e
Leia maisÍndices* Professora Rosane Minghim. * Baseado no material de Leandro C. Cintra e M. C. F. de Oliveira. Fonte: Folk & Zoelick, File Structures.
Índices* Professora Rosane Minghim * Baseado no material de Leandro C. Cintra e M. C. F. de Oliveira. Fonte: Folk & Zoelick, File Structures. Índice Em geral, um índice fornece mecanismos para localizar
Leia maisESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti
ESTRUTURAS DE DADOS I Notas de Aula 1 SUMÁRIO 1. INTRODUÇÃO... 2 1.1 Array (vetores)... 2 2. BUSCA DE ELEMENTOS... 3 2.1 Busca Seqüencial... 3 2.2 Busca Binária... 3 2.3 Busca Indexada... 3 2.4 Busca Hash...
Leia maisA declaração de uma variável vel define o seu tipo. O tipo do dado define como ele será: Armazenado na memória. Manipulado pela ULA.
Representação de Dados Tipos de dados: Caracteres (letras, números n e símbolos). s Lógicos. Inteiros. Ponto flutuante: Notações decimais: BCD. A declaração de uma variável vel define o seu tipo. O tipo
Leia maisOrganização e Arquitetura de Computadores. Aula 10 Ponto Flutuante Parte I. 2002 Juliana F. Camapum Wanderley
Organização e Arquitetura de Computadores Aula 10 Ponto Flutuante Parte I 2002 Juliana F. Camapum Wanderley http://www.cic.unb.br/docentes/juliana/cursos/oac OAC Ponto Flutuante Parte I - 1 Panorama Números
Leia maisAritmética Binária e. Bernardo Nunes Gonçalves
Aritmética Binária e Complemento a Base Bernardo Nunes Gonçalves Sumário Soma e multiplicação binária Subtração e divisão binária Representação com sinal Sinal e magnitude Complemento a base. Adição binária
Leia maisFigura 1 - Diagrama de um sistema de controle de temperatura que requer conversão analógico-digital para permitir o uso de técnicas de processamento
1 2 3 Figura 1 - Diagrama de um sistema de controle de temperatura que requer conversão analógico-digital para permitir o uso de técnicas de processamento digital - (Sistemas Digitais: Princípios e Aplicações
Leia maisSistemas de Nomes Planos
Sistemas de Nomes Planos November 2, 2009 Sumário Sistemas de Nomes Planos e DHTs Chord Sistemas de Nomes Planos Tipicamente, sistemas de nomes à escala da Internet usam nomes estruturados hierarquicamente.
Leia maisFUNDAÇÃO EDUCACIONAL DE ITUIUTABA
FUNDAÇÃO EDUCACIONAL DE ITUIUTABA ASSOCIADA À UNIVERSIDADE DO ESTADO DE MINAS GERAIS CURSO DE SISTEMA DE INFORMAÇÃO PILHA E FILA Prof. Walteno Martins Parreira Júnior www.waltenomartins.com.br waltenomartins@yahoo.com
Leia maisPortas lógicas e circuitos digitais. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007
Portas lógicas e circuitos digitais Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Tópicos Portas Circuito somador Circuito subtrator flip-flops (registradores)
Leia mais1 Transmissão digital em banda base
1 Transmissão digital em banda base A transmissão digital oferece algumas vantagens no que diz respeito ao tratamento do sinal, bem como oferecimento de serviços: Sinal pode ser verificado para avaliar
Leia maisSistemas Operacionais
Sistemas Operacionais Gerência de Arquivos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Conceituação de arquivos Implementação do sistemas de arquivo Introdução Sistema de
Leia maisMatemática Aplicada à Informática
Matemática Aplicada à Informática Unidade 3.0 Sistemas numéricos Curso Técnico em Informática Aline Maciel Zenker SUMÁRIO SUMÁRIO... 2 CONVERSÃO DE BASE NUMÉRICA... 3 1 DECIMAL X BINÁRIO... 3 1.1 Onde
Leia maisEstruturas de Dados Pilhas, Filas e Deques
Estruturas de Dados Pilhas, Filas e Deques Prof. Eduardo Alchieri Estruturas de Dados Pilhas Pilhas Lista LIFO (Last In, First Out) Os elementos são colocados na estrutura (pilha) e retirados em ordem
Leia maisRAID. Propõe o aumento da confiabilidade e desempenho do armazenamento em disco. RAID (Redundant Array of Independent Disks )
RAID O que é um RAID? RAID RAID (Redundant Array of Independent Disks ) Matriz Redundante de Discos Independentes Propõe o aumento da confiabilidade e desempenho do armazenamento em disco. RAID Surgiu
Leia maisProf. Rafael Gross. rafael.gross@fatec.sp.gov.br
Prof. Rafael Gross rafael.gross@fatec.sp.gov.br Todo protocolo define um tipo de endereçamento para identificar o computador e a rede. O IP tem um endereço de 32 bits, este endereço traz o ID (identificador)
Leia maisFundamentos de Programação. Turma CI-240-EST. Josiney de Souza. josineys@inf.ufpr.br
Fundamentos de Programação Turma CI-240-EST Josiney de Souza josineys@inf.ufpr.br Agenda do Dia Aula 2 (07/08/15) Introdução ao Python História Características Estrutura dos código-fonte Primeiros elementos
Leia maisEAD Árvore árvore binária
EAD Árvore árvore binária - Uma árvore binária é um conjunto finito de elementos (nodos) que pode ser vazio ou particionado em três subconjuntos: - raiz da árvore (elemento inicial, que é único); - subárvore
Leia maisOrganização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números
Leia maisO que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.
O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador. Linguagem de Programação Uma linguagem de programação é um método padronizado para expressar
Leia maisSistemas Operacionais
Sistemas Operacionais Gerência de Memória Paginação e Segmentação Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Slides baseados nas apresentações dos prof. Tiago Ferreto e Alexandra
Leia maisConsistem num conjunto de apontadores para instâncias especificas de cada relação.
Mecanismo usado para mais fácil e rapidamente aceder à informação existente numa base de dados. Bases de Dados de elevadas dimensões. Consistem num conjunto de apontadores para instâncias especificas de
Leia maisPesquisa em Memória Primária. Prof. Jonas Potros
Pesquisa em Memória Primária Prof. Jonas Potros Procedimento para Inserir na Árvore Binária Critérios: Atingir um ponteiro nulo em um processo de pesquisa significa uma pesquisa sem sucesso. O ponteiro
Leia maisAlgoritmos Genéticos (GA s)
Algoritmos Genéticos (GA s) 1 Algoritmos Genéticos (GA s) Dado um processo ou método de codificar soluções de um problema na forma de cromossomas e dada uma função de desempenho que nos dá um valor de
Leia mais