A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

ACESSO À MEMÓRIA SECUNDÁRIA - ÁRVORES

Apresentações semelhantes


Apresentação em tema: "ACESSO À MEMÓRIA SECUNDÁRIA - ÁRVORES"— Transcrição da apresentação:

1 ACESSO À MEMÓRIA SECUNDÁRIA - ÁRVORES
ORI – Prof. Dr. Ednaldo Pizzolato

2 Árvores Motivação Quando não conseguimos trabalhar na memória principal (ou primária), temos que usar a memória secundária... Sabemos que o acesso aos dados em memória secundária é muito lento. Precisamos de meios eficientes de acesso aos dados (provavelmente na forma de ‘’índices”)

3 Árvores Motivação (recordando...): Assuma que um disco gire a 3600 RPM
Em 1 minuto faz rotações, portanto uma rotação leva 1/60 de segundo, ou 16.7ms Na média cada acesso gastaria 8ms Parece ok até nos darmos conta que 120 acessos a disco consomem um segundo – o mesmo que 25 millhões de instruções Ou seja, um acesso a disco é equivalente a instruções

4 Árvores Soluções? Árvores... (AVLs, Árvores-B,...)

5 Árvores Para árvores balanceadas com n itens, as operações na árvore (inserção etc) são O(log n) porque a altura da árvore é aproximadamente log n. Exemplos: binary tree c/ 1000 itens: h ~= log ~= 10 10-ary tree c/ 1000 itens: h ~= log ~= 3

6 Árvores Assuma que usaremos uma AVL para armazenar dados de motoristas (+/- 20 milhões de registros) Teríamos uma árvore bem alta (vários acessos a disco); log é +/- 24, o que consome +/- 0.2 segundos A solução é aumentar o número de ramificações na árvore diminuindo, assim, a altura!

7 Árvores TRADEOFF Fator de ramificação Complexidade de comparações
Tamanho do nó

8 Árvores Árvores binárias são o caso extremo:
Fator mínimo de ramificação (2) Máxima profundidade (muitos acessos) Se os acessos são caros (armaze-namento secundário), o desempenho cai…

9 Árvores Árvore binária com 127 nós em 7 níveis.

10 Árvores Árvore 10-aria com 127 nós em 3 níveis.

11 Árvores n-árias n ponteiros n-1 chaves

12 Árvores n-árias 10 30 20 40 d<10 10<d<20 20<d<30

13 Árvores (paged binary trees)
A divisão de uma árvore binária em páginas é ilustrada na figura acima. Nessa árvore de 9 páginas, quaisquer dos 63 registros pode ser acessado em, no máximo, 2 acessos.

14 Árvore B class NO_BTree { Private: Tipo chave[20]; NO_BTree p[21];
int Qdade_chaves; Public: métodos… }

15 Árvore B 1 2 2 3 3 4

16 Árvore B Uma árvore B de ordem m é uma árvore m-way (i.e., uma árvore onde cada nó pode ter até m filhos) e que: 1 .O número de chaves em cada nó não folha é um a menos que o número de filhos e cada filho está organizado no contexto de árvore de busca; 2. Todas as folhas estão no mesmo nível; 3. Todas as não-folhas - menos a raíz – têm no mínimo m / 2 filhos; 4. A raíz ou é uma folha ou tem de 2 a m filhos; 5. Um nó folha não contém mais que m – 1 chaves; 6. O número m deve ser sempre ímpar;

17 Árvore B Ordem A definição atual de B-Tree vincula a ordem de uma árvore B ao número de descententes de um nó (isto é, de ponteiros). Deste modo, numa árvore B de ordem m, o número máximo de chaves é m-1. Exemplo: Uma árvore B de ordem 8 tem um máximo de 7 chaves por página. A árvore acima é de ordem 5.

18 Árvore B Número mínimo de cha-ves por página
Quando uma página é dividida na inserção (SPLIT), os nós são divididos igualmente entre as páginas velha e nova. Deste modo, o número mínimo de chaves em um nó é dado por m/2 - 1 (exceto para a raiz).

19 Árvore B Número mínimo de chaves por página
Exemplo: Uma árvore B de ordem 8 (que tem um máximo de 7 chaves por página) terá um mínimo de 3 chaves por página.

20 Árvore B Nó folha Os nós folhas são aqueles alocados no nível mais baixo da árvore.

21 Árvore B Capacidade Máxima Nós com no máximo 1000 elementos: h 0: 1000
h 2: ~1 Bilhão

22 Árvore B Capacidade Mínima Nós com no máximo 1000 elementos: ~500,000
(para árvore de 2 níveis) Nós com no máximo 1000 elementos: ~500,000 (500*501* *2 + 1)

23 Árvore B Suponha que iniciemos com uma árvore B vazia e as chaves devem ser inseridas na seguinte ordem: Queremos construir uma árvore B de ordem 5 Os 4 primeiros elementos vão para a raíz: O quinto elemento extrapola o tamanho do nó Assim, quando inserimos o 25 devemos dividir o nó em duas partes e colocar o elemento do meio como nova raiz

24 Inserindo o 25 ocorre quebra da regra de tamanho máximo
Árvore B Inserindo o 25 ocorre quebra da regra de tamanho máximo 8 1 2 12 25 1 2 8 12 25 É preciso fazer o split

25 Árvore B Em seguida colocamos 6, 14 e 28 :
12 25 Em seguida colocamos 6, 14 e 28 : 1 2 8 12 14 6 25 28

26 Árvore B Adicionando 17 à árvore teremos outro split…
2 8 12 14 6 25 28 17

27 Árvore B 8 17 1 2 6 12 14 25 28

28 Árvore B Continuando com 7, 52, 16 e 48 7 52 16 48 68 3 26 29 53 55 45
17 12 14 25 28 1 2 6 16 48 52 7

29 Árvore B E agora, inserindo o 68… 68 3 26 29 53 55 45 8 17 12 14 25 28
16 48 52 7 68

30 Árvore B Adicionando 68 à árvore causa um “split” na folha mais à direita, fazendo com que o 48 suba à raiz. Quando inserimos o 3 o “split” é na folha mais à esquerda (o 3 sobe); 26, 29, 53, 55 vão para as folhas: 3 8 17 48 1 2 6 7 12 14 16 25 26 28 29 52 53 55 68

31 Árvore B Por fim o 45: 3 8 17 48 1 2 6 7 12 14 16 25 26 28 29 52 53 55 68 45

32 Árvore B Por fim, quando inserimos o 45, isso forçará com que o 28 suba para a raiz… Mas a raiz também está cheia ! 3 8 17 48 28 1 2 6 7 12 14 16 25 26 29 45 52 53 55 68

33 Árvore B Por fim, quando inserimos o 45, isso forçará com que o 28 suba para a raiz… Mas a raiz também está cheia ! 3 8 17 28 48 1 2 6 7 12 14 16 25 26 29 45 52 53 55 68

34 Árvore B O 17 tem que subir para se tornar a nova raiz… lembrem-se que a raiz pode ter um único elemento. 17 3 8 28 48 1 2 6 7 12 14 16 25 26 29 45 52 53 55 68

35 Árvore B 17 3 8 28 48 2 6 7 12 14 16 25 26 29 45 52 53 55 68

36 Árvore B -12

37 Árvore B 40 35 40 22 35 40 a 17 22 35 40 a

38 Árvore B 64 17 22 35 40 a

39 Árvore B 35 c 17 22 40 64 a b

40 Árvore B 35 c 17 22 40 64 128 256 a b

41 Árvore B 35 128 c 17 22 40 64 219 256 a b d

42 Árvore B 35 128 c 17 22 40 64 79 110 219 256 a b d

43 Árvore B 35 64 128 17 22 40 45 79 110 219 256

44 Árvore B 35 64 128 17 20 22 40 45 79 110 219 256

45 Árvore B 35 64 128 11 17 20 22 40 45 79 110 219 256

46 Árvore B 35 64 128 11 17 20 22 40 45 79 110 200 219 256

47 Árvore B 35 64 128 11 17 20 22 40 45 79 110 200 219 256 419

48 Árvore B 35 64 128 11 17 20 22 40 45 66 79 110 200 219 256 419

49 Árvore B 35 64 128 11 17 20 22 40 45 66 75 79 110 200 219 256 419

50 Árvore B (inserção) Tente inserir a nova chave em um nó folha (na posição adequada) Se isso fizer com que o nó fique cheio, divida a folha em duas partes e suba o elemento central para o nó pai; Se isso fizer com que o pai fique cheio repita o proces-so; A estratégia poderá ser repetida até o nó raiz; Se necessário o nó raiz deverá ser também divido e o elemento central será transformado em nova raiz (fazendo com que a árvore fique mais alta)

51 Árvore B Insira os seguintes números em uma árvore B de ordem 5:
3, 7, 9, 23, 45, 1, 5, 14, 25, 24, 13, 11, 8, 19, 4, 31, 35, 56

52 Árvore B (remoção) Durante a inserção, a chave sempre vai para a folha. Na remoção desejamos remover da folha. Assim, temos 3 possibilidades: 1 – Se a chave já está em um nó folha e sua remoção não faz com que o nó fique com poucos elementos (menos que m / 2 filhos), então apenas elimine-a. 2 – Se a chave não é folha, então é garantido que seu predecessor ou sucessor esteja em um nó folha – e neste caso podemos eliminar a chave e subir o predecessor ou sucessor para a posição ocupada pela chave eliminada.

53 Árvore B (remoção) Se (1) ou (2) ocasionam uma folha a ter um número menor que o mínimo então temos que observar os irmãos adjacentes ao nó em questão : 3: Se um deles tem número de chaves maior que o mínimo então pode-se subir uma chave deste nó para o nó pai e pegar a chave do nó pai para a posição da chave eliminada; 4: Se ambos irmãos não têm número de chaves maior que o mínimo, então suas chaves devem ser combinadas com a chave do nó pai. Se este passo fizer com que o nó pai fique com menos chaves que o permitido o processo deve ser repetido até o nó raiz (se necessário).

54 Árvore B – (remoção – caso 1)
Assumindo uma árvore de ordem 5. 12 29 52 2 7 9 15 22 56 69 72 31 43 Eliminar o 2: Há chaves suficientes

55 Árvore B (remoção – caso 1)
12 29 52 2 7 9 15 22 56 69 72 31 43 Eliminar o 52

56 Árvore B (remoção de nó não folha)
12 29 52 7 9 15 22 56 69 72 31 43 56 Elimina 52

57 Árvore B (remoção de nó não folha)
12 29 52 7 9 15 22 69 72 31 43 56 Elimina 52

58 Árvore B (remoção - Poucas chaves nos nós irmãos)
Combina 12 29 56 7 9 15 22 69 72 31 43 Poucas chaves! Eliminar o 72

59 Árvore B (remoção - Poucas chaves nos nós irmãos)
12 29 7 9 15 22 69 56 31 43 Eliminar o 22

60 Árvore B (remoção - irmão OK)
12 29 7 9 15 22 69 56 31 43 Descer chave do nó pai e subir chave na folha Eliminar o 22

61 Árvore B (remoção - irmão OK)
12 31 7 9 15 29 43 56 69

62 Animação

63 Análise de árvore B O número máximo de elementos em uma árvore B de ordem m e altura h é: raiz m – 1 nivel 1 m(m – 1) nivel 2 m2(m – 1) nivel h mh(m – 1) Assim, o total de elementos é (1 + m + m2 + m3 + … + mh)(m – 1) = [(mh+1 – 1)/ (m – 1)] (m – 1) = mh+1 – 1 Quando m = 5 e h = 2 temos 53 – 1 = 124

64 Razões para usar árvores B
Na busca de dados no disco, o custo de cada acesso é alto (mas não depende muito do tempo de transferência do dado – principalmente se forem consecutivos) Se usarmos uma árvore B de ordem 101 podemos transferir cada nó para a memória primária com um acesso a disco Uma árvore B de ordem 101 e altura 3 pode armazenar (1014 – 1) chaves (aproximadamente 100 milhões) e qualquer elemento pode ser acessado com no máximo 3 operações de leitura (assumindo que a raiz permanece na memória) Se tomarmos m = 3, temos uma árvore 2-3, na qual um nó não folha tem 2 ou 3 filhos


Carregar ppt "ACESSO À MEMÓRIA SECUNDÁRIA - ÁRVORES"

Apresentações semelhantes


Anúncios Google