• Nenhum resultado encontrado

Árvore Hierárquica

N/A
N/A
Protected

Academic year: 2022

Share "Árvore Hierárquica"

Copied!
22
0
0

Texto

(1)

Árvore Hierárquica

Em inglês é chamada de Heap.

Representar: conjunto C de elementos com relação .

Operações: Insx,C (inserir x em C e ExMaxC (extrair o máximo do conjunto).

Chamado também de Fila de Prioridade.

Definição: É uma árvore binária tal que:

1. Para um inteiro p  0 todas as folhas estão na profundidade p ou p  1.

2. As de profundidade p estão todas "à esquerda" das de profundidade p  1.

3. Conteúdo de um vértice v é  conteúdo dos filhos de v.

(2)

30

9 6

2 1

30

9 6

1 2

1

elemento novo

(3)

1 6

2 9

Não é árvore hierarquica

30

1 6

2 9

Não é árvore hierarquica

As propriedades (1) e (2) implicam que a árvore é quase completa ou completa.

Se todas as folhas ocorrem na profundidade p então a árvore é completa,

(4)

com profundidade 2p1  1 vértices.

A propriedade (3) é chamada de hierarquização.

Se a relação de ordem for  ao invés de , o mínimo ocorre na raiz.

Seja M um vetor na memória:

M

2i

M

2i+1

M

i

Se Mj é um filho então Mj/2 é o pai, filho esquerdo ou direito (j  2i  1  2i  1/2  i).

(5)

9 6

1 2

filho esq de

9

filho dir de

9

2 2 4 2 2 1 5

i

1 2 3 4 5

M 30 9 6 1 2

1 2 2 1 2 1 3 filho esq de

30

filho dir de

30

(6)

Vantagem: representação SEM apontador.

Operação de inserção Insx, C

8

3 6

2 1 5 9

(n+1) ésimo, novo conj. C, n = 6

(7)

3 -

2 1 5 6

9 ELEM

9>6

Rebaixado

9

3 8

2 1 5 6

Rebaixado 9

ELEM

9>8

Exercício: Se o elemento novo fosse 7, ao invés de 9?

(8)

Algoritmo Insx, C

Entrada: vetor M que representa uma árvore hierárquica com n objetos, e um objeto x

Saída: vetor M contendo x 1. ELEM x;

2. Mn1x; (* provisoriamente colocado como última folha *) 3. jn  1; i  n  1/2; (* índice do pai *)

4. enqto i  0 e Mi  ELEM faça { 5. MjMi; (* o pai é rebaixado *)

6. ji; i  i/2; (* índice do novo pai, um nível acima *) 7. } (* fim do enqto *)

8. Mj ELEM; (* coloca x no lugar correto *) Complexidade: Olg n. Por quê?

(9)

lg(n +1)

1 3 8

2 1 5 6

Rebaixamento

Antes do algoritmo ExMaxC, veremos o algoritmo para rebaixar a raiz, cujas subárvores esquerda e direita são árvores hieráquicas, mas a raiz

contém um objeto MENOR que os dois filhos, e portanto a árvore toda não é hierarquica.

(10)

Rebaixar a raiz

Árv.Hierarq. Árv.Hierarq.

3 9

2 1 5 8

6 Rebaixar

(11)

3 9

2 1 5 8

6

6<9

Rebaixar

filho maior

3

2 1 5 8

6<8

Rebaixar

filho maior 9

ELEM = 6 Promovido

(12)

3

2 1 5

9

6

8 Promovido

Algoritmo Rebaixai,n

Entrada: vetor M que representa uma árvore hierárquica com n objetos, e índice i da raiz a ser rebaixada (ou seja, Mi é o vértice a ser rebaixado, que pode ser raiz de uma subárvore).

Saída: vetor M contendo após rebaixar a raiz para o local apropriado 1. ELEM Mi; j  2 i; achoufalso; (* Mj é o filho esquerdo *) 2. enqto (j  n) e (não achou) faça{ (* enqto há rebaixamento a ser

feito *)

3. se (j  n e MjMj1)

4. então jj  1; (* Mj é o filho maior *)

(13)

5. se (ELEM  Mj)

6. então achou verdadeiro; (* terminar rebaixamentos *) 7. senão {

8. Mj/2Mj; (* filho maior é promovido *)

9. j  2 j; (* índice do novo filho, um nível abaixo *) 10. } (* fim-senão *)

11. } (* fim-enqto *)

12. Mj/2 ELEM; (* a raiz original é colocada no nó pai de Mj *) Complexidade: Olg n. Por quê?

(14)

Operação de extração do max, ExMaxC

(1) O máximo está na raiz. Seja y o objeto na última folha Mn.

max

y

Árv. Hierarq.

última folha Extrai

max

(2) Promove y para raiz, e tira Mn da árvore, ou seja faz nn  1. A árvore resultante não é mais hierárquica.

(15)

y

não é mais Árv. Hierarq.

tira última folha para raiz

(3) Aplica o algoritmo Rebaixa, que rebaixa a raiz com y até o local apropriado, tornando a árvore de novo em hierárquica.

y

de novo, Árv. Hierarq.

Rebaixa raiz

(16)

Complexidade Olg n. Por quê?

(17)

Hierarquização

Objetivo: transformar uma árvore binária (representada por um vetor com n objetos) em árvore hierárquica.

Solução: aplicar o Algoritmo Rebaixa da seguinte forma (note que as folhas sozinhas já constituem uma árvore hierárquica):

1. Aplicar primeiro Rebaixa sobre cada pai das folhas, junto com as

folhas; resulta várias subárvores hierarquizadas com as raizes que são pais das folhas;

2. A seguir aplicar Rebaixa sobre cada avô das folhas; resulta hierarquização um nível acima;

3. E assim por diante, subindo de nível, até chegar à raiz.

Algoritmo Hierarq

Entrada: vetor M com n vértices Saída: M hierarquizada

para i  n/2 até 1 faça { Rebaixa(i,n);

}

(18)

Exercício: a complexidade de tempo do Hierarq é Tn  On. (solução no livro.)

(19)

HeapSort (Ordenação por Hierarquização)

Objetivo: dado um vetor com n objetos, ordená-lo em ordem crescente.

Solução:

1. Aplicar o Algoritmo Hierarq sobre o vetor M. Resulta uma árvore hierárquica em tempo On;

2. Aplicar ExMax n vezes. Resulta M ordenado em tempo Onlg n. 3. Tempo total: Onlgn.

Algoritmo OrdHierarq (ou HeapSort) Entrada: vetor M com n objetos

Saída: M em ordem crescente 1. Hierarq(M,n);

2. para in até 2 faça {

3. (* a seguir troca M1, o máximo, com Mi *) 4. tMi;MiM1; M1t;

(20)

5. Rebaixa(1,i  1);

6. } (* fim-para *)

Início com M  25, 31, 26, 5, 6

Aplica Hierarq(M, 5) resulta em M  max  31, 25, 26, 5, 6 Inicia laço “para in ...”

i  5

6, 25, 26, 5, max  31, Rebaixa1, 4  max  26, 25, 6, 5, 31 i  4

5, 25, 6, max  26, 31, Rebaixa1, 3  max  25, 5, 6, 26, 31 i  3

6, 5, max  25, 26, 31, Rebaixa1, 2  max  6, 5, 25, 26, 31 i  2

5, max  6, 25, 26, 31 Rebaixa1, 1  max  5, 6, 25, 26, 31

Figura: Ilustração de execução do algoritmo OrdHierarq.

(21)

Resumo

1. Inserir 2. Rebaixa

3. ExMax (ou ExMin) 4. Hierarq

5. OrdHierarq

Exercícios sobre Heap (Árvore Hierárquica).

1. Dada a matriz hieraquizada, com a relação :

índ. 1 2 3 4 5 6 7 8 9 10 11 12 13

M 4 5 6 15 9 7 20 16 25 14 12 11 8

(22)

a. Desenhar a árvore binária correspondente;

b. Inserir um novo objeto 2, aplicando o algoritmo Insx, C visto.

2. Considere a mesma árvore do exercício (1). Remover o mínimo aplicando o algoritmo ExMinC.

3. Hierarquizar a matriz M a seguir, aplicando o algoritmo Hierarq dado, com a relação 

índ. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 M 11 8 7 14 9 12 4 6 5 16 25 15 23 27 20 4. Ordenar a matriz a seguir, em ordem crescente, aplicando o

algoritmo OrdHierarq

índ 1 2 3 4 5 6 7 8 9 10

M 22 15 36 44 10 3 9 13 29 25

Referências

Documentos relacionados

ABSTRACT The objective of this study was to investigate the antiproliferative activity of garciniaphenone and 7-epiclusianone, prenylated benzophenones isolated from

Para realizar sua rematrícula, o acadêmico deve estar quite de seus compromissos financeiros com a FACSUR, mesmo que débitos com a Biblioteca, além de que não devem existir

O primeiro briefing, realizado foi no dia 30 de Setembro de 2013, foi um momento imprescindível para o desenvolvimento do estágio, tendo em conta que me foi

CURSO DE ESPECIALIZAÇÃO EM EDUCAÇÃO DE JOVENS E ADULTOS COM ÊNFASE EM ECONOMIA SOLIDÁRIA NO SEMIÁRIDO PARAIBANO.. APÊNDICE B - Questionário aplicado junto aos docentes da

Estaria em jogo uma pulsão homossexual que teria passado despercebida pela paciente, e que se justificava pela relação que ela havia estabelecido com a Sra. antes que o

O Programa Cenário Cult tem como principais objetivos: promover o debate e conhecimento da população com relação à cultura local, através da música,

Considerando uma estimativa conservadora de produção madeireira estima-se uma área de 841.954 ha por ano o que equivaleria a exploração de madeira de 10.000 famílias por ano

Dito de maneira mais clara, o Direito é Amor, na medida que tão quanto o Amor é constituído necessaria- mente por uma relação, uma relação jurídica, e nessa relação jurídica,