[email protected] / [email protected]•Se, após a inserção, a folha estiver...

34
Árvores B + Prof Márcio Bueno [email protected] / [email protected] Material da Prof a Ana Eliza Lopes Moura

Transcript of [email protected] / [email protected]•Se, após a inserção, a folha estiver...

Page 1: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvores B+

Prof Márcio [email protected] / [email protected]

Material da Profa Ana Eliza Lopes Moura

Page 2: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

A árvore B+ é uma variação da estrutura

básica da árvore B.

Características:

– Todas as chaves são mantidas em folhas;

– As chaves são repetidas em nós não-folha

formando um índice;

– As folhas são ligadas oferecendo um

caminho seqüencial para percorrer as

chaves.Estrutura de Dados II - Márcio Bueno 2

Page 3: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Exemplo

98

36 53 81 104 119

8 17 36 43 53 56 65 72 81 102 104 125 127107 112 11985 90

Estrutura de Dados II - Márcio Bueno 3

Page 4: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Vantagem

– Mantém a eficiência da busca e da

inserção da árvore B;

– Aumenta a eficiência da localização do

próximo registro na árvore de O(log2N)

para O(1);

– Não é necessário manter nenhum ponteiro

de registro em nós não-folha.

Estrutura de Dados II - Márcio Bueno 4

Page 5: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Utilização

– Muitos Bancos de Dados são construídos

usando o mecanismo de Árvores B+:

SQLServer e Oracle;

Estrutura de Dados II - Márcio Bueno 5

Page 6: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+ Inserção

– A inserção de uma nova chave em umaárvore B+ é semelhante a inserção emuma árvore B: ocorre sempre em um nófolha.

– Passos:• Localizar a folha dentro da qual a chave deve

ser inserida;

• Localizar a posição de inserção dentro dafolha;

• Inserir a chave;

• Se, após a inserção, a folha estiver completa,realizar a cisão da página.

Estrutura de Dados II - Márcio Bueno 6

Page 7: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Inserção (Exemplo) – ordem M = 5

– Inserir chave 85

– Inserir chave 60

– Inserir chave 52

– Inserir chave 70 Realizar cisão

85 | | |

60 | 85 | |

52 | 60 |85 |

Estrutura de Dados II - Márcio Bueno 7

Page 8: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Inserção -> Cisão de Página

– As M-1 chaves serão divididas em dois

grupos:

• as (M-1 div 2) chaves menores ficam na folha

esquerda;

• as (M-1 div 2) chaves maiores ficam na folha

direita;

• A maior chave da esquerda é copiada para o

nó pai.

Estrutura de Dados II - Márcio Bueno 8

Page 9: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Inserção (Exemplo - cont.)

– Inserir chave 70 (antes)

– Inserir chave 70 (depois)

60 | | |

70 | 85 | | 52 |60 | |

52 | 60 |85 |

Estrutura de Dados II - Márcio Bueno 9

Page 10: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Inserção (Exemplo - cont.)

– Inserir chave 58

– Inserir chave 37 Realizar cisão

60 | | |

70 | 85 | | 52 |58 |60 |

Estrutura de Dados II - Márcio Bueno 10

Page 11: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Inserção (Exemplo - cont.)

– Inserir chave 37 (depois)

52 |60 | |

70 | 85 | | 58 |60 | |37 |52 | |

Estrutura de Dados II - Márcio Bueno 11

Page 12: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Inserção (Exemplo - cont.)

– Inserir chaves 54, 110

– Inserir chave 230 Realizar cisão

52 |60 | |

70 | 85 |110| 54| 58 |60 | 37 |52| |

Estrutura de Dados II - Márcio Bueno 12

Page 13: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Inserção (Exemplo - cont.)

– Inserir chave 230 (depois)

– Inserir chave 56 Realizar cisão

52 |60 |85 |

70 | 85 | |54 |58 |60 | 37 |52 | | 110 |230 | |

Estrutura de Dados II - Márcio Bueno 13

Page 14: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Inserção (Exemplo - cont.)

– Inserir chave 56 (depois)

52 |56 | |

70 | 85 | |58 |60 | |54 |56 | | 110 |230 | | 37 |52| |

60 |85 | |

56 | | |

Estrutura de Dados II - Márcio Bueno 14

Page 15: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Pesquisa

– Semelhante à pesquisa em árvore B;

– A pesquisa sempre leva a uma página

folha;

– A pesquisa não pára se a chave procurada

for encontrada em uma página índice.

Estrutura de Dados II - Márcio Bueno 15

Page 16: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Pesquisa (Exemplo)

– Procurar chave 60

52 |56 | |

70 | 85 | |58 |60 | |54 |56 | | 110 |230 | | 37 |52| |

60 |85 | |

56 | | |

Estrutura de Dados II - Márcio Bueno 16

Page 17: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remoção de uma chave X

– Caso 1: A chave X aparece apenas em um

nó folha

• A chave X é simplesmente removida e a

folha é reorganizada;

Estrutura de Dados II - Márcio Bueno 17

Page 18: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remover a chave 80 (antes)

52 |56 | |

70 |80 |85 |58 |60 | |54 |56 | | 110 |230 | | 37 |52| |

60 |85 | |

56 | | |

Estrutura de Dados II - Márcio Bueno 18

Page 19: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remover a chave 80 (depois)

52 |56 | |

70 |85 | | 58 |60 | |54 |56 | | 110 |230 | | 37 |52| |

60 |85 | |

56 | | |

Estrutura de Dados II - Márcio Bueno 19

Page 20: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remoção de uma chave X (cont.)

– Caso 2: A chave X aparece também em

nós internos (índice)

• A chave X é removida;

• A folha é reorganizada;

• A chave X não é removida dos nós

internos.

Estrutura de Dados II - Márcio Bueno 20

Page 21: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remover a chave 85 (antes)

52 |56 | |

70| 80| 85|58 |60 | |54 |56 | | 110 |230 | | 37 |52| |

60 |85 | |

56 | | |

Estrutura de Dados II - Márcio Bueno 21

Page 22: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remover a chave 85 (depois)

52 |56 | |

70 |80 | | 58 |60 | |54 |56 | | 110 |230 | | 37 |52| |

60 |85 | |

56 | | |

Estrutura de Dados II - Márcio Bueno 22

Page 23: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remover a chave 110 (antes)

52 |56 | |

70 |80 | | 58 |60 | |54 |56 | | 110 |230 | | 37 |52| |

60 |85 | |

56 | | |

Estrutura de Dados II - Márcio Bueno 23

Page 24: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remover a chave 110 (depois)

52 |56 | |

70 |80 | | 58 |60 | |54 |56 | | 230 | | |37 |52| |

60 |85 | |

56 | | |

Estrutura de Dados II - Márcio Bueno 24

Page 25: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remoção

– Quando uma chave é retirada de um nó

folha, o número de chaves restantes pode

ser menor que (M-1)/2.

– Tratamentos:

• Concatenação

• Redistribuição

Estrutura de Dados II - Márcio Bueno 25

Page 26: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remoção com Concatenação

– Duas páginas P e Q são chamada

irmãos adjacentes se têm o mesmo pai

W e são apontadas por ponteiros

adjacentes em W.

– P e Q podem ser concatenadas se são

irmãos adjacentes e juntas possuem

menos de M-1 chaves.

Estrutura de Dados II - Márcio Bueno 26

Page 27: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remoção com Concatenação

– A concatenação agrupa as entradas de

duas páginas em uma só;

– No nó pai deixa de existir uma entrada:

aquela da chave que se encontra entre os

ponteiros para P e Q.

– Essa chave é simplesmente removida do

nó pai.

Estrutura de Dados II - Márcio Bueno 27

Page 28: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+ Remoção com Concatenação

– Remover a chave 110 (cont.)

52 |56 | |

70|80|230| 58 |60 | |54 |56 | | 37 |52| |

60 | | |

56 | | |

Estrutura de Dados II - Márcio Bueno 28

Page 29: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remoção com Concatenação

– Como foi retirada uma chave do nó W,

caso ele passe a ter menos de (M-1)/2

chaves, o processo se repete;

– Ou seja, a concatenação é um processo

propagável;

– Se a propagação atingir a raiz, a árvore

diminuirá de altura.

Estrutura de Dados II - Márcio Bueno 29

Page 30: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remoção com Concatenação

– Remover a chave 110 (propagação)

52 |56 |60 |

70|80|230| 58 |60 | |54 |56 | | 37 |52| |

Estrutura de Dados II - Márcio Bueno 30

Page 31: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remover a chave 80 (antes)

52 |56 | |

70 |80 | | 57 |58 |59 | 54 |56 | | 90|110|230| 37 |52| |

60 |85 | |

56 | | |

Estrutura de Dados II - Márcio Bueno 31

Page 32: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remover a chave 80 (depois)

52 |56 | |

70 | | | 57 |58 |59 | 54 |56 | | 90|110|230| 37 |52| |

60 |85 | |

56 | | |

Estrutura de Dados II - Márcio Bueno 32

Page 33: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remoção com Redistribuição

– Se a página P e seu irmão adjacente Q

possuem em conjunto M-1 ou mais chaves,

estas podem ser equilibradamente

distribuídas:

• Concatena-se P e Q;

• Efetua-se a cisão da página resultante.

Estrutura de Dados II - Márcio Bueno 33

Page 34: ed2tarde@marciobueno.com / ed2noite@marciobueno.pdf•Se, após a inserção, a folha estiver completa, realizar a cisão da página. Estrutura de Dados II - Márcio Bueno 6. Árvore

Árvore B+

Remover a chave 80 (redistribuição)

52 |56 | |

59 |70 | | 57 |58 | | 54 |56 | | 90|110|230| 37 |52| |

58 |85 | |

56 | | |

Estrutura de Dados II - Márcio Bueno 34