• Nenhum resultado encontrado

E STRUTURAS DED ADOSE A LGORITMOS H

N/A
N/A
Protected

Academic year: 2019

Share "E STRUTURAS DED ADOSE A LGORITMOS H"

Copied!
25
0
0

Texto

(1)

E

STRUTURASDE

D

ADOS E

A

LGORITMOS

H

EAP

B

INÁRIA

Adalberto Cajueiro

Departamento de Sistemas e Computação Universidade Federal de Campina Grande 1

H

EAP

B

INÁRIA

 É uma árvore binária satisfazendo duas

propriedades:

1. Shape property

 Estar completa até pelo menos seu penúltimo nível  Se o seu último nível não estiver completo, todos os

(2)

2

H

EAP

B

INÁRIA

(E

XEMPLO

)

 Applet

 http://people.ksp.sk/~kuko/bak/index.html

completa

esq→dir

max heap

Árvore binária completa

40

19 36

17 3 25 1

2 7

3

H

EAP

B

INÁRIA

(R

EPRESENTACAO

)

4

(3)

E

XERCÍCIO

1

 Desenhe a Max heap representada pelo vetor a seguir

5

Posição

Valor

E

XERCÍCIO

2

 A árvore binária a seguir pode representar uma max heap? Justifique.

42

(4)

4

E

XERCÍCIO

3

 Qual o número mínimo de elementos de uma heap com altura h?

7

40

19 36

17 3 25 1

2

h

20+21+...2h-1 + 1 = n

(1 + 2 + 4 + ... 2h-1) + 1 = n 1(2h - 1)/1 +1 = n

2h - 1 +1 = n 2h = n

E

XERCÍCIO

4

 Qual o número máximo de elementos de uma heap com altura h?

8

40

19 36

17 3 25 1 h

20+21+...2h = n

(5)

E

XERCÍCIO

5

 Qual a altura de uma heap em função do número de elementos?

 Vendo os casos extremos (2h e 2h+1)

9

2

h

≤ n ≤ 2

h+1

-1

h

lg n

h +1

h =

lg(n)

H

EAP

B

INÁRIA

 Qual o invariante de um Max heap?

 Qual a condicao necessária e suficiente para descrever o invariante de um Max heap?

(6)

6

H

EAP

B

INÁRIA

 Qual o invariante de um Max heap?

 Todo elemento pai é maior que seus elementos filhos

 Qual a condicao necessária e suficiente para descrever o invariante de um Max heap?

 A[Parent(i)]  A[i], para todo i que não é raiz

 Como manter o invariante de um Max heap?  A cada insercao e remoção, trocar elementos de forma

a validar a propriedade

 Quão custoso é mander o invariante?

 Os elementos vão subindo ou descendo na heap => O(log n)

11

H

EAP

B

INÁRIA

(H

EAPIFY

)

 Processo de consertar uma heap para que ela preserve seus invariantes

(7)

H

EAP

B

INÁRIA

(H

EAPIFY

)

13

(8)

8

E

XERCÍCIO

 Ilustre a operacao Heapify considerando o seguinte array:

15

E

XERCÍCIO

 O que acontece com o Heapify quando o elemento A[i] é maior que seus filhos?

(9)

E

XERCÍCIO

 Qual a análise do pior caso da Heapify?

 O pior caso ocorre quando a árvore é dividida em 2/3

 T(n) = T(2n/3) + O(1)

Caso 2.Θ(log n)

17

42

32

2 1

6

17 12

5 4 3 8

2n/3

H

EAP

B

INÁRIA

 Como construir uma Heap a partir de um array qualquer?

 Qual o custo dessa construção?

(10)

10

E

XERCÍCIO

 Utilize o build heap para construir a heap a partir do vetor <4,1,3,2,16,9,10,14,8,7>.

19

E

XERCÍCIO

 Utilize o build heap para construir a heap a partir do vetor <4,1,3,2,16,9,10,14,8,7>.

(11)

E

XERCÍCIO

 Utilize o build heap para construir a heap a partir do vetor <4,1,3,14,16,9,10,2,8,7>.

21

E

XERCÍCIO

(12)

12

E

XERCÍCIO

 Utilize o build heap para construir a heap a partir do vetor <4,16,10,14,7,9,3,2,8,1>.

23

E

XERCÍCIO

 Utilize o build heap para construir a heap a partir do vetor <16,14,10,8,7,9,3,2,4,1>.

(13)

B

UILD

H

EAP

(A

NÁLISE

)

 Qual a ordem de complexidade do Buildheap?  Aproximação inicial: O(n.log n)

 Cálculo simples mas não é limite restrito (tight)

 Análise mais detalhada indica: Θ(n). Observe que heapify varia de acordo com a altura do nó (a maioria dos nós tem uma altura pequena).

25

H

EAP

B

INÁRIA

 E se a Heap já estiver construída? Como

(14)

14

H

EAP

B

INÁRIA

(I

NSERCOES

)

 Insira o elemento na ultima posicao da heap.

 Mantenha o invariante da heap, considerando o novo elemento inserido.

40 19 36

17 3 25 1

2 7 20 40

19 36

17 3 25 1

2 7

40

20 36

17 19 25 1

2 7 3 40

19 36

17 20 25 1

2 7 3

inserir(20)

Viola invariante

Viola invariante Invariante ok

27

E

XERCÍCIO

 Insira os elementos 32, 45, 17, 2, 5 na heap seguinte. Mostre visualmente como a heap fica após cada operação.

28

40

19 36

17 3 25 1

(15)

H

EAP

B

INÁRIA

(I

NSERCAO

)

 Como seria o algoritmo de insercao na Heap?

29

H

EAP

B

INÁRIA

(I

NSERCAO

)

(16)

16

H

EAP

B

INÁRIA

(R

EMOCOES

)

 Remocoes na heap acontecem sempre pelo elemento raiz (elemento máximo ou mínimo).

 Mova o ultimo elemento para a raiz

 Mantenha o invariante.

40 19 36

17 3 25 1

2 7

Remover maximo

Viola invariante

Viola invariante Invariante ok 7

19 36

17 3 25 1

2

36 19 7

17 3 25 1

2

36 19 25

17 3 7 1

2

31

E

XERCÍCIO

 Aplique remover maximo 4 vezes e mostre

visualmente como a heap fica após cada operação

32

40

19 36

17 3 25 1

(17)

H

EAP

B

INÁRIA

(R

EMOCAO

)

 Como seria o algoritmo de remocao na Heap?

33

H

EAP

B

INÁRIA

(R

EMOCAO

)

(18)

18

H

EAP

B

INÁRIA

 Heaps sao estruturas eficientes para armazenamento?

 É possível usar heaps para ordenar um conjunto de dados?

 Abordagens para o Heapsort:

1. Pega o conjunto de dados e vai inserindo em uma Min heap. Depois é só remover da heap na ordem crescente (Abordagem 1)

2. Ordenar no próprio vetor (Abordagem 2 – in-place)

35

H

EAPSORT

(A

BORDAGEM

1)

4 1

4

1 2 3

4 16 9 10 1

4 3

1 4 3

2

1 2 3

4 Inserir(4) Inserir(1) Inserir(3) Inserir(2)

1 2 3

4 16 Inserir(16)

1 2 3

4 16 9

Inserir(9) Inserir(10)

(19)

H

EAPSORT

(A

BORDAGEM

1)

Inserir(14)

1 2 3

4 16 9 10

14 8

1 2 3

4 16 9 10

14

Inserir(8)

8 1 2 3

4 7 9 10

14

Inserir(7)

16

37

H

EAPSORT

(A

BORDAGEM

1)

Inserir(14)

1 2 3

4 16 9 10

14 8

1 2 3

4 16 9 10

14

Inserir(8)

8 1 2 3

4 7 9 10

14

(20)

20

H

EAPSORT

(A

BORDAGEM

2)

 Recebe um array completo e transforma-o em heap de forma in-place.

 Evita uso de memória extra.

39

H

EAPSORT

(A

BORDAGEM

2)

 Considerando uma Max heap.

40

(21)

H

EAPSORT

(A

BORDAGEM

2)

41

(22)

22

E

XERCÍCIO

 Use o heapsort (abordagens 1 e 2) para ordenar o vetor <4,1,3,2,16,9,10,14,8,7>.

43

C

ARACTERÍSTICAS

 Não é stable

 In place (Abordagem 2)

 Pior caso e caso médio similares  Θ(n.log n)

 Uma boa implementação do quicksort é melhor

(23)

P

RIORITY

Q

UEUES

 Heapsort é tão bom quanto Mergesort e Quicksort* (exceto para o pior caso)

 Entretanto, a estrutura tem uma enorme utilidade

45

P

RIORITY

Q

UEUES

 Uma fila de prioridades é uma estrutura de dados para manter um conjunto S de elementos, cada um com uma chave associada, em

determinada ordem

 Maior chave deve estabelecer a ordem de acesso aos elementos.

(24)

24

P

RIORITY

Q

UEUES

 Implementação em Java  PriorityQueue

Min heap genérica

Elementos comparáveis ou trabalha com um Comparator Mudança de prioridade on the fly violam a propriedade da

heap

Implementar uma max-heap precisa apenas “inverter” o

Comparator usado.

47

H

EAP

(I

MPLEMENTACAO

)

 Como implementar uma heap que guarda

elementos contendo uma chave e dados satélites?  Elementos devem ser objetos comparáveis (menor,

maior, igual)

 Ou a heap deve trabalhar com um Comparator (mais incomum, mais reutilizável)

 Como considerar isso na interface da heap?

(25)

H

EAP

(I

MPLEMENTACAO

)

public interface GenericHeap<T extends Comparable<T>> { public boolean isEmpty();

public void insert(T element); public T extractRootElement(); public T rootElement();

public T[] heapsort(T[] array); public void buidHeap(T[] array); public T[] toArray();

}

49

R

EFERÊNCIAS

Referências

Documentos relacionados

 No estudo cinético a equação pseudo-segunda ordem foi a que melhor descreveu o processo de adsorção para as argilas in natura e modificadas, exibindo

Serenas. Mirem-se no exemplo daquelas mulheres de Atenas Secam por seus maridos, orgulho e raça de Atenas. b) Onde se lê “Mirem-se”, os autores sugerem que se faça

Com base no exposto, a próxima sessão apresenta a influência das características do sistema nacional de negócios, do setor industrial e do desempenho financeiro

 Para algumas aplicações, skip lists são mais naturais que árvore e levam a algoritmos mais simples e fáceis de implementar..  Performance melhorada por um fator constante em

 Alguns conjuntos dinamicos pressupoem que existe uma relação de ordem entre as chaves.. Isso permite falar do próximo elemento ao invés de um elemento

 Chaves que colidam precisam ter seu hash code “recalculado” para encontrar um slot vazio?.  Todas as chaves estão em

In this study, we investigate the effects of moderate to high amount Brazil nut ingestion on lipid profile, hepatic and kidney biochemical parameters in healthy

O trabalho de investigação que nos propusemos realizar, como dissertação do Mestrado de Psicologia da Educação, especialização em Necessidades Educativas