Dicionários. TAD Orientado a conteúdo

Documentos relacionados
Dicionários. Prof. César Melo

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

Árvores binárias de busca

Algoritmos de pesquisa. Tabelas de dispersão/hash

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

Algoritmos e Estrutura de Dados. Aula 17 Estrutura de Dados: Árvores AVL Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza

ÁRVORE AVL. Problema do balanceamento

Tabelas de dispersão/hash

Árvore Vermelho-Preta. Estrutura de Dados II Jairo Francisco de Souza

PROGRAMAÇÃO III (LTSI)

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

Árvores AVL e Árvores B. Jeane Melo

ESTRUTURA DE DADOS CIÊNCIA E TECNOLOGIA DO RIO. Curso de Tecnologia em Sistemas para Internet

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação. Árvores Balanceadas

Árvores Rubro-Negra IFRN

Árvores Vermelho-Preto

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Árvores. Prof. César Melo ICOMP/UFAM

MC3305 Algoritmos e Estruturas de Dados II. Aula 02 Hashing. Prof. Jesús P. Mena-Chalco.

Linguagem C: Árvores AVL

Uma árvore binária de busca não garante acesso em tempo logarítmico.

Árvores Binárias de Busca

ALGORITMOS AVANÇADOS. UNIDADE V Estruturas de dados dos tipos Árvore Binária e Árvore AVL. Luiz Leão

Hashing: conceitos. Hashing

Estruturas de Dados. Árvores AVL: Partes I e II. Desempenho de ABBs (Revisão)

ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS. Cristina Boeres

Árvores de pesquisa. Árvores de pesquisa equilibradas

Árvores Binárias Balanceadas Estrutura de Dados I

Árvores Equilibradas. Sumário

Matemática Discreta 12

Árvores Binárias de Busca

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

Árvores AVL. O balanceamento da árvore pode ser realizado localmente se apenas uma porção da árvore for afetada por operações de inserção ou remoção.

Árvores balanceadas. Aleardo Manacero Jr.

Lista de Prioridades. Estrutura de Dados II Prof. Erinaldo

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

Árvores Rubro-Negras. Árvores Rubro-Negras. (Vermelho-Preta) Estrutura da Árvore. Estrutura da Árvore

Árvores AVL (Balanceadas) Profª.Drª. Roseli Ap. Francelin Romero Fonte: Profa. Patrícia Marchetti Revisão: Gedson Faria

Algoritmos e Estruturas de Dados II Árvores - AVL. Prof. César Melo DCC/ICE/UFAM

ICET CURSO: Ciência da Computação e Sistemas de Informação (Estrutura de Dados) Estudos Disciplinares Campus: Data: / / Nome:

Árvores AVL. Prof. Robinson Alves

Estruturas de dados. -Lista ligada -Pilha -Fila -Árvore -Hashtable

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

Árvores AVL. Estrutura de Dados II Jairo Francisco de Souza

Árvores AVL. Nesta aula será apresentado o ADT árvore AVL que são árvores binárias de altura equilibrada. Algoritmos e Estruturas de Dados I

A inserção da chave 6 da árvore acima resulta na árvore abaixo.

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

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

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Exercícios: Árvores. Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C

ESTRUTURA DE DADOS DCC013. Árvore Binária de Busca

SCC Capítulo 5 Métodos de Busca [3]

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

INE5408 Estruturas de Dados

ESTRUTURA DE DADOS E ALGORITMOS. Hashing (Tabela de Dispersão) Cristina Boeres

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas)

Aula 13 Árvores Rubro-Negras

Tabelas de Dispersão. Estrutura de Dados e Algoritmos

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

Árvores Binárias Balanceadas

ÁRVORE RUBRO- NEGRA. Prof. André Backes. Também conhecida como árvore vermelhopreto

Árvores binárias de busca

i a[i]

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

Pedro Vasconcelos DCC/FCUP. Programação Funcional 16 a Aula Árvores equilibradas

Complexidade de Algoritmos

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?

Árvores B. Prof. Leandro C. Fernandes. Estruturas de Dados. Adaptado de: Leandro C. Cintra e M.C.F. de Oliveira

UNIVERSIDADE ESTADUAL DO CEARÁ. Relatório Final: Estrutura de Dados II

Árvores Binárias de Busca

Árvores Binárias e AVL Felipe Barros Pontes Gustavo Márcio de Morais Cunha Márcio de Medeiros Ribeiro

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

Splaying Tree (Árvore espalhada) Estrutura de Dados II Jairo Francisco de Souza

Hashing Endereçamento Direto Tabelas Hash

Problemas com ABP Desbalanceamento progressivo

INF1010 Lista de Exercícios 2

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

Aula 15: Pesquisa em Memória Primária. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Aula 16: Pesquisa em Memória Primária - Árvores AVL. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Árvores de Pesquisa (Parte I)

Ordenação: Heapsort. Algoritmos e Estruturas de Dados II

1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó.

Tabelas de Espalhamento (hash)

DAINF - Departamento de Informática

Tabelas Hash Endereçamento Direto

Árvores Conceitos gerais

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

Splaying Tree (Árvore espalhada) Estrutura de Dados II Jairo Francisco de Souza

{ = == NULL) = == NULL)

Árvores Binárias. 9/11 e 11/11 Conceitos Representação e Implementação

Árvores AVL (Adelson-Velskii and Landis)

Listas de Prioridade. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC.

Introdução Métodos de Busca Parte 1

Árvores de Pesquisa. A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar informação.

Árvores Binárias de Busca

Árvores AVL IAED, 2014/2015

Transcrição:

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) insere um item x no dicionário d Remover(d, x) remove um item x de um dicionário d

Tipos de dicionários státicos Construídos uma vez e nunca mudam. Busca tem custo ótimo, desde que seus elementos estejam ordenados Aonde implementar: Vetor Semiinâmicos Construídos com um certa margem para alterações Suporte para inserção e Busca. Remoção é um problema Hashing com endereçamento direto. inâmicos Construído com completa capacidade de alteração Inserção, busca e remoção são implementados com custos ótimos Árvores e Hashing com endereçamento aberto.

Dicionário: Estático Nosso amigo Vetor Variável composta Homogênea que permite o acesso DIRETO a qualquer elemento. Vamos considerar a operação de busca sendo executadas no vetor. Cenário I: Vetor desordenado. Cenário II: Vetor ordenado.

Vetor desordenado Única forma de implementar a busca por um elemento é examinar sequencialmente os elementos no vetor. Reduz o tamanho do problema em UMA unidade por comparação Qual o PIOR CASO para essa abordagem? Quanto custa fazer isso em termos de comparações?

Vetor Ordenado Existe uma nova informação sobre o vetor, vamos usar a informação!!! Busca Binária!!! Reduzir o problema pela metade com apenas UMA comparação. Qual o PIOR CASO para essa abordagem? Quanto custa fazer isso em termos de comparações?

Exemplo & Análise

Custos Inserir Remover Buscar Estático N/A N/A Semi-dinâmico Dinâmica N comparações, vetor desordenado log(n) comparações, vetor ordenado

Tipos de dicionários státicos Construídos uma vez e nunca mudam. Busca é ótima desde que seus elementos estejam ordenados Aonde implementar: Vetor Semiinâmicos Construídos com um certa margem para alterações Suporte para inserção e Busca. Remoção é um problema Hashing com endereçamento fechado. inâmicos Construído com completa capacidade de alteração Inserção, busca e remoção são implementados com custos ótimos Árvores e Hashing com endereçamento aberto.

Semi-Dinâmicos Os métodos de busca visto até momento: São baseado na comparação das chaves. O algoritmo mais eficiente considera os elementos ordenados e tiram proveito disso. O algoritmo mais eficientes tem custo computacional O(log n). A busca baseada em hashing (tabela de dispersão ou espalhamento) é mais eficiente. Na média, é possível encontrar a chave com apenas K COMPARAÇÕES, onde k é beemmm menor que o tamanho do

O hashing

Exemplo

Hashing Perfeito

Em geral é imperfeito

A Função de Hash Uma função de dispersão (função hash) mapeia uma chave de busca para um índice da tabela. O ideal é que a função forneça índices únicos para o conjunto de chaves. A função de Hashing tem influência direta na eficiência das operações da Hash. Quanto melhor for o espalhamento mais eficiente serão as operações

Propriedade De fácil implementação; Conta simples de ser feita Devem espalhar bem as chaves de busca; Evitar colisões, duas ou mais chaves distribuídas na mesma posição;

Uma função Hashing H(x) = x resto M M deve ser um número PRIMO. O FATOR de CARGA da tabela é um bom parâmetro para iniciar a busca por M. A ocupação ESPERADA da tabela

Caso de uso

Colisões Duas chaves distintas são mapeadas para a mesma entrada da tabela. O Tratamento das colisões é feito Encadeamento Endereçamento aberto

Endereçamento Aberto As chaves que sofreram colisão são inseridas na própria tabela. Como buscar uma posição Não ocupada na Tabela Prospecção Linear Prospecção Quadrática Duplo Hashing

Prospecção Linear O índice é incrementado (+i) (h(x) + i) RESTO M Encerra Prospecção se a posição estiver vazia

O Que é preciso para construir uma Hash? UM vetor de tamanho suficientemente GRANDE UMA função de Espalhamento, que distribua bem os elemento UM Método de Tratamento de Colisão, encontre um espaço vazio

Análise Operação de Inserção Calcular a posição, constante; No caso de colisão, J tentativas; O que garante um J pequeno é uma boa escolha da função de hashing e o tamanho da tabela

Análise Operação de BUSCA Calcular a posição, constante; Prospectar a tabela: Até encontrar a chave ou; Um espaço vazio; Máximo de J tentativas.

Custos Inserir Remover Buscar Estático N/A N/A Semi-dinâmico Constante N/A Constante Dinâmica N comparações, vetor desordenado log(n) comparações, vetor ordenado

Tipos de dicionários státicos Construídos uma vez e nunca mudam. Busca é ótima desde que seus elementos estejam ordenados Aonde implementar: Vetor Semiinâmicos Construídos com um certa margem para alterações Suporte para inserção e Busca. Remoção é um problema Hashing com endereçamento fechado. inâmicos Construído com completa capacidade de alteração Inserção, busca e remoção são implementados com custos ótimos Árvores e Hashing com endereçamento aberto.

Dinâmico Implementa Inserção, Busca e Remoção Menor custo para as três operações Estruturas usadas Árvore de Busca Balanceada (AVL, Vermelha e Preta, Arvores 1-2-3); Tabela Hashing com tratamento de colisão

G.M. Adelson-Velskii e E.M. Landis Árvore Binária de Busca Balanceada No máximo DOIS descendentes por nó; Os descendentes no ramo ESQUERDO da árvore é MENOR que a raiz Os descendentes no ramo DIREITO da árvore é MAIOR que a raiz; Para nó qualquer da árvore, as alturas de suas sub-árvores esquerda e direita diferem de, no máximo, 1.

Instância de uma AVL

Busca 16

Busca II 5

Busca III 1

Análise da Busca Similar a Busca Binária Elimina aproximadamente metade dos elementos em cada comparação Seu custo é proporcional a log(n), onfr n é o número de elementos na árvore

Custos Inserir Remover Buscar Estático N/A N/A Semi-dinâmico Constante N/A Constante Dinâmica N comparações, vetor desordenado log(n) comparações, vetor ordenado log(n) comparações

Inserção 16

Após a Inserção FB=+1 FB=+1 FB=+1

Análise da Inserção O custo de Buscar a posição adequada para a inserção do elemento O custo de manter a propriedade da AVL ao longo do caminho de BUSCA Verificar os FBs e ajustá-los quando eles forem iguais a (+/-)DOIS Custo total : log(n)

Custos Inserir Remover Buscar Estático N/A N/A Semidinâmico Dinâmica N comparações, vetor desordenado log(n) comparações, vetor ordenado Constante N/A Constante log(n) comparações log(n) comparações

Remoção 16

Remoção FB=+1 16 FB=+1 FB=+1

Após a Remoção FB=0 FB=0 FB=0

Análise da Remoção O custo de Buscar o elemento a ser removido O custo de manter a propriedade da AVL ao longo do caminho de BUSCA Verificar os FBs e ajustá-los quando eles forem iguais a (+/-)DOIS Custo total : log(n)

Custos Inserir Remover Buscar Estático N/A N/A Semidinâmico Dinâmica N comparações, vetor desordenado log(n) comparações, vetor ordenado Constante N/A Constante log(n) comparações log(n) comparações log(n) comparações

Desbalanceamento: Rotação Simple Direita

Desbalanceamento: Rotação Simples Direita FB= -2 FB= 0 FB= 0 FB= -1 FB= 0 FB= 0

Desbalanceamento: Rotação Simples Esquerda

Desbalanceamento: Rotação Dupla Direita

Desbalanceamento: Rotação Dupla Esquerda 6 5 4 4 6 5

Tipos de Rotação Da Raiz Do Filho mais pesado Tipo Rotação +2 +1 Simples para Esquerda Fator de Balanceamento +2-1 Dupla para Direita -2-1 Simples para Direita -2 +1 Dupla para Esquerda