Heaps Binomiais Rômulo de Almeida Bruno Mestrando em Ciência da Computação Professora Liliane Salgado Disciplina - Algoritmos.

Slides:



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

Marco Antonio Montebello Júnior
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
Aula 10 Algoritmos de Busca
Análise e Síntese de Algoritmos
Estrutura de Dados e Algoritmos e Programação e Computadores II
Prof. M.Sc. Fábio Francisco da Costa Fontes Abril
Série de Exercícios.
Árvores.

David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
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
André Lopes Pereira Luiz Carlos Barboza Júnior
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Classificação e Pesquisa de Dados
Métodos de Classificação por Seleção: HeapSort
Capítulo 3 - Russell e Norvig
Listas Encadeadas.
Prof. Ernesto Lindstaedt
ALGORITMOS E ESTRUTURAS DE DADOS
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 02a Roberto Ferrari Mauricio Falvo.
LISTAS DUPLAMENTE ENCADEADAS
Alberto Rodrigues Costa Junior - (arcj)
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
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 02b Roberto Ferrari Mauricio Falvo.
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 04b Roberto Ferrari Mauricio Falvo.
Árvore de Pesquisa Memória Secundária Engenharia de Computação - UFG.
Árvores Binárias de Pesquisa
Algorítmos e estrutura de dados III Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Análise e Síntese de Algoritmos
Ordenação por inserção
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 03a
1. Se este nó é raiz de uma árvore QuasiEquilibrada de ordem k, e
Listas, Filas e Pilhas Katia Guimarães.
Estruturas de Dados e Ordenaçã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.
Á R V O R E S.
© 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
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Análise de Complexidade do Algoritmo de Dijkstra
Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
Estruturas de Dados Aula 15: Árvores
Aula 06 – 05/04 Árvores binárias.
Aula 10 Algoritmos de Busca
Disciplina Análise de Algoritmos Bacharelado em CC
© 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
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Como analisar um algoritmo
AVL Árvores Equilibradas Sumário AVL Splay B Vermelho-Preto AA e BB Multidimensionais quaternárias k-d [Pesquisa Lexicográfica tries multivia tries binárias.
1 TAD Fila com Prioridade -FCP ATAI. 2 TAD Fila com Prioridade (Priority Queue) TAD Fila com Prioridade armazena uma colecção de elementos com prioridade.
Árvores de Busca Binária
1 de outubro de Árvores de Busca e Árvores AVL Parte 1 Katia Guimarães.
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
© 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.
1 Heap Sort Algoritmos e Estuturas de Dados Cátia Vaz.
UNIVERSIDADE FEDERAL DE MINAS GERAIS Árvores Cristiano Arbex Valle Vinicius Fernandes dos Santos
Ordenação: Terminologia
Árvores.
Transcrição da apresentação:

Heaps Binomiais Rômulo de Almeida Bruno Mestrando em Ciência da Computação Professora Liliane Salgado Disciplina - Algoritmos

Agenda Histórico Visão Geral Árvores Binomiais Heap Binomial Operações em Heaps Binomiais Aplicações Referências

Histórico “A Data Structure for Manipulating Priority Queues”, Jean Vuillemin, 1978 – Université de Paris-sud, Orsay, France. ◦ABSTRACT: A data structure is described which can be used for representing a collection of priority queues. The primitive operations are insertion, deletion, union, update, and search for an item of earliest priority. “Implementation and analysis of binomial queue algorithms”, Brown, M.R.

Visão Geral Estrutura de dados que faz parte das mergeable heaps (Fibonacci heaps e Soft heaps) e suporta as seguintes operações:Fibonacci heapsSoft heaps ◦MAKE-HEAP() ◦INSERT(H,x) ◦MINIMUM(H) ◦EXTRACT-MIN(H) ◦UNION(H 1,H 2 ) ◦DECREASE-KEY(H,x,k) ◦DELETE(H,x)

Visão Geral (Análise Assintótica) ProcedimentoHeap Binária (pior caso) Heap Binomial (pior caso) Heap de Fibonacci (amortizado) MAKE-HEAPΘ(1) INSERTΘ(lg n)O(lg n)Θ(1) MINIMUMΘ(1)*O(lg n)*Θ(1) EXTRACT-MINΘ(lg n) O(lg n) UNIONΘ(n)O(lg n)Θ(1) DECREASE-KEYΘ(lg n) Θ(1) DELETEΘ(lg n) O(lg n) Estrutura de Prioridades => Ruim para Busca

Árvores Binomiais Uma Árvore Binomial B k é uma árvore ordenada definida recursivamente: ◦k = 0, um único nó ◦Senão, duas árvores B k-1 ligadas: a raiz de uma é a filha mais a esquerda da outra.

Árvores Binomiais Propriedades de B k : ◦possui 2 k nós, ◦a altura da árvore é k, ◦há exatamente nós na profundidade i, onde i = 0,...,k ◦a raiz tem grau k (maior grau); se os nós filhos da raiz fossem numerados da esquerda para a direita por k-1, k-2,..., 0, um dado nó i é a raiz de uma sub-árvore B i. Corolário: O grau máximo de qualquer nó de uma árvore binomial de n nós é lg n.

Heap Binomial Um Heap Binomial H é um conjunto de árvores binomiais com as seguintes propriedades: ◦cada árvore é ordenada como um heap mínino (ou máximo) ◦Há no máximo uma árvore binomial em H com uma raíz de um determinado grau.  Se H tem n nós, então ela contém no máximo lg n + 1 árvores binomiais. Prova: observe que, em binário, n tem lg n + 1 bits. Como cada árvore binomial de ordem k tem 2 k nós, teríamos uma árvore para cada bit de n que fosse igual a 1.

Heaps são representadas como listas ordenadas (por grau/altura) de árvores binomiais Exemplo: Uma heap binomial com 13 (=1011B) nós Heap Binomial

Criar novo Heap Binomial Encontrar chave mínima Unir dois Heaps Binomiais Inserir nó Extrair nó com chave mínima Decrementar chave Apagar chave Operações em Heaps Binomiais

MAKE-BINOMIAL-HEAP() - O(1) ◦Cria um heap binomial vazio onde o nó inicial é igual a null BINOMIAL-HEAP-MINIMUM(H)- O(lgn) ◦Retorna o menor valor Operações em Heaps Binomiais y := NIL x := H.inicio min := infinity while x <> NIL do if x.chave < min then min := x.chave y := x x := x.irmao return y H.inicio = NIL return H

BINOMIAL-HEAP-UNION(H 1,H 2 ) - O(lgn) ◦2 partes:  Criar um heap resultante com o merge (H1, H2).  Executar um laço até que esse novo heap tenha todas as sub árvores em ordem crescente por grau e que nenhuma sub árvore tenha mesmo grau que outra. Operações em Heaps Binomiais

BINOMIAL-HEAP-UNION(H 1,H 2 ) ◦4 casos (x = nó inicial do heap):  1 (x.degree != next-x.degree): os ponteiros se deslocam uma posiçao mais baixo na lista de raízes. Ou seja, x passa a apontar para seu irmao.  2 (x.degree = next-x.degree = next-x.irmao.degree): os ponteiros se movem uma posição mais abaixo na lista, e a próxima iteração executa o caso 3 ou o caso 4.  3 (x.degree = next-x.degree != next-x.irmao.degree & x.key <= next-x.key): remove-se next-x da lista de raízes e a liga-se a x, criando uma árvore B k + 1  4 (x.degree = next-x.degree != next-x.irmao.degree & x.key > next-x.key): remove-se x da lista de raízes e a liga-se a next-x, criando uma árvore B k + 1 Operações em Heaps Binomiais

BINOMIAL-HEAP-UNION(H 1,H 2 ) Operações em Heaps Binomiais H:=make-binomial-Heap() H.inicio := Binomial-Heap-Merge(H1,H2) if H.inicio = NIL then return H x.ant := NIL x.prox := x.irmao while x.prox <> NIL do if (x.grau <> x.prox.grau) or (x.prox.irmao <> NIL and x.prox.irmao.grau = x.grau) then x.ant := x x := x.prox else if x.chave <= x.prox.chave then x.irmao := x.prox.irmao Binomial-Link(x.prox,x) else if x.ant = NIL then H.inicio = x.prox else x.ant.irmao := x.prox Binomial-Link(x,x.prox) x := x.prox x.prox := x.irmao return H

BINOMIAL-HEAP-MERGE(H1,H2) BINOMIAL-LINK(Y,Z) Operações em Heaps Binomiais y.pai := z y.irmao := z.filho z.filho := y z.grau := z.grau + 1 a = H1.inicio b = H2.inicio H1.inicio = minimoGrau(a, b) if H1.inicio = NIL return if H1.inicio = b then b = a a = H1.inicio while b <> NIL do if a.irmao = NIL then a.irmao = b return else if a.irmao.grau < b.grau then a = a.irmao else c = b.irmao b.irmao = a.irmao a.irmao = b a = a.irmao b = c

BINOMIAL-HEAP-UNION(H 1,H 2 ) Operações em Heaps Binomiais APPLET IMG 1IMG 2

BINOMIAL-HEAP-INSERT(H,x) - O(lgn) BINOMIAL-HEAP-EXTRACT-MIN(H) - O(lgn) Operações em Heaps Binomiais H' := makeHeap() x.pai := NIL x.filho := NIL x.irmao := NIL x.grau := 0 H'.inicio := x H := uniao(H,H‘) //encontrar a raiz x com a chave mínima em H e remover x da lista H':= makeHeap() //inverter a ordem da lista ligada de filhos de x, e definir H' apontando //para o inicio da lista resultante H:= Uniao(H,H') return x EXEMPLO

BINOMIAL-HEAP-DECREASE- KEY(H,x,k) - O(lgn) BINOMIAL-HEAP-DELETE(H,x) - O(lgn) Operações em Heaps Binomiais if k > x.chave then error “new key is greater than current key" x.chave := k y := x z := y.pai while z <> NIL and y.chave < z.chave do troca y.chave e z.chave if y and z have satellite fields, exchange them, too. y := z z := y.pai BINOMIAL-HEAP-DECREASE-KEY(H,x,-∞) BINOMIAL-HEAP-EXTRACT-MIN(H) EXEMPLO

Aplicações Artigo de Vuillemin: ◦Job scheduling ◦Discrete simulation languages, where labels represent the time at which events are to occur, ◦Various sorting problems ◦Optimal code constructions ◦Chartre's prime number generator ◦Brown's power series multiplication ◦Numerical analysis algorithms and in graph algorithms for such problems as finding shortest paths and minimum cost spanning tree.

Referências Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, ISBN Chapter 19: Binomial Heaps, pp.455–475.Introduction to Algorithms Vuillemin, J. (1978). A data structure for manipulating priority queues. Communications of the ACM 21, Disponível: Heap.html

Dúvidas ?

VOLTAR