Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um dado pode ser qualquer.

Slides:



Advertisements
Apresentações semelhantes
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Advertisements

ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
AULA 8 Profa. Sandra de Amo GBC053 – BCC
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
Estrutura de Dados e Algoritmos e Programação e Computadores II
Série de Exercícios.
MC 202 – Estruturas de dados
Árvore Binária - altura máxima A: Inserção de 1, 2, 3, 4, 5, 6 e 7 Pior caso: O(n)
Árvores.

Arquivos Seqüenciais Inhaúma Neves Ferraz
Geometria Computacional Interseção de Segmentos
HeapSort Filas de Prioridade – Heap
Pesquisa em Memória Primária – Árvores de Busca
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
SEMINÁRIO DE ALGORITMOS
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Classificação e Pesquisa de Dados
Árvores Binárias de Pesquisa (ABP)
Métodos de Classificação por Seleção: HeapSort
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
CAP-223 Árvore através de uma Árvore Binária A BCDE FGHIJK A BC D E FGHIJK.
Indexação de Arquivos Página de rosto.
Árvores Equilibradas Sumário Splay B-tree Vermelho-Preto AA e BB
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
T ÓPICOS DE I.A. Métodos de Busca Busca em Espaços de Estado Prof. Mário Dantas.
Heaps de Fibonacci Lino Alves.
Algoritmos e Estruturas de Dados II
Pesquisa em Memória Primária
Árvores binárias de pesquisa com balanceamento
Exercícios PAA- Grafos
INF 1010 Estruturas de Dados Avançadas
INF 1010 Estruturas de Dados Avançadas
Árvore de Pesquisa Memória Secundária Engenharia de Computação - UFG.
Algorítmos e estrutura de dados III
Algorítmos e estrutura de dados III Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Algorítmos e estrutura de dados III
Operações de Inserção e Remoção – BTree Resumo
Algoritmos e Estrutura de Dados III
Introdução e Busca Cega
Árvores Balanceadas Liliane Rose Benning Salgado.
Rotação Simples e Dupla Katia Guimarães
Katia S. Guimarães Heaps Katia S. Guimarães
Katia S. Guimarães Heapsort Katia S. Guimarães
Estruturas de Dados e Ordenação
Ordenação de Dados (III)
Ceça Moraes – Introdução à Programação SI1
1 A COMPUTAÇÃO MODERNA Valdemar W. Setzer Depto. de Ciência da Computação da USP
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Átila Valgueiro Malta Moreira Juliana Medeiros de Lucena Rafael Alberto.
Árvore Binária de Busca
Árvores B Obs: Uma árvore 2-3 é uma árvore B de ordem 1.
Árvores Prof. Dr. rer. nat. Daniel Duarte Abdala DAS 5102 – Fundamentos da Estrutura da Informação 1.

Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
Árvores Vermelho-Preto
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Prof. Hilton Cardoso Marins Junior

Árvores Rubro-Negras São árvores balanceadas segundo um critério ligeiramente diferente do usado em árvores AVL A todos os nós é associada uma cor que.
Heaps Binomiais Rômulo de Almeida Bruno Mestrando em Ciência da Computação Professora Liliane Salgado Disciplina - Algoritmos.
AULA 21 Profa. Sandra de Amo BCC - UFU
Árvores de Busca Binária
Heaps Katia S. Guimarães
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva.
Árvores Binárias e Árvores AVL Katia Guimarães. Árvores Binárias e Árvores AVL Katia S. Guimarães
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca Gulosa em Grafos IF672 - Algoritmos e Estruturas de Dados CIn -
INE5408 Estruturas de Dados Árvores B - Estrutura e peculiaridades -Algoritmos de inserção, pesquisa e deleção.
Transcrição da apresentação:

Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um dado pode ser qualquer coisa: tempo, custo, etc, mas precisa ser um escalar operações comuns (eficientes)‏ Seleção do elemento com maior (ou menor) prioridade Remoção do elemento de maior (ou menor) prioridade Inserção de um novo elemento 1 1

Listas de Prioridade Implementação O(n)‏ O(log n)‏ O(1)‏ Heap O(n log n)‏ Construção Alteração (de prioridade)‏ Remoção (do menor)‏ Inserção Seleção Árvore Balanceada Lista Ordenada Lista Operação O(n log n)‏ O(n)‏ Construção O(log n)‏ Alteração (de prioridade)‏ O(1)‏ Remoção (do menor)‏ Inserção Seleção Árvore Balanceada Lista Ordenada Lista Operação 2 2

Heaps – Lista de Prioridade Podem ser pensadas como árvores binárias (mas não de busca) onde todos os nós possuem as propriedades chave do nó > chave à esquerda (se houver)‏ chave do nó > chave à direita (se houver)‏ Propriedade é válida para toda a árvore a raiz contém a chave de maior prioridade Implementação: não como árvores, heaps são implementados usando vetores ou listas sequenciais 3 3

Heaps – Lista de Prioridade Dado um nó armazenado no índice i, é possível computar o índice do nó filho esquerdo de i : 2 i do nó filho direito de i : 2 i + 1 do nó pai de i : i div 2 si< s i/2 1 2 3 4 5 6 7 8 9 10 11 a b c d e f g h i j k 1 2 3 4 níveis 4 4

Heaps – Lista de Prioridade Para armazenar uma árvore de altura h precisamos de um array de 2h – 1 (número de nós de uma árvore cheia de altura h)‏ a 1 2 3 4 5 6 7 8 9 10 11 a b c d e f g h i j k b c 1 2 3 4 d e níveis f g h i j k 5 5

Alterando Prioridade em Heaps alteração de uma chave: para manter a propriedade de heap, chaves podem migrar para baixo (se ele diminuir de valor) para cima (se ele aumentar de valor)‏ Para cada uma dessas situações utiliza-se um algoritmo de migração: subir (i, n, S) migra o nó i para cima no heap S descer (i,n,S) migra o nó i para baixo no heap S n o número total de nós da heap 6 6

Migração de valores em Heap pai – elemento si/2 proc Subir (i, n, S [1 .. n]) { se i > 1 e S [i/2] < S [i] então { trocar (S [i], S [i/2]) Subir (i/2, n, S)‏ } 7 7

Migração de valores em Heap proc Descer (i, n, S [1 .. n]) { se 2i+1  n e S [2i] > S [2i+1] então filho  2i senão filho  2i+1 se filho  n e S [filho] > S [i] então { trocar (S [i], S [filho])‏ Descer (filho, n, S) } 8 8

Complexidade Qual a complexidade de subir() e descer () ? Por que? 9 9

HeapSort Ordenação: Construir o heap Repetidamente remover o menor elemento e movê-lo para o fim da lista, acertando o heap: m = n; enquanto m > 1 fazer { trocar (S [1],S [m]); descer (1, m, S)‏ m = m -1; } Complexidade? 10 10

Inserção em Heap Para inserir nova chave: inserir novo valor na posição n + 1 do heap chamar Subir()‏ proc Inserir (x, n, H [1 .. n + 1]) { n  n + 1 H [n]  x Subir (n, n, H)‏ } 11 11

Remoção num Heap substituir a raiz S [1] por S (n) e chamar Descer Obs.: em heap, remoção é da chave de maior prioridade proc Remover (n, H [1 .. n]) { H [1] H [n] n  n – 1 Descer (1, n, H)‏ } 12 12

Construção de Heaps Se queremos construir um Heap com n elementos, podemos recorrer a um algoritmo ingênuo, isto é, inserir os n elementos um a um num heap inicialmente vazio. Mais simplesmente, podemos colocar os n elementos no array H e “subí-los” um a um para i desde 2 até n fazer Subir (i, i, H)‏ complexidade O(n log n)‏ 13 13

Construção de Heaps Tem como melhorar a construção? O que fazer? 14 14

Construção de Heaps Entretanto, pode-se ordenar o heap em O(n) se observarmos: As folhas da árvore (elementos S [n/2 + 1 .. n]) não têm descendentes e portanto já estão ordenadas em relação a eles Se acertarmos todos os nós internos (elementos S [1 .. n /2]) em relação a seus descendentes (rotina Descer), o heap estará pronto É preciso trabalhar de trás para frente desde n /2 até 1 pois as propriedades da heap são observadas apenas nos níveis mais baixos 15 15

Complexidade - construção de Heap Suponhamos que a árvore seja cheia. Então, n = 2h – 1, onde h é a altura desses, apenas 2h – 1 – 1 são nós internos A raiz da árvore pode descer no máximo h – 1 níveis Os dois nós de nível 2 podem descer h – 2 níveis ... Os 2h – 2 nós de nível h – 1 podem descer 1 nível Logo, no total temos 16 16

Complexidade - construção de Heap Para resolver esse somatório, dobramos S e a seguir subtraímos S agrupando os termos com mesma potência de 2 17 17