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

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

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

Apresentações semelhantes


Apresentação em tema: "ACESSO À MEMÓRIA SECUNDÁRIA - ÁRVORES ORI – Prof. Dr. Ednaldo Pizzolato."— 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 ~= 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 d<1010

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

16 ordem m 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. nó 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 1: *1000 = h 2:~1 Bilhão

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

23 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 Árvore B

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

25 Árvore B Em seguida colocamos 6, 14 e 28 :

26 Árvore B Adicionando 17 à árvore teremos outro split…

27 Árvore B

28 Árvore B Continuando com 7, 52, 16 e

29 Árvore B E agora, inserindo o 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:

31 Árvore B 45 Por fim o 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 !

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 !

34 Árvore B O 17 tem que subir para se tornar a nova raiz… lembrem-se que a raiz pode ter um único elemento

35 Árvore B

36 Árvore B

37 Árvore B a a

38 Árvore B a

39 Árvore B 1722 a 4064 b 35 c

40 Árvore B 1722 a b 35 c

41 Árvore B 1722 a 4064 b c d

42 Árvore B 1722 a b c d

43 Árvore B

44 Árvore B

45 Árvore B

46 Árvore B

47 Árvore B

48 Árvore B

49 Árvore B

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) Eliminar o 2: Há chaves suficientes Assumindo uma árvore de ordem 5.

55 Árvore B (remoção – caso 1) Eliminar o 52

56 Árvore B (remoção de nó não folha) Elimina 52 56

57 Árvore B (remoção de nó não folha) Elimina 52 56

58 Árvore B (remoção - Poucas chaves nos nós irmãos ) Eliminar o 72 Poucas chaves! Combina

59 Árvore B (remoção - Poucas chaves nos nós irmãos ) Eliminar o 22

60 Árvore B (remoção - irmão OK) Eliminar o 22 Descer chave do nó pai e subir chave na folha

61 Árvore B (remoção - irmão OK)

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 é: raizm – 1 nivel 1m(m – 1) nivel 2m 2 (m – 1)... nivel hm h (m – 1) m h+1 – 1Assim, o total de elementos é (1 + m + m 2 + m 3 + … + m h )(m – 1) = [(m h+1 – 1)/ (m – 1)] (m – 1) = m h+1 – 1 Quando m = 5 e h = 2 temos 5 3 – 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 (101 4 – 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 ORI – Prof. Dr. Ednaldo Pizzolato."

Apresentações semelhantes


Anúncios Google