Buscar

Heaps: Algoritmos e Estruturas de Dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução
Operações
Fila de prioridade
Algoritmos e Estruturas de Dados 2
Unidade 2: heaps
Rafael Beserra Gomes
Universidade Federal do Rio Grande do Norte
Material compilado em 17 de junho de 2014.
Licença desta apresentação:
http://creativecommons.org/licenses/
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
Definição e Propriedades
Nó de uma árvore binária
Um nó de uma heap contém: chave, filho esquerdo e filho direito.
pai
ch
e d
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
Definição e Propriedades
Propriedades de uma heap
30
26
18
5 7
16
8 6
28
17
4 2
19
Cada nó é maior que seus filhos (heap máximo)
ou é menor que seus filhos (heap mínimo)
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
max-heapify
build-max-heap
Operação max-heapify
10
26
18
5 7
16
8 6
28
17
4 2
19
Considere que a operação é realizada neste nó
e as sub-árvores são heaps máximos.
sub-árvore esquerda é heap máximo sub-árvore direita é heap máximo
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
max-heapify
build-max-heap
Operação max-heapify
10
26
18
5 7
16
8 6
28
17
4 2
19
Este nó é trocado pelo maior dos filhos,
caso seja menor que esse filho.
sub-árvore esquerda é heap máximo sub-árvore direita é heap máximo
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
max-heapify
build-max-heap
Operação max-heapify
28
26
18
5 7
16
8 6
10
17
4 2
19
Nesse exemplo, a sub-árvore direita
deixa de ser heap máximo.
Solução recursiva é aplicada.
sub-árvore esquerda é heap máximo
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
max-heapify
build-max-heap
Operação build-max-heap
5 7 18 6 28 8 16
5
7
6 28
18
8 16
Esta operação transforma toda a árvore binária
em um heap máximo utilizando
o procedimento max-heapify.
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
max-heapify
build-max-heap
Operação build-max-heap
5 7 18 6 28 8 16
5
7
6 28
18
8 16
A operação começa pelo penúltimo
nível (por quê?).
Nó a nó até a raiz aplica-se max-heapify.
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
max-heapify
build-max-heap
Operação build-max-heap
5 28 18 6 7 8 16
5
28
6 7
18
8 16
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
max-heapify
build-max-heap
Operação build-max-heap
28 7 18 6 5 8 16
28
7
6 5
18
8 16
A complexidade desse algoritmo é O(n) [Cormen]
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
Definição
Extração
Incremento de chave
Fila de prioridade
Uma fila de prioridade é uma estrutura de dados que contém um conjunto de chaves,
e admite as operações:
– obter/extrair o elemento de maior/menor chave do conjunto
– incremento/decremento de uma chave específica.
A implementação mais comum é através do uso de heaps.
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
Definição
Extração
Incremento de chave
Extração
30
26
18
5 7
16
8 6
28
17
4
19
Este nó é trocado pelo último elemento do heap.
extração
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
Definição
Extração
Incremento de chave
Extração
4
26
18
5 7
16
8 6
28
17 19
Em seguida, aplica-se max-heapify na raiz.
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
Definição
Extração
Incremento de chave
Incremento de chave
30
26
18
5 7
16
8 6
28
17
4 2
19
O incremento de chave é feito através
de sucessivas trocas entre filho
e pai enquanto necessário para manter a heap.
Exemplo, incrementar este nó para 29.
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
Definição
Extração
Incremento de chave
Incremento de chave
30
26
18
5 7
16
8 6
28
17
29 2
19
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
Definição
Extração
Incremento de chave
Incremento de chave
30
26
18
5 7
16
8 6
28
29
17 2
19
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
Introdução
Operações
Fila de prioridade
Definição
Extração
Incremento de chave
Incremento de chave
30
26
18
5 7
16
8 6
29
28
17 2
19
Rafael Beserra Gomes Algoritmos e Estruturas de Dados 2
	Introdução
	Definição e Propriedades
	Operações
	max-heapify
	build-max-heap
	Fila de prioridade
	Definição
	Extração
	Incremento de chave

Outros materiais