Você está na página 1de 62

rvores B

Letcia Rodrigues Bueno


UFABC

rvores B: Introduo

forma de armazenamento em memria secundria;

rvores B: Introduo

forma de armazenamento em memria secundria;


rvores balanceadas;

rvores B: Introduo

forma de armazenamento em memria secundria;


rvores balanceadas;
assegura que folhas esto no mesmo nvel;

rvores B: Definio

Para d N, rvore B de ordem d satisfaz:

rvores B: Definio

Para d N, rvore B de ordem d satisfaz:


1. raiz folha ou tem pelo menos dois filhos;

rvores B: Definio

Para d N, rvore B de ordem d satisfaz:


1. raiz folha ou tem pelo menos dois filhos;
2. cada n diferente da raiz e folhas tem no mnimo d + 1
filhos;

rvores B: Definio

Para d N, rvore B de ordem d satisfaz:


1. raiz folha ou tem pelo menos dois filhos;
2. cada n diferente da raiz e folhas tem no mnimo d + 1
filhos;
3. cada n tem no mximo 2d + 1 filhos;

rvores B: Definio

Para d N, rvore B de ordem d satisfaz:


1. raiz folha ou tem pelo menos dois filhos;
2. cada n diferente da raiz e folhas tem no mnimo d + 1
filhos;
3. cada n tem no mximo 2d + 1 filhos;
4. todas folhas esto no mesmo nvel;

rvores B: Definio

N de rvore B chamada pgina e tem propriedades:

rvores B: Definio

N de rvore B chamada pgina e tem propriedades:


1. Para m chaves em pgina P no-folha, P tem m + 1 filhos;

rvores B: Definio

N de rvore B chamada pgina e tem propriedades:


1. Para m chaves em pgina P no-folha, P tem m + 1 filhos;
2. Cada pgina tem entre d e 2d chaves, exceto raiz que tem
entre 1 e 2d chaves;

rvores B: Definio

N de rvore B chamada pgina e tem propriedades:


1. Para m chaves em pgina P no-folha, P tem m + 1 filhos;
2. Cada pgina tem entre d e 2d chaves, exceto raiz que tem
entre 1 e 2d chaves;
3. Dentro da pgina, chaves esto ordenadas em ordem
crescente;

rvores B: Definio

N de rvore B chamada pgina e tem propriedades:


1. Para m chaves em pgina P no-folha, P tem m + 1 filhos;
2. Cada pgina tem entre d e 2d chaves, exceto raiz que tem
entre 1 e 2d chaves;
3. Dentro da pgina, chaves esto ordenadas em ordem
crescente;
4. P contm m + 1 ponteiros para filhos de P;

Exemplo de rvores B com d = 2


1
2
3
4
9
30
---

15
20
--40
46
---

50
----

52
56
58
-60
80
---

65
70
--85
90
---

Busca da Chave 10: busca sem sucesso


1
2
3
4
9
30
---

15
20
--40
46
---

50
----

52
56
58
-60
80
---

65
70
--85
90
---

Busca da Chave 10: busca sem sucesso


1
2
3
4
9
30
---

15
20
--40
46
---

50
----

52
56
58
-60
80
---

65
70
--85
90
---

Busca da Chave 10: busca sem sucesso


1
2
3
4
9
30
---

15
20
--40
46
---

50
----

52
56
58
-60
80
---

65
70
--85
90
---

rvores B: algoritmo para busca


1 BuscaB(x , pt, f , g):
2
p = ptraiz; pt = NULL; f = 0;
3
while (p ! = NULL) {
4
i = 1; g = 1; pt = p;
5
while (i <= m) {
6
if (x > p->s[i]) {
7
i = i + 1; g = i;
8
} else if (x == p->s[i]) {
9
p = NULL; f = 1;
10
} else {
11
p = p->pont[i 1];
12
i = m + 2;
13
}
14
}
15
if (i == m + 1)
16
p = p->pont[m];
17
}

rvores B: algoritmo para busca


1 BuscaB(x , pt, f , g):
2
p = ptraiz; pt = NULL; f = 0;
3
while (p ! = NULL) {
4
i = 1; g = 1; pt = p;
5
while (i <= m) {
6
if (x > p->s[i]) {
7
i = i + 1; g = i;
8
} else if (x == p->s[i]) {
9
p = NULL; f = 1;
10
} else {
11
p = p->pont[i 1];
12
i = m + 2;
13
}
14
}
15
if (i == m + 1)
16
p = p->pont[m];
17
}

f = 1 se busca
bem-sucedida (g tem
posio na pgina e
pt a pgina);

rvores B: algoritmo para busca


1 BuscaB(x , pt, f , g):
2
p = ptraiz; pt = NULL; f = 0;
3
while (p ! = NULL) {
4
i = 1; g = 1; pt = p;
5
while (i <= m) {
6
if (x > p->s[i]) {
7
i = i + 1; g = i;
8
} else if (x == p->s[i]) {
9
p = NULL; f = 1;
10
} else {
11
p = p->pont[i 1];
12
i = m + 2;
13
}
14
}
15
if (i == m + 1)
16
p = p->pont[m];
17
}

f = 1 se busca
bem-sucedida (g tem
posio na pgina e
pt a pgina);
f = 0 se chave no
encontrada (g tem
posio na pgina
onde chave deveria
estar e pt tem pgina);

rvores B: algoritmo para busca


1 BuscaB(x , pt, f , g):
2
p = ptraiz; pt = NULL; f = 0;
3
while (p ! = NULL) {
4
i = 1; g = 1; pt = p;
5
while (i <= m) {
6
if (x > p->s[i]) {
7
i = i + 1; g = i;
8
} else if (x == p->s[i]) {
9
p = NULL; f = 1;
10
} else {
11
p = p->pont[i 1];
12
i = m + 2;
13
}
14
}
15
if (i == m + 1)
16
p = p->pont[m];
17
}

f = 1 se busca
bem-sucedida (g tem
posio na pgina e
pt a pgina);
f = 0 se chave no
encontrada (g tem
posio na pgina
onde chave deveria
estar e pt tem pgina);
A busca dentro da
pgina feita com
busca sequencial

rvores B: algoritmo para busca


1 BuscaB(x , pt, f , g):
2
p = ptraiz; pt = NULL; f = 0;
3
while (p ! = NULL) {
4
i = 1; g = 1; pt = p;
5
while (i <= m) {
6
if (x > p->s[i]) {
7
i = i + 1; g = i;
8
} else if (x == p->s[i]) {
9
p = NULL; f = 1;
10
} else {
11
p = p->pont[i 1];
12
i = m + 2;
13
}
14
}
15
if (i == m + 1)
16
p = p->pont[m];
17
}

f = 1 se busca
bem-sucedida (g tem
posio na pgina e
pt a pgina);
f = 0 se chave no
encontrada (g tem
posio na pgina
onde chave deveria
estar e pt tem pgina);
A busca dentro da
pgina feita com
busca sequencial
Pode ser
melhorada???

rvores B: insero inserindo chave 51


Operao de balanceamento: ciso de uma pgina
1
2
3
4
9
30
---

15
20
--40
46
---

50
----

52
56
58
-60
80
---

65
70
--85
90
---

rvores B: insero inserindo chave 51


Operao de balanceamento: ciso de uma pgina
1
2
3
4
9
30
---

15
20
--40
46
---

50
----

52
56
58
-60
80
---

65
70
--85
90
---

rvores B: insero inserindo chave 51


Operao de balanceamento: ciso de uma pgina
1
2
3
4
9
30
---

15
20
--40
46
---

50
----

52
56
58
-60
80
---

65
70
--85
90
---

rvores B: insero inserindo chave 51


Operao de balanceamento: ciso de uma pgina
1
2
3
4
9
30
---

15
20
--40
46
---

50
----

51
52
56
58
60
80
---

65
70
--85
90
---

rvores B: insero inserindo chave 57


Operao de balanceamento: ciso de uma pgina
1
2
3
4
9
30
---

50
----

15
20
--40
46
---

57

60
80
---

51
52
56
58
65
70
--85
90
---

rvores B: insero inserindo chave 57


Operao de balanceamento: ciso de uma pgina
1
2
3
4
9
30
---

15
20
--40
46
---

50
----

60
80
---

51
52
56
57
58
65
70
--85
90
---

rvores B: insero inserindo chave 57


Operao de balanceamento: ciso de uma pgina
1
2
3
4
9
30
---

15
20
--40
46
---

50
----

51
52
57
58
56
60
80
--

65
70
--85
90
---

rvores B: insero inserindo chave 57


Operao de balanceamento: ciso de uma pgina
1
2
3
4
9
30
---

15
20
--40
46
---

50
----

51
52
--56
60
80
--

57
58
--65
70
--85
90
---

rvores B: remoo

Dois casos:

rvores B: remoo

Dois casos:
1. chave x no est em folha: x substituda por y, a
menor chave em uma folha tal que y maior que x;

rvores B: remoo

Dois casos:
1. chave x no est em folha: x substituda por y, a
menor chave em uma folha tal que y maior que x;
2. chave x est em uma folha.

rvores B: remoo

Dois casos:
1. chave x no est em folha: x substituda por y, a
menor chave em uma folha tal que y maior que x;
2. chave x est em uma folha.

Logo, suficiente fazer anlise da remoo em uma folha!

rvores B: remoo removendo chave 40

rvores B: remoo removendo chave 40

Duas operaes:

rvores B: remoo removendo chave 40

Duas operaes:
concatenao

rvores B: remoo removendo chave 40

Duas operaes:
concatenao
redistribuio

rvores B: remoo removendo chave 40

1
2
3
4
9
30
---

Duas operaes:
concatenao

15
20
--40
46
---

50
----

52
56
58
--

redistribuio
60
80
---

65
70
--85
90
---

rvores B: remoo removendo chave 40

1
2
3
4
9
30
---

Duas operaes:
concatenao

15
20
--46
----

50
----

52
56
58
--

redistribuio
60
80
---

65
70
--85
90
---

rvores B: remoo removendo chave 40

1
2
3
4

Duas operaes:
concatenao:

9
30
---

irmos adjacentes:

pginas P e Q com
mesmo pai e ponteiros
adjacentes;
P e Q tem menos de 2d
chaves;
Concatena P e Q;
redistribuio

15
20
--46
----

50
----

52
56
58
-60
80
---

65
70
--85
90
---

rvores B: remoo removendo chave 40

1
2
3
4

Duas operaes:
concatenao:

9
30
---

irmos adjacentes:

pginas P e Q com
mesmo pai e ponteiros
adjacentes;
P e Q tem menos de 2d
chaves;
Concatena P e Q;
redistribuio

P 15
20
--46
-Q ---

50
----

52
56
58
-60
80
---

65
70
--85
90
---

rvores B: remoo removendo chave 40

1
2
3
4

Duas operaes:
concatenao:

9
30
---

irmos adjacentes:

pginas P e Q com
mesmo pai e ponteiros
adjacentes;
P e Q tem menos de 2d
chaves;
Concatena P e Q;
redistribuio

P 15
20
30
46
--Q ---

50
----

52
56
58
-60
80
---

65
70
--85
90
---

rvores B: remoo removendo chave 40

1
2
3
4

Duas operaes:
concatenao:

9
----

irmos adjacentes:

pginas P e Q com
mesmo pai e ponteiros
adjacentes;
P e Q tem menos de 2d
chaves;
Concatena P e Q;
redistribuio

50
----

15
20
30
46

52
56
58
-60
80
---

65
70
--85
90
---

rvores B: remoo removendo chave 40

1
2
3
4

Duas operaes:
concatenao:

9
----

irmos adjacentes:

pginas P e Q com
mesmo pai e ponteiros
adjacentes;
P e Q tem menos de 2d
chaves;
Concatena P e Q;
redistribuio

50
----

15
20
30
46

52
56
58
-60
80
---

65
70
--85
90
---

rvores B: remoo removendo chave 40

1
2
3
4

Duas operaes:
concatenao:

9
P ----

irmos adjacentes:

pginas P e Q com
mesmo pai e ponteiros
adjacentes;
P e Q tem menos de 2d
chaves;
Concatena P e Q;
redistribuio

50
----

15
20
30
46

52
56
58
-60
80
Q ---

65
70
--85
90
---

rvores B: remoo removendo chave 40

1
2
3
4

Duas operaes:
concatenao:

9
P 50
60
80

irmos adjacentes:

pginas P e Q com
mesmo pai e ponteiros
adjacentes;
P e Q tem menos de 2d
chaves;
Concatena P e Q;
redistribuio

50
----

15
20
30
46

52
56
58
---Q ---

65
70
--85
90
---

rvores B: remoo removendo chave 40

1
2
3
4

Duas operaes:
concatenao:

9
P 50
60
80

irmos adjacentes:

pginas P e Q com
mesmo pai e ponteiros
adjacentes;
P e Q tem menos de 2d
chaves;
Concatena P e Q;
redistribuio

50
----

15
20
30
46

52
56
58
---Q ---

65
70
--85
90
---

rvores B: remoo removendo chave 40

1
2
3
4

Duas operaes:
concatenao:

9
P 50
60
80

irmos adjacentes:

pginas P e Q com
mesmo pai e ponteiros
adjacentes;
P e Q tem menos de 2d
chaves;
Concatena P e Q;
redistribuio

50
----

15
20
30
46

52
56
58
---Q ---

65
70
--85
90
---

rvores B: remoo removendo chave 65

1
2
3
4

Duas operaes:
concatenao
redistribuio:
irmos adjacentes P e
Q com pai W ;
P e Q tem 2d chaves ou
mais;
redistribui chaves de P e
Q com pai W ;

9
50
60
80

50
----

15
20
30
46

52
56
58
---Q ---

65
70
--85
90
---

rvores B: remoo removendo chave 65

1
2
3
4

Duas operaes:
concatenao
redistribuio:
irmos adjacentes P e
Q com pai W ;
P e Q tem 2d chaves ou
mais;
redistribui chaves de P e
Q com pai W ;

9
50
60
80

50
----

15
20
30
46

52
56
58
---Q ---

70
---85
90
---

rvores B: remoo removendo chave 65

1
2
3
4

Duas operaes:
concatenao
redistribuio:
irmos adjacentes P e
Q com pai W ;
P e Q tem 2d chaves ou
mais;
redistribui chaves de P e
Q com pai W ;

9
50
60
80

50
----

15
20
30
46

52
56
58
70
--Q ---

----85
90
---

rvores B: remoo removendo chave 65

1
2
3
4

Duas operaes:
concatenao
redistribuio:
irmos adjacentes P e
Q com pai W ;
P e Q tem 2d chaves ou
mais;
redistribui chaves de P e
Q com pai W ;

9
50
58
80

50
----

15
20
30
46

52
56
----Q ---

60
70
--85
90
---

Exerccios Propostos

1. Desenhe uma rvore B de ordem 3 que contenha as


seguintes chaves: 1, 3, 6, 8, 14, 32, 36, 38, 39, 41, 43.

Exerccios Propostos

1. Desenhe uma rvore B de ordem 3 que contenha as


seguintes chaves: 1, 3, 6, 8, 14, 32, 36, 38, 39, 41, 43.
2. Desenhe uma rvore B de ordem 1 que contenha as
seguintes chaves: 2, 5, 7, 10, 13, 16, 18, 21.

Exerccios Propostos

1. Desenhe uma rvore B de ordem 3 que contenha as


seguintes chaves: 1, 3, 6, 8, 14, 32, 36, 38, 39, 41, 43.
2. Desenhe uma rvore B de ordem 1 que contenha as
seguintes chaves: 2, 5, 7, 10, 13, 16, 18, 21.
3. D exemplo de uma ciso de pgina que se propaga at
raiz.

Exerccios Propostos

1. Desenhe uma rvore B de ordem 3 que contenha as


seguintes chaves: 1, 3, 6, 8, 14, 32, 36, 38, 39, 41, 43.
2. Desenhe uma rvore B de ordem 1 que contenha as
seguintes chaves: 2, 5, 7, 10, 13, 16, 18, 21.
3. D exemplo de uma ciso de pgina que se propaga at
raiz.
4. D exemplo de uma concatenao que se propaga at
raiz.

Exerccios Propostos

1. Desenhe uma rvore B de ordem 3 que contenha as


seguintes chaves: 1, 3, 6, 8, 14, 32, 36, 38, 39, 41, 43.
2. Desenhe uma rvore B de ordem 1 que contenha as
seguintes chaves: 2, 5, 7, 10, 13, 16, 18, 21.
3. D exemplo de uma ciso de pgina que se propaga at
raiz.
4. D exemplo de uma concatenao que se propaga at
raiz.
5. A redistribuio propagvel? Justifique.

Exerccios Propostos

1. Desenhe uma rvore B de ordem 3 que contenha as


seguintes chaves: 1, 3, 6, 8, 14, 32, 36, 38, 39, 41, 43.
2. Desenhe uma rvore B de ordem 1 que contenha as
seguintes chaves: 2, 5, 7, 10, 13, 16, 18, 21.
3. D exemplo de uma ciso de pgina que se propaga at
raiz.
4. D exemplo de uma concatenao que se propaga at
raiz.
5. A redistribuio propagvel? Justifique.
6. Escreva o algoritmo de insero em uma rvore B.

Exerccios Propostos

1. Desenhe uma rvore B de ordem 3 que contenha as


seguintes chaves: 1, 3, 6, 8, 14, 32, 36, 38, 39, 41, 43.
2. Desenhe uma rvore B de ordem 1 que contenha as
seguintes chaves: 2, 5, 7, 10, 13, 16, 18, 21.
3. D exemplo de uma ciso de pgina que se propaga at
raiz.
4. D exemplo de uma concatenao que se propaga at
raiz.
5. A redistribuio propagvel? Justifique.
6. Escreva o algoritmo de insero em uma rvore B.
7. Escreva o algoritmo de remoo em uma rvore B.

Bibliografia Utilizada

SZWARCFITER, J. L. e MARKENZON, L. Estruturas de Dados e


seus Algoritmos, LTC, 1994.
ZIVIANI, N. Projeto de Algoritmos: com implementaes em Pascal e
C, 2a edio, Cengage Learning, 2009.

Você também pode gostar