Вы находитесь на странице: 1из 125

Arvores B

MO637 Complexidade de Algoritmos II

14 de setembro de 2007

MO637 Complexidade de Algoritmos II

Arvores B

Overview

MO637 Complexidade de Algoritmos II

Arvores B

Overview
So rvores balanceadas, desenvolvidas para otimizar o acesso a a a armazenamento secundrio a

MO637 Complexidade de Algoritmos II

Arvores B

Overview
So rvores balanceadas, desenvolvidas para otimizar o acesso a a a armazenamento secundrio a Os ns da rvore B podem ter muitos lhos. Esse fator de o a ramicao determinante para reduzir o nmero de acessos ca e u a disco. Arvores B so balanceadas, ou seja, sua altura a e O(lg (n))

MO637 Complexidade de Algoritmos II

Arvores B

Overview
So rvores balanceadas, desenvolvidas para otimizar o acesso a a a armazenamento secundrio a Os ns da rvore B podem ter muitos lhos. Esse fator de o a ramicao determinante para reduzir o nmero de acessos ca e u a disco. Arvores B so balanceadas, ou seja, sua altura a e O(lg (n)) Arvores B so generalizaoes de rvores binrias balanceadas a c a a

MO637 Complexidade de Algoritmos II

Arvores B

Armazenamento Secundrio a

MO637 Complexidade de Algoritmos II

Arvores B

Armazenamento Secundrio a

Atualmente o armazenamento estvel feito em discos a e magnticos, e o custo de cada acesso (da ordem de mili e segundos) muito alto quando comparado ao acesso ` e a memria RAM (ordem de nano segundos) o

MO637 Complexidade de Algoritmos II

Arvores B

Armazenamento Secundrio a

Atualmente o armazenamento estvel feito em discos a e magnticos, e o custo de cada acesso (da ordem de mili e segundos) muito alto quando comparado ao acesso ` e a memria RAM (ordem de nano segundos) o Toda vez que um acesso feito, deve-se aproveita-lo da e melhor maneira poss vel, trazendo o mximo de informao a ca relevante

MO637 Complexidade de Algoritmos II

Arvores B

Armazenamento Secundrio a

MO637 Complexidade de Algoritmos II

Arvores B

Armazenamento Secundrio a

A quantidade de dados utilizados numa rvore B bviamente a o no cabem na memria de uma s vez, por isso necessrio a o o e a pagin-la a

MO637 Complexidade de Algoritmos II

Arvores B

Armazenamento Secundrio a

A quantidade de dados utilizados numa rvore B bviamente a o no cabem na memria de uma s vez, por isso necessrio a o o e a pagin-la a Especializaoes so feitas de acordo com as necessidades da c a aplicao. O fator de ramicao, por exemplo, pode variar de ca ca 3 a 2048 por exemplo (dependendo do buer dos discos e do tamanho das pginas de memria alocados pelo SO) a o

MO637 Complexidade de Algoritmos II

Arvores B

Armazenamento Secundrio a

MO637 Complexidade de Algoritmos II

Arvores B

Armazenamento Secundrio a
Na grande maioria dos sistemas, o tempo de execuo de um ca algoritmo de rvore-B determinado pelas leituras e escritas a e no disco

MO637 Complexidade de Algoritmos II

Arvores B

Armazenamento Secundrio a
Na grande maioria dos sistemas, o tempo de execuo de um ca algoritmo de rvore-B determinado pelas leituras e escritas a e no disco Um fator de ramicao alto reduz drasticamente a altura da ca arvore. Tomemos o exemplo:

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a
Consideraremos que o os dados dos registros sejam guardados junto com a chave da rvore. Se estivssemos usando uma rvore a e a B+, os registros cariam todos nas folhas:

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a

Seja T uma rvore-B com raiz (root[T ]). Ela possuir ento as a a a seguintes propriedades: 1. Todo o n X tem os seguintes campos: o

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a

Seja T uma rvore-B com raiz (root[T ]). Ela possuir ento as a a a seguintes propriedades: 1. Todo o n X tem os seguintes campos: o a. n[x], o nmero de chaves atualmente guardadas no n x, u o

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a

Seja T uma rvore-B com raiz (root[T ]). Ela possuir ento as a a a seguintes propriedades: 1. Todo o n X tem os seguintes campos: o a. n[x], o nmero de chaves atualmente guardadas no n x, u o b. As n[x] chaves, guardadas em ordem crescente, tal que key1 [x] key2 [x] keyn[x] [x],

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a

Seja T uma rvore-B com raiz (root[T ]). Ela possuir ento as a a a seguintes propriedades: 1. Todo o n X tem os seguintes campos: o a. n[x], o nmero de chaves atualmente guardadas no n x, u o b. As n[x] chaves, guardadas em ordem crescente, tal que key1 [x] key2 [x] keyn[x] [x], c. leaf [x], Um valor booleano, TRUE se x uma folha e e FALSE se x um n interno e o

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a

2. Cada n interno x tambm contm n[x] + 1 apontadores o e e c1 [x], c2 [x], ...,cn[x]+1 [x] para os lhos. As folhas tem seu apontador nulo

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a

2. Cada n interno x tambm contm n[x] + 1 apontadores o e e c1 [x], c2 [x], ...,cn[x]+1 [x] para os lhos. As folhas tem seu apontador nulo 3. As chaves keyi [x] separam os intervalos de chaves guardadas em cada sub-rvore: se ki uma chave guardada a e numa sub-rvore com raiz ci [x], ento: a a k1 key1 [x] k2 key2 [x] ... keyn[x] [x] kn[x]+1

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a

2. Cada n interno x tambm contm n[x] + 1 apontadores o e e c1 [x], c2 [x], ...,cn[x]+1 [x] para os lhos. As folhas tem seu apontador nulo 3. As chaves keyi [x] separam os intervalos de chaves guardadas em cada sub-rvore: se ki uma chave guardada a e numa sub-rvore com raiz ci [x], ento: a a k1 key1 [x] k2 key2 [x] ... keyn[x] [x] kn[x]+1 4. Todas as folhas tm a mesma profundidade, que a altura e e da rvore: h a

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a

5. Existem limites superiores e inferiores para o nmero de chaves u num n. Estes limites podem ser expressados em termos de um o inteiro xo t 2 chamado grau m nimo:

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a

5. Existem limites superiores e inferiores para o nmero de chaves u num n. Estes limites podem ser expressados em termos de um o inteiro xo t 2 chamado grau m nimo: a. Todo n que no seja raiz deve ter pelo menos t 1 chaves. o a Todo n interno que no a raiz tem portanto t lhos. Se a o a rvore for no vazia, a raiz deve ter pelo menos uma chave a a

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a

5. Existem limites superiores e inferiores para o nmero de chaves u num n. Estes limites podem ser expressados em termos de um o inteiro xo t 2 chamado grau m nimo: a. Todo n que no seja raiz deve ter pelo menos t 1 chaves. o a Todo n interno que no a raiz tem portanto t lhos. Se a o a rvore for no vazia, a raiz deve ter pelo menos uma chave a a b. Cada n pode conter no mximo 2t 1 chaves. Portanto, o a um n interno, pode ter no mximo 2t lhos. O n o a oe considerado cheio quando ele contm exatamente 2t 1 e chaves

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a

Podemos ver o poder da rvore-B quando comparada a outros a tipos de rvores balanceadas com altura O(log2 (n)). No caso a da rvore-B a base do logaritmo proporcional ao fator de a e ramicao ca

MO637 Complexidade de Algoritmos II

Arvores B

Denio da rvore-B ca a

Podemos ver o poder da rvore-B quando comparada a outros a tipos de rvores balanceadas com altura O(log2 (n)). No caso a da rvore-B a base do logaritmo proporcional ao fator de a e ramicao ca Por exemplo, se tivermos um fator de ramicao 1000 e ca aproximadamente 1 milho de registros, precisaremos de a apenas log1000 (106 ) 3 idas ao disco =

MO637 Complexidade de Algoritmos II

Arvores B

Busca por Elemento

MO637 Complexidade de Algoritmos II

Arvores B

Busca por Elemento

A busca em uma rvore-B similar ` busca em uma rvore a e a a binria, s que ao invs de uma bifurcao em cada n, temos a o e ca o vrios caminhos a seguir de acordo com o nmero de lhos do a u n o

MO637 Complexidade de Algoritmos II

Arvores B

Busca por Elemento

A busca em uma rvore-B similar ` busca em uma rvore a e a a binria, s que ao invs de uma bifurcao em cada n, temos a o e ca o vrios caminhos a seguir de acordo com o nmero de lhos do a u n o O algoritmo de busca na rvore uma generalizao da busca a e ca em uma rvore binria a a

MO637 Complexidade de Algoritmos II

Arvores B

Busca por Elemento

MO637 Complexidade de Algoritmos II

Arvores B

Busca por Elemento

A funo B-TREE-SEARCH recebe o apontador para o n ca o raiz (x) e a chave k sendo procurada

MO637 Complexidade de Algoritmos II

Arvores B

Busca por Elemento

A funo B-TREE-SEARCH recebe o apontador para o n ca o raiz (x) e a chave k sendo procurada Se a chave k pertencer ` rvore o algoritmo retorna o n ao aa o qual ela pertence e o ndice dentro do n correspondente ` o a chave procurada, caso contrrio, retorna NIL a

MO637 Complexidade de Algoritmos II

Arvores B

B-TREE-SEARCH

B-TREE-SEARCH(x, k) 1 2 3 4 5 6 7 8 9 i 1 while i n[x] and k > keyi [x] do i i +1 if i n[x] and k = keyi [x] then return (x, i) if leaf [x] then return NIL else DISK-READ(ci [x]) return B-TREE-SEARCH(ci [x], k)

MO637 Complexidade de Algoritmos II

Arvores B

Busca por Elemento

MO637 Complexidade de Algoritmos II

Arvores B

Busca por Elemento

Como dito anteriormente, o nmero de acessos a disco u e O(logt (n)) onde n o nmero de chaves na rvore e u a

MO637 Complexidade de Algoritmos II

Arvores B

Busca por Elemento

Como dito anteriormente, o nmero de acessos a disco u e O(logt (n)) onde n o nmero de chaves na rvore e u a Como em cada n, feita uma busca linear, temos um gasto o e de O(t) em cada n. Sendo assim, o tempo total de o e O(t logt (n))

MO637 Complexidade de Algoritmos II

Arvores B

Busca por Elemento: Exemplo

MO637 Complexidade de Algoritmos II

Arvores B

Busca por Elemento: Exemplo

MO637 Complexidade de Algoritmos II

Arvores B

Busca por Elemento: Exemplo

MO637 Complexidade de Algoritmos II

Arvores B

Busca por Elemento: Exemplo

MO637 Complexidade de Algoritmos II

Arvores B

Busca por Elemento: Exemplo

MO637 Complexidade de Algoritmos II

Arvores B

Insero de Elemento ca

MO637 Complexidade de Algoritmos II

Arvores B

Insero de Elemento ca

A insero nas rvores-B so relativamente mais complicadas, ca a a pois, precisamos inserir a nova chave no n correto da rvore, o a sem violar suas propriedades

MO637 Complexidade de Algoritmos II

Arvores B

Insero de Elemento ca

A insero nas rvores-B so relativamente mais complicadas, ca a a pois, precisamos inserir a nova chave no n correto da rvore, o a sem violar suas propriedades Como proceder se o n estiver cheio? o

MO637 Complexidade de Algoritmos II

Arvores B

Insero de Elemento ca

A insero nas rvores-B so relativamente mais complicadas, ca a a pois, precisamos inserir a nova chave no n correto da rvore, o a sem violar suas propriedades Como proceder se o n estiver cheio? o Caso o n esteja cheio, devemos separar (split) o n ao redor o o do elemento mediano, criando 2 novos ns que no violam as o a denioes da rvore c a

MO637 Complexidade de Algoritmos II

Arvores B

Insero de Elemento ca

MO637 Complexidade de Algoritmos II

Arvores B

Insero de Elemento ca

O elemento mediano promovido, passando a fazer parte do e n pai daquele n o o

MO637 Complexidade de Algoritmos II

Arvores B

Insero de Elemento ca

O elemento mediano promovido, passando a fazer parte do e n pai daquele n o o A insero feita em um unico percurso na rvore, a partir da ca e a raiz at uma das folhas e

MO637 Complexidade de Algoritmos II

Arvores B

Separao de N (Split) ca o

MO637 Complexidade de Algoritmos II

Arvores B

Separao de N (Split) ca o

O procedimento B-TREE-SPLIT-CHILD recebe como parmetros um n interno (no cheio) x um a o a ndice i e um n o y tal que Y = ci [x] um lho de x que est cheio e a

MO637 Complexidade de Algoritmos II

Arvores B

Separao de N (Split) ca o

O procedimento B-TREE-SPLIT-CHILD recebe como parmetros um n interno (no cheio) x um a o a ndice i e um n o y tal que Y = ci [x] um lho de x que est cheio e a O procedimento ento, separa o n ao redor do elemento a o mediano, copiando os elementos maiores que ele em z, deixando os menores em y , ajusta o contador de elementos de z e y para t 1, e promove o elemento mediano

MO637 Complexidade de Algoritmos II

Arvores B

B-TREE-SPLIT-CHILD
B-TREE-SPLIT-CHILD(x, i, y) 1 z ALLOCATE-NODE() 2 leaf [z] leaf [y ] 3 n[z] t 1 4 for j 1 to t 1 do 5 keyj [z] keyj+t [y ] 6 if not leaf [y ] then 7 for j 1 to t do 8 cj [z] cj+t [y ] 9 n[y ] t 1 10 for j n[x] + 1 downto i + 1 do 11 cj+1 [x] cj [x] (continua)

MO637 Complexidade de Algoritmos II

Arvores B

B-TREE-SPLIT-CHILD

B-TREE-SPLIT-CHILD(cont.) 12 ci+1 [x] z 13 for j n[x] downto i do 14 keyj+1 [x] keyj [x] 15 keyi [x] keyt [y ] 16 n[x] n[x] + 1 17 DISK-WRITE(y) 18 DISK-WRITE(z) 19 DISK-WRITE(x)

MO637 Complexidade de Algoritmos II

Arvores B

Separao de N (Split): Exemplo ca o

MO637 Complexidade de Algoritmos II

Arvores B

Separao de N (Split): Exemplo ca o

MO637 Complexidade de Algoritmos II

Arvores B

Separao de N (Split): Exemplo ca o

MO637 Complexidade de Algoritmos II

Arvores B

Separao de N (Split): Exemplo ca o

MO637 Complexidade de Algoritmos II

Arvores B

Separao de N (Split): Exemplo ca o

MO637 Complexidade de Algoritmos II

Arvores B

Separao de N (Split): Exemplo ca o

MO637 Complexidade de Algoritmos II

Arvores B

Insero com Split ca

MO637 Complexidade de Algoritmos II

Arvores B

Insero com Split ca

Dessa maneira, em uma unica passagem pela rvore, da raiz a `s folhas, inserimos uma determinada chave, dividindo (splits) a cada n da rvore que encontrarmos no caminho, caso o n o a o esteja cheio

MO637 Complexidade de Algoritmos II

Arvores B

Insero com Split ca

Dessa maneira, em uma unica passagem pela rvore, da raiz a `s folhas, inserimos uma determinada chave, dividindo (splits) a cada n da rvore que encontrarmos no caminho, caso o n o a o esteja cheio O cdigo a seguir faz uso de B-TREE-INSERT-NONFULL: o

MO637 Complexidade de Algoritmos II

Arvores B

B-TREE-INSERT

B-TREE-INSERT(T, k) 1 r root[T ] 2 if n[r ] = 2t 1 then 3 s ALLOCATE-NODE() 4 root[T ] s 5 leaf [s] FALSE 6 n[s] 0 7 c1 [s] r 8 B-TREE-SPLIT-CHILD(s, 1, r) 9 B-TREE-INSERT-NONFULL(s, k) 10 else B-TREE-INSERT-NONFULL(r, k)

MO637 Complexidade de Algoritmos II

Arvores B

Insero com Split ca

B-TREE-INSERT-NONFULL insere a chave k no n x, caso este o seja uma folha, caso contrrio, procura o lho adequado e desce ` a a ele recursivamente at encontrar a folha onde deve inserir k e

MO637 Complexidade de Algoritmos II

Arvores B

B-TREE-INSERT-NONFULL
B-TREE-INSERT-NONFULL(x, k) 1 i n[x] 2 if leaf [x] then 3 while i 1 and k < keyi [x] do 4 keyi+1 [x] keyi [x] 5 i i 1 6 keyi+1 [x] k 7 n[x] n[x] + 1 8 DISK-WRITE(x) 9 else while i 1 and k < keyi [x] do 10 i i 1 11 i i +1 12 DISK-READ(ci [x]) (continua)

MO637 Complexidade de Algoritmos II

Arvores B

B-TREE-INSERT-NONFULL

B-TREE-INSERT-NONFULL(cont.) 13 if n[ci [x]] = 2t 1 then 14 B-TREE-SPLIT-CHILD(x, i, ci [x]) 15 if k > keyi [x] then 16 i i +1 17 B-TREE-INSERT-NONFULL(ci [x], k)

MO637 Complexidade de Algoritmos II

Arvores B

Insero com Split ca

MO637 Complexidade de Algoritmos II

Arvores B

Insero com Split ca

Logo, o procedimento de insero leva O(t logt (n)), onde t ca o tamanho da pgina da rvore e n o nmero total de e a a e u elementos

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

A remoo de uma chave anloga ` insero, porm com ca e a a ca e alguns complicadores, j que uma chave pode ser removida de a qualquer n, seja ele raiz ou no o a

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

A remoo de uma chave anloga ` insero, porm com ca e a a ca e alguns complicadores, j que uma chave pode ser removida de a qualquer n, seja ele raiz ou no o a Assim como na insero, precisamos garantir que, ao ca removermos a chave as propriedades da rvore-B no sejam a a violadas

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

A remoo de uma chave anloga ` insero, porm com ca e a a ca e alguns complicadores, j que uma chave pode ser removida de a qualquer n, seja ele raiz ou no o a Assim como na insero, precisamos garantir que, ao ca removermos a chave as propriedades da rvore-B no sejam a a violadas Da mesma maneira que tivemos de garantir que um n no se o a tornasse grande demais na insero, devemos garantir que ele ca no torne-se pequeno demais, ou seja, deve sempre ter pelo a menos t 1 elementos

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

Sendo assim, seguiremos para os casos de remoo de chaves ca

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

Sendo assim, seguiremos para os casos de remoo de chaves ca Existem 6 casos poss veis para a remoo de uma chave de ca uma rvore-B: a

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

Sendo assim, seguiremos para os casos de remoo de chaves ca Existem 6 casos poss veis para a remoo de uma chave de ca uma rvore-B: a Caso 1. Se a chave k estiver numa folha da rvore e a folha a possui pelo menos t chaves,remove-se a chave da rvore a

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso1:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso1:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso1:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso1:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso1:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

Caso 2. Se a chave k est num n interno x o seguinte deve ser a o feito:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

Caso 2. Se a chave k est num n interno x o seguinte deve ser a o feito: a. Se o lho y que precede k no n x possui pelo menos t o chaves, encontre o predecessor k de k na sub-rvore com raiz a do n lho e substitua k por k no n atual em y . Remova k o o

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

Caso 2. Se a chave k est num n interno x o seguinte deve ser a o feito: a. Se o lho y que precede k no n x possui pelo menos t o chaves, encontre o predecessor k de k na sub-rvore com raiz a do n lho e substitua k por k no n atual em y . Remova k o o b. Simetricamente, se o lho z que sucede k no n x possui o pelo menos t chaves, encontre o sucessor k de k na sub-rvore com raiz em z. Remova k do n lho e substitua a o k por k no n atual o

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso2 A/B:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso2 A/B:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso2 A/B:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso2 A/B:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso2 A/B:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

Caso 2(cont.) Se a chave k est num n interno x o seguinte deve a o ser feito:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

Caso 2(cont.) Se a chave k est num n interno x o seguinte deve a o ser feito: c. Caso ambos y e z possuem somente t 1 chaves, copie todos os elementos de z em y , libere a memria ocupada por o z e remova o apontador em x e remova k de x.

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso2 C:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso2 C:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso2 C:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso2 C:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

Caso 3 Se a chave k no est presente no n interno x, determine a a o a sub-rvore ci [x] apropriada que deve conter k. Caso ci [x] possuir a somente t 1 chaves, proceder da seguinte maneira:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

Caso 3 Se a chave k no est presente no n interno x, determine a a o a sub-rvore ci [x] apropriada que deve conter k. Caso ci [x] possuir a somente t 1 chaves, proceder da seguinte maneira: a. Se ci [x] possui pelo menos t 1 chaves mas possui um irmo adjascente com pelo menos t chaves copie para ci [x] a uma chave extra, movendo uma chave de x para ci [x] em seguida movendo uma chave de um dos irmos adjascentes a a ci [x] de volta para x e ajustando o apontador para o n o correspondente

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso3 A:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso3 A:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso3 A:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso3 A:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso3 A:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

Caso 3(cont.) Se a chave k no est presente no n interno x, a a o determine a sub-rvore ci [x] apropriada que deve conter k. Caso a ci [x] possuir somente t 1 chaves, proceder da seguinte maneira:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca

Caso 3(cont.) Se a chave k no est presente no n interno x, a a o determine a sub-rvore ci [x] apropriada que deve conter k. Caso a ci [x] possuir somente t 1 chaves, proceder da seguinte maneira: b. Se ci [x] e ambos os seus irmos esquerdo e direito a possuem t 1 chaves, una ci [x] com um dos irmos o que a envolve mover uma chave de x para o novo n que acabou de o ser formado, sendo que x o elemento mediano daquele n e o

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso3 B:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso3 B:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso3 B:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso3 B:

MO637 Complexidade de Algoritmos II

Arvores B

Remoo de Chaves ca
Caso3 B:

MO637 Complexidade de Algoritmos II

Arvores B

Complexidade da Remoo ca

MO637 Complexidade de Algoritmos II

Arvores B

Complexidade da Remoo ca

Sabemos que antes da remoo, feita uma busca por ca e elemento na rvore, o que gasta O(t logt (n)), onde t o a e tamanho da pgina da rvore e n o nmero total de a a e u elementos

MO637 Complexidade de Algoritmos II

Arvores B

Complexidade da Remoo ca

Sabemos que antes da remoo, feita uma busca por ca e elemento na rvore, o que gasta O(t logt (n)), onde t o a e tamanho da pgina da rvore e n o nmero total de a a e u elementos No pior caso, teremos todas as pginas da rvore com t-1 a a elementos pois esse o limite inferior para cada pgina. Da e a teremos o seguinte:

MO637 Complexidade de Algoritmos II

Arvores B

Complexidade da Remoo ca

Somente os casos 2c e 3b podero ocorrer e para qualquer um a deles teremos o seguinte cenrio: a

MO637 Complexidade de Algoritmos II

Arvores B

Complexidade da Remoo ca

Somente os casos 2c e 3b podero ocorrer e para qualquer um a deles teremos o seguinte cenrio: a Se o caso 2c ocorrer, teremos o n que perdeu a chave com o t 2 chaves e t 1 lhos pois j ocorreu um merge. Se for o a caso 3c o pai ter t 2 chaves e o elemento que perdeu o n a o ter t chaves por causa do merge a

MO637 Complexidade de Algoritmos II

Arvores B

Complexidade da Remoo ca

Somente os casos 2c e 3b podero ocorrer e para qualquer um a deles teremos o seguinte cenrio: a Se o caso 2c ocorrer, teremos o n que perdeu a chave com o t 2 chaves e t 1 lhos pois j ocorreu um merge. Se for o a caso 3c o pai ter t 2 chaves e o elemento que perdeu o n a o ter t chaves por causa do merge a Em qualquer um dos dois a reao disparada para corrigir a ca rvore ser a mesma pois isso encaixa o n com t 2 chaves a a o na situao do caso 3b. Ou seja, uma chave ser rebaixada da ca a pgina pai para ele, e um merge dele com um dos irmos ser a a a feito

MO637 Complexidade de Algoritmos II

Arvores B

Complexidade da Remoo ca

MO637 Complexidade de Algoritmos II

Arvores B

Complexidade da Remoo ca

Agora, o n pai que possui t 2 chaves repetindo a situao o e ca anterior. Ou seja a operao propaga-se num determinado ca subconjunto de pginas at chagar ` raiz a e a

MO637 Complexidade de Algoritmos II

Arvores B

Complexidade da Remoo ca

Agora, o n pai que possui t 2 chaves repetindo a situao o e ca anterior. Ou seja a operao propaga-se num determinado ca subconjunto de pginas at chagar ` raiz a e a Como os merge copiam t 1 elementos a cada n da rvore vel a teremos uma complexidade de O((t 1) logt (n)) para os merge onde logt (n) a altura da rvore e a

MO637 Complexidade de Algoritmos II

Arvores B

Complexidade da Remoo ca

Agora, o n pai que possui t 2 chaves repetindo a situao o e ca anterior. Ou seja a operao propaga-se num determinado ca subconjunto de pginas at chagar ` raiz a e a Como os merge copiam t 1 elementos a cada n da rvore vel a teremos uma complexidade de O((t 1) logt (n)) para os merge onde logt (n) a altura da rvore e a Dessa maneira a complexidade da remoo dada por: ca e O(t logt (n)) + O((t 1) logt (n)) = O(t logt (n))

MO637 Complexidade de Algoritmos II

Arvores B

Endereo das Animaes c co

MO637 Complexidade de Algoritmos II

Arvores B

Endereo das Animaes c co

Vivio B-Tree (necessita do plug-in vivio): https://www.cs.tcd.ie/Jeremy.Jones/vivio/trees/B-tree.htm Busca no Google: vivio b tree animation

MO637 Complexidade de Algoritmos II

Arvores B

Endereo das Animaes c co

Vivio B-Tree (necessita do plug-in vivio): https://www.cs.tcd.ie/Jeremy.Jones/vivio/trees/B-tree.htm Busca no Google: vivio b tree animation slady: Java B-Tree applet animation http://slady.net/java/bt/view.php Busca no Google: b tree animation java

MO637 Complexidade de Algoritmos II

Arvores B

Вам также может понравиться