estruturas de dados - aula 15. Árvore bboeres/slides_ed/ed_arvoreb.pdfuma árvore b de ordem 3 é...

47
Árvore B Uma Árvore B de ordem m é uma árvore, tal que: Cada nó contém no máximo m - 1 valores; Os valores dentro de cada nó estão ordenados; Todos os valores na subárvore esquerda de um valor são menores que ele e todos os valores na subárvore direita de um valor são maiores que ele. Todo os nós, exceto a raiz, contém no mínimo (m - 1)/2 valores; Cada nó que não seja uma folha tem n + 1 filhos, onde n éo números de valores no nó. Ela é perfeitamente balanceada, ou seja, todas as subárvores vazias estão no mesmo nível. Karina Mochetti Aula 15. Árvore B

Upload: others

Post on 15-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Árvore B

Uma Árvore B de ordem m é uma árvore, tal que:Cada nó contém no máximo m � 1 valores;Os valores dentro de cada nó estão ordenados;Todos os valores na subárvore esquerda de um valor sãomenores que ele e todos os valores na subárvore direita de umvalor são maiores que ele.Todo os nós, exceto a raiz, contém no mínimo (m � 1)/2valores;Cada nó que não seja uma folha tem n + 1 filhos, onde n é onúmeros de valores no nó.Ela é perfeitamente balanceada, ou seja, todas as subárvoresvazias estão no mesmo nível.

Karina Mochetti Aula 15. Árvore B

Page 2: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Árvore B: Página

Um nó de uma árvore B é chamado de página.Página Raiz: não contém número mínimo de nós.Página Interna: devem conter (m � 1)/2 n < m nós e n + 1filhos.Página Folha: devem conter (m � 1)/2 n < m nós enenhum filho (devem estar todas no mesmo nível).

Karina Mochetti Aula 15. Árvore B

Page 3: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Árvore B: Exemplo

Karina Mochetti Aula 15. Árvore B

Page 4: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Árvore B: Exemplo

Karina Mochetti Aula 15. Árvore B

Page 5: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Árvore B: Exemplo

Karina Mochetti Aula 15. Árvore B

Page 6: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Árvore B: Exemplo

Karina Mochetti Aula 15. Árvore B

Page 7: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Árvore B: Exemplo

Karina Mochetti Aula 15. Árvore B

Page 8: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Árvore B: Exemplo

Karina Mochetti Aula 15. Árvore B

Page 9: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Árvore B: Exemplo

Karina Mochetti Aula 15. Árvore B

Page 10: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Árvore B: Exemplo

Karina Mochetti Aula 15. Árvore B

Page 11: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Árvore B

Cada página possui um vetor de valores e um vetor de ponteiros.

#define ORDEM 1000

typedef struct pagina {int n;int k[ORDEM-1];struct pagina *filho[ORDEM];

} Pagina;

typedef Pagina* ArvoreB;

Karina Mochetti Aula 15. Árvore B

Page 12: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca

A busca será mais complexa dentro de uma página. Como cadapágina está ordenada podemos usar busca binária dentro de cadapágina para definir o valor ou o filho da árvore que deve ser seguido.

Karina Mochetti Aula 15. Árvore B

Page 13: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca

A busca será mais complexa dentro de uma página. Como cadapágina está ordenada podemos usar busca binária dentro de cadapágina para definir o valor ou o filho da árvore que deve ser seguido.

Karina Mochetti Aula 15. Árvore B

Page 14: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca

A busca será mais complexa dentro de uma página. Como cadapágina está ordenada podemos usar busca binária dentro de cadapágina para definir o valor ou o filho da árvore que deve ser seguido.

Karina Mochetti Aula 15. Árvore B

Page 15: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca

A busca será mais complexa dentro de uma página. Como cadapágina está ordenada podemos usar busca binária dentro de cadapágina para definir o valor ou o filho da árvore que deve ser seguido.

Karina Mochetti Aula 15. Árvore B

Page 16: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca

A busca será mais complexa dentro de uma página. Como cadapágina está ordenada podemos usar busca binária dentro de cadapágina para definir o valor ou o filho da árvore que deve ser seguido.

Karina Mochetti Aula 15. Árvore B

Page 17: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca

A busca será mais complexa dentro de uma página. Como cadapágina está ordenada podemos usar busca binária dentro de cadapágina para definir o valor ou o filho da árvore que deve ser seguido.

Karina Mochetti Aula 15. Árvore B

Page 18: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca

A busca será mais complexa dentro de uma página. Como cadapágina está ordenada podemos usar busca binária dentro de cadapágina para definir o valor ou o filho da árvore que deve ser seguido.

Karina Mochetti Aula 15. Árvore B

Page 19: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca

A busca será mais complexa dentro de uma página. Como cadapágina está ordenada podemos usar busca binária dentro de cadapágina para definir o valor ou o filho da árvore que deve ser seguido.

Karina Mochetti Aula 15. Árvore B

Page 20: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca

A busca será mais complexa dentro de uma página. Como cadapágina está ordenada podemos usar busca binária dentro de cadapágina para definir o valor ou o filho da árvore que deve ser seguido.

Karina Mochetti Aula 15. Árvore B

Page 21: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca

A busca será mais complexa dentro de uma página. Como cadapágina está ordenada podemos usar busca binária dentro de cadapágina para definir o valor ou o filho da árvore que deve ser seguido.

Karina Mochetti Aula 15. Árvore B

Page 22: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca

A busca será mais complexa dentro de uma página. Como cadapágina está ordenada podemos usar busca binária dentro de cadapágina para definir o valor ou o filho da árvore que deve ser seguido.

Karina Mochetti Aula 15. Árvore B

Page 23: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca Binária

int binSearch(int* v, int min, int max, int x) {

if (max == min) return min;

int meio = (max-min)/2;

if (v[meio] == x) return meio;

if (v[meio] < x) return binSearch(v, meio+1, max, x);

if (v[meio] > x) return binSearch(v, min, meio-1, x);

}

Complexidade

O(logm), no pior caso o vetor tem m � 1 elementos

Karina Mochetti Aula 15. Árvore B

Page 24: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca Binária

int binSearch(int* v, int min, int max, int x) {

if (max == min) return min;

int meio = (max-min)/2;

if (v[meio] == x) return meio;

if (v[meio] < x) return binSearch(v, meio+1, max, x);

if (v[meio] > x) return binSearch(v, min, meio-1, x);

}

ComplexidadeO(logm), no pior caso o vetor tem m � 1 elementos

Karina Mochetti Aula 15. Árvore B

Page 25: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca

Pagina *search(Pagina *T, int x, int *i) {

if (T == NULL) {

return NULL;

*i = -1;

}

else {

int p = binSearch(T->k, 0, T->n, x);

if (x == T->k[p]) {

return T;

*i = p;

}

if (x < T->k[p]) return search(T->filho[p], x, i);

if (x > T->k[p]) return search(T->filho[p+1], x, i);

}

}

Complexidade

O(h · logm) o que resulta em O(log n)

Karina Mochetti Aula 15. Árvore B

Page 26: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Busca

Pagina *search(Pagina *T, int x, int *i) {

if (T == NULL) {

return NULL;

*i = -1;

}

else {

int p = binSearch(T->k, 0, T->n, x);

if (x == T->k[p]) {

return T;

*i = p;

}

if (x < T->k[p]) return search(T->filho[p], x, i);

if (x > T->k[p]) return search(T->filho[p+1], x, i);

}

}

ComplexidadeO(h · logm) o que resulta em O(log n)

Karina Mochetti Aula 15. Árvore B

Page 27: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção

Para acharmos o lugar correto para inserir um nó, devemos realizaruma busca na Árvore, até acharmos a folha correspondente, aoachar a folha, teremos 2 casos.

Caso 1: o valor cabe na página.Caso 2: o valor não cabe na página.

Karina Mochetti Aula 15. Árvore B

Page 28: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Caso 1

O valor é inserido na página de forma ordenada e o número devalores é atualizado.

Karina Mochetti Aula 15. Árvore B

Page 29: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Caso 1

O valor é inserido na página de forma ordenada e o número devalores é atualizado.

Karina Mochetti Aula 15. Árvore B

Page 30: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Caso 2

É achada a mediana (valor que está no meio do vetor) entretodos os valores da pagina e o valor a ser inserido.Todos os valores menores que a mediana formaram uma novapagina.Todos os valores maiores que a mediana formaram uma novapagina.A mediana é inserida na página pai, com os valores menores defilho esquerdo e os maiores de filho direto.

Karina Mochetti Aula 15. Árvore B

Page 31: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Caso 2

Karina Mochetti Aula 15. Árvore B

Page 32: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção

Deve ser encontrada a folha na qual o valor será inserido.A inserção em uma folha cheia irá percorre a árvore até a raizou até que seja encontrada uma página com espaço.A complexidade do algoritmo será O(log n).Não existem rotações nem fator de balanceamento, mas énecessário manter o vetor de cada página ordenado.A separação de uma página em duas é chamada de quebra dapágina (ou split em inglês).

Karina Mochetti Aula 15. Árvore B

Page 33: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Exemplo

Crie a Árvore B de ordem 5 com as seguintes inserções: 25, 5, 1,24, 4, 9, 42, 14, 16, 12

Karina Mochetti Aula 15. Árvore B

Page 34: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Exemplo

Crie a Árvore B de ordem 5 com as seguintes inserções: 25, 5, 1,24, 4, 9, 42, 14, 16, 12

Karina Mochetti Aula 15. Árvore B

Page 35: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Exemplo

Crie a Árvore B de ordem 5 com as seguintes inserções: 25, 5, 1,24, 4, 9, 42, 14, 16, 12

Karina Mochetti Aula 15. Árvore B

Page 36: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Exemplo

Crie a Árvore B de ordem 5 com as seguintes inserções: 25, 5, 1,24, 4, 9, 42, 14, 16, 12

Karina Mochetti Aula 15. Árvore B

Page 37: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Exemplo

Crie a Árvore B de ordem 5 com as seguintes inserções: 25, 5, 1,24, 4, 9, 42, 14, 16, 12

Karina Mochetti Aula 15. Árvore B

Page 38: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Exemplo

Crie a Árvore B de ordem 5 com as seguintes inserções: 25, 5, 1,24, 4, 9, 42, 14, 16, 12

Karina Mochetti Aula 15. Árvore B

Page 39: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Exemplo

Crie a Árvore B de ordem 5 com as seguintes inserções: 25, 5, 1,24, 4, 9, 42, 14, 16, 12

Karina Mochetti Aula 15. Árvore B

Page 40: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Exemplo

Crie a Árvore B de ordem 5 com as seguintes inserções: 25, 5, 1,24, 4, 9, 42, 14, 16, 12

Karina Mochetti Aula 15. Árvore B

Page 41: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Exemplo

Crie a Árvore B de ordem 5 com as seguintes inserções: 25, 5, 1,24, 4, 9, 42, 14, 16, 12

Karina Mochetti Aula 15. Árvore B

Page 42: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Exemplo

Crie a Árvore B de ordem 5 com as seguintes inserções: 25, 5, 1,24, 4, 9, 42, 14, 16, 12

Karina Mochetti Aula 15. Árvore B

Page 43: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Inserção: Exemplo

Crie a Árvore B de ordem 5 com as seguintes inserções: 25, 5, 1,24, 4, 9, 42, 14, 16, 12

Karina Mochetti Aula 15. Árvore B

Page 44: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Árvore B

Uma árvore B de ordem 3 é essencialmente uma árvore 2-3.Árvores B são usadas em banco de dados (ORACLE, SQL) eem sistemas de arquivos (NTFS, HFS).Uma página contém somente as chaves de cada registro enormalmente está na memória secundária. Ao ser acessada étrazida para a memória principal.

Apesar das operações de busca e inserção (e remoção) teremcomplexidade O(log n), o acesso a disco é menor, pois há umacesso por página somente e o número de páginas numa árvoreB é muito menor que o número de nós de uma árvore AVL.

Karina Mochetti Aula 15. Árvore B

Page 45: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Árvore B

Uma árvore B de ordem 3 é essencialmente uma árvore 2-3.Árvores B são usadas em banco de dados (ORACLE, SQL) eem sistemas de arquivos (NTFS, HFS).Uma página contém somente as chaves de cada registro enormalmente está na memória secundária. Ao ser acessada étrazida para a memória principal.Apesar das operações de busca e inserção (e remoção) teremcomplexidade O(log n), o acesso a disco é menor, pois há umacesso por página somente e o número de páginas numa árvoreB é muito menor que o número de nós de uma árvore AVL.

Karina Mochetti Aula 15. Árvore B

Page 46: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Árvore B

Simulador Onlinehttps://www.cs.usfca.edu/~galles/visualization/BTree.html

Karina Mochetti Aula 15. Árvore B

Page 47: Estruturas de Dados - Aula 15. Árvore Bboeres/slides_ed/ed_ArvoreB.pdfUma árvore B de ordem 3 é essencialmente uma árvore 2-3. Árvores B são usadas em banco de dados (ORACLE,

Exercício

Diga quantas comparações são necessárias para encontrarmos onúmero 72 na árvore abaixo.

Karina Mochetti Aula 15. Árvore B