Você está na página 1de 49

Faculdade SEAMA

Curso de Sistemas de Informao

Alg. e Estrutura de Dados II


Prof. Alcides Xavier Benicasa

rvores M-vias e B

rvores Multivias (Multiway tree)

rvores Multivias
{

Em uma rvore binria, cada n possui um


item de dado e pode ter at dois filhos.

Se permitirmos o uso de mais itens de dados


e filhos por n, o resultado uma rvore
Multivias ou M-vias (multiway tree).

Uma Estrutura Multivia com algoritmo


eficiente deve considerar:
z
z

Tempo de acesso a cada n


Balanceamento da rvore.

As rvores 2-3-4, so rvores multivias que


podem ter at quatro filhos e trs itens de
dados por n.

rvores 2-3-4
{

rvores 2-3-4 so interessantes por


vrias razes:
z
z
z

So rvores balanceadas.
Fceis de programar.
Servem como uma introduo para
rvores B.

rvores 2-3-4
{
{

A figura mostra uma pequena rvore 2-3-4.


Cada n pode conter um, dois ou trs itens
de dados.
50

30

10 20

60 70 80

40

55

62 64 66

75

83 86

rvores 2-3-4
{

Um n interno deve sempre ter um filho a


mais que seus itens de dados.
Um n folha, ao contrrio, no possui filhos,
mas ele pode conter um, dois ou trs itens
de dados. Ns vazios no so permitidos.
Devido a uma rvore 2-3-4 possuir ns
com at quatro filhos, ela chamada de
rvore multivias de ordem 4 (multiway
tree of order 4).

rvores 2-3-4
{

O 2, 3 e 4 no nome rvore 2-3-4 referem-se a quantos


links para filhos podem potencialmente estar contidos em
um dado n.
Para ns internos (no folhas), trs combinaes so
possveis:
z um n com um item de dado sempre possuir dois
filhos;
z um n com dois itens de dados sempre possuir trs
filhos;
z um n com trs itens de dados sempre possuir quatro
filhos.
50

30

10 20

60 70 80

40

55

62 64 66

75

83 86

rvores 2-3-4

Por que uma rvore 2-3-4


no chamada de rvore
1-2-3-4?
{

Um n no pode ter somente um filho, como


os ns na rvore binria
Um n com um item de dado precisa sempre
ter dois links, a menos que seja uma folha,
neste caso, ele no possui links.

rvores 2-3-4
Um n com dois links chamado 2-ns,
Um n com trs links chamado 3-ns
Um n com quatro links chamado 4-ns

{
{
{

40 62

25
0

2-ns

12

27 33

33 37

50 75 95
0

30 35

55

78

100 105

4-ns

3-ns
2

51 55 59

83

rvores 2-3-4 X rvore Binria


{

Em uma rvore binria, todos os filhos


com chaves menores que a chave do
n esto enraizados no n filho
esquerda, e todos os filhos com
chaves maiores ou iguais a chave do
n esto enraizados no n filho
direita.
Na rvore 2-3-4 o princpio o mesmo,
mas existe algo mais:

rvores 2-3-4
{
{

{
{

todos os itens de dados na sub-rvore enraizada no


filho 0, possuem valores menores do que a chave 0;
todos os itens de dados na sub-rvore enraizada no
filho 1, possuem valores maiores do que a chave 0, mas
menores do que a chave1;
todos os itens de dados na sub-rvore enraizada no
filho 2, possuem valores maiores do que a chave 1, mas
menores do que a chave2;
todos os itens de dados na sub-rvore enraizada no
filho 3, possuem valores maiores do que a chave 2.
Valores duplicados geralmente no so permitidos.
Deste modo ns no necessitamos nos preocupar com a
comparao de chaves iguais.
A
0
N com chaves
menores do que
A

1
N com chaves
entre A e B

C
2
N com chaves
entre B e C

3
N com chaves
maiores do que
C

Pesquisa em rvores 2-3-4


Exemplo:
{ Para pesquisar por um item de dado com a chave 64 na
rvore da figura, voc inicia na raiz, porm no
encontra o item.
{ Por que 64 maior do que 50, voc vai para o filho 1, o
qual ns representamos com 60,70 e 80.
{ Voc no encontra o item de dado, assim voc precisa
passar para o prximo filho.
{ Aqui, devido a 64 ser maior do que 60, mas menor do
que 70, voc vai novamente para o filho 1. Desta vez
voc encontra o item especfico no link 62, 64 e 66.
50

30

10 20

60 70 80

40

55

62 64 66

75

83 86

Insero em rvore 2-3-4


{
{

{
{
{
{

Novos itens de dados so sempre inseridos nas


folhas.
Se os itens foram inseridos em um n com
filhos, ento o nmero de filhos necessitar ser
mudado para manter a estrutura da rvore, o
que estipula que esta rvore deve ter um filho a
mais do que os itens de dados em um n.
O processo de insero inicia pela pesquisa do
n folha apropriado.
Se ns que no esto cheios so encontrados
durante a pesquisa, a insero fcil.
A insero pode envolver a movimentao de
um ou dois itens em um n.
As chaves devero estar na ordem correta aps
o novo item ser inserido.

Exemplo 1: Insero em rvore 2-3-4


- Insero de um item (18) sem diviso

do n

a) Antes da insero

28

11
5

55

42
13

23

74

30

44

47

63

67

72

97

- O item 23 vai ser deslocado para direita


para abrir espao para inserir o item 18.
b) Depois da insero

28

11

18 inserido

55

42

13

18

23

30

74

44

47

23 deslocado para direita

63

67

72

97

Exemplo 2 - Insero em rvore 2-3-4


{

Com Diviso de ns
z

As inseres tornam-se mais complicadas se um


n cheio encontrado no caminho abaixo do
ponto de insero.
Quando isto acontece, o n precisa ser dividido
(split).
este processo de diviso que mantm a rvore
balanceada.
O tipo de rvore 2-3-4 que estamos vendo
freqentemente chamada de rvore 2-3-4 topdown, por que os ns so divididos de maneira
para baixo do ponto de insero.

Insero em rvore 2-3-4


{

Chamaremos os itens de dados a serem


divididos por A, B e C.
z

assumimos que o n a ser dividido no o


raiz, ns examinaremos a diviso da raiz
depois

a) Antes da insero

insero do 99

62

29

83
A

15

21

47

74

87

89

92

n a ser dividido

104

C
97

112

Insero em rvore 2-3-4


a) Antes da
insero

insero do 99

62

29

83
A

15

{
{
{
{
{

21

47

74

87

92
B

89

n a ser dividido

104
C
97

112

Um novo n vazio criado. Ele parente (sibling) do n que est


sendo dividido, e colocado a sua direita;
O item de dado C movido para o novo n;
O item de dado B movido para o pai do n que est sendo dividido;
O item de dado A fica aonde ele est;
Os dois filhos mais direita so desconectados do n que est sendo
dividido e so conectados no novo n.

b) Aps a insero
62

83 fica no lugar
29

92 movido para cima

92

83

104 foi p/ direita


104

A
15

21

47

74

novo n

C
87

89

97

99

112
99 inserido

Exemplo 3 - Insero em rvore 2-3-4


{

Dividindo a raiz
z

Quando uma raiz cheia encontrada no


inicio da pesquisa para encontrar o
ponto de insero, o resultado da
diviso ligeiramente mais
complicado:
insero do 41

a) Antes da insero

26
A

13

31

35

49

raiz a ser dividido

72

C
52

61

82

Insero em rvore 2-3-4


um novo n criado, tornandose a nova raiz, e os pais do novo
n so divididos;
um segundo novo n criado,
tornando-se parente (sibling) do
n que est sendo dividido;

a) Antes da insero
insero do 41
26
A
9

z
z
z
z

13

31

49
B

35

raiz a ser dividido

72
C
52

61

o item de dado C movido para o novo n parente;


o item de dado B movido para a nova raiz;
o item de dado A deixado aonde est;
os dois filhos mais a direita do n que est sendo dividido so
desconectados dele e conectados no novo n do lado direito.

b) Aps a insero

49 movido p/cima
novo n raiz

49
B
26 fica no
lugar

72 movido
p/ direita

26
A

13

31

novo n direita

72
C

35

41

52
41 inserido

61

82

82

rvores 2-3

rvores 2-3
{

Primeira rvore multivias, inventada por J.E. Hopcroft


em 1970.
Iremos analisar rvores 2-3 rapidamente aqui por que
elas so importantes historicamente e porque ainda
so usadas em muitas aplicaes.
Alm disso, algumas tcnicas usadas com rvores 2-3
so aplicveis s rvores B.
rvores 2-3 so similares s rvores 2-3-4 exceto
que, como voc pode ter adivinhado pelo nome,
mantm um item de dados a menos e tem menos um
filho.

Divises de n
{

Como em rvores 2-3-4, toda insero feita


em ns folhas e todo n folha est no nvel
inferior.

A busca de um item de dados existente


lidada exatamente como em uma rvore 2-34, exceto pelo nmero de itens de dados e
filhos.

Mas h uma diferena surpreendente no


modo como divises so lidadas.

Eis por que as divises so to diferentes


{

Em um ou outro tipo de rvore, uma diviso de n


requer trs itens de dados: um a ser mantido no n
sendo dividido, um para mover para a direita para o
novo n e um para mover para cima para o n pai.

Um n completo em uma rvore 2-3-4 tem trs itens


de dados, que so movidos para esses trs destinos.

Porm, um n completo em uma rvore 2-3 tem


apenas dois itens de dados.

Onde podemos obter um terceiro item?

Eis por que as divises so to diferentes


{

Teremos que usar o novo item: aquele


sendo inserido na rvore.
Em uma rvore 2-3-4, o novo item
inserido depois de todas as divises
terem ocorrido.
Na rvore 2-3, ele tem que participar
na diviso.

Primeiro Caso
{

Se o n folha onde o novo item dever ser inserido no


estiver completo, o novo item poder ser inserido
imediatamente.
Inserindo o item 90.

75

75

70

80

90

70

80

90

Segundo Caso
{

Se o n folha estiver completo, ele ter


que ser dividido.
Seus dois itens e o novo item sero
distribudos entre trs ns: o n
existente, o novo n e o n pai.
Se o pai no estiver completo, a
operao estar completada.

Segundo Caso
{

Inserindo o item 85.

75

75

70

80

85

90

70

80

85

90

Terceiro Caso
{

Se o pai estiver completo, ter que ser


dividido tambm.
Seus dois itens e o item transmitido
para cima a partir de seu filho recmdividido tero que ser distribudos
entre o pai, um novo irmo do pai e o
pai do pai.

Terceiro Caso
{

Inserindo o item 100.


50

75

70

50

75

85

80

90

100

85

95

70

80

95

90

100

Quarto Caso
{

Se o pai do pai (o av do n folha)


estiver completo, ter que ser dividido
tambm.
O processo de diviso ser repercutido
para cima at que um pai no completo
ou a raiz seja encontrada.

Quarto Caso
{

Inserindo o item 24.


50

20

22

24

21

25

23

30

85

75

70

95

80

90

100

Quarto Caso
{

Inserindo o item 24.


50

23

21

20

85

25

22

24

75

30

70

95

80

90

100

Exerccios
1.

Determinado sistema armazena registros por chaves


numricas em uma rvore 2-3. Apresente passo a
passo como a rvore vai sendo construda. Realize
os splits necessrios. Nessa rvore so inseridos os
seguintes valores:
a.

20, 10, 5, 30, 25, 27, 48, 50, 53, 8, 6, 3, 1, 77 e


28.
28

b.

estruturadedadosumadisciplinainteressante.

Referncias
{

rvores 2-3
z

Lafore, R. Estruturas de Dados e Algortmos em Java.


Editora Cincia Moderna, Rio de Janeiro, 2004

rvores B

rvore B
{

So rvores de pesquisa balanceadas


especialmente projetadas para a pesquisa de
informao em discos magnticos e outros meios de
armazenamento secundrio.

Minimizam o nmero de operaes de


movimentao de dados (escrita/leitura) numa
pesquisa ou alterao.

O grau de um n pode ser alto.

Podem ser consideradas como uma generalizao


natural das rvores de pesquisa binrias.

rvores B
{
{

As rvores so uma boa abordagem para dados


em memria.
Mas, as rvores trabalham com arquivos?
z

Elas trabalham, mas um tipo diferente de rvore


precisa ser usado para dados externos do que
para dados em memria.

A rvore apropriada um rvore mltivias,


parecida com uma rvore 2-3-4, mas com
muito mais itens de dados por n
Ela se chama rvore B (tree-B). As rvores B
foram concebidas como estrutura apropriada
para armazenamento externo por R. Bayer e E.
M. McCreight em 1972.
rvores M-Vias permanentemente balanceadas
so chamadas de rvore B.

rvores B - Um bloco por n


{

{
{
{

O acesso a disco mais eficiente


quando o dado lido ou escrito em
um bloco de uma s vez.
Em uma rvore, a entidade que
contm dados o n.
Ideal: armazenar um bloco inteiro
de dados em cada n da rvore.
Deste modo, ler um n acessa um
conjunto mximo de dados em um
curto espao de tempo.

rvores B - Links
{

Em uma rvore, precisamos tambm


armazenar os links para outros ns.
Em uma rvore em memria, estas
ligaes so referncias (ou ponteiros,
em linguagens como Pascal e C) para os
ns em outras partes da memria.
Para as rvores armazenadas em um
arquivo em disco, as ligaes (links) so
nmeros de blocos em um arquivo.

rvores B x rvores 2-3-4


{

Dentro de cada n os dados so


ordenados seqencialmente pela
chave, como nas rvores 2-3-4.
A estrutura de uma rvore B
similar a de uma rvore 2-3-4,
exceto que na rvore B existem
mais itens de dados por n e mais
links para ns filhos.

rvores B
Caractersticas
{

A raiz tem no mnimo uma chave e


dois filhos
Uma folha tem no mnimo d chaves
e no tem filhos
Todas as folhas esto no mesmo
nvel (balanceamento)

Pesquisa em rvores B
{
{

{
{

Primeiro, o bloco contendo a raiz lido.


O algoritmo de pesquisa ento inicia a
verificao de cada um dos registros (se ele
no estiver cheio, tantos quantos o n
atualmente armazena) iniciando pelo registro 0.
Quando ele encontra um registro com chave
maior, ele sabe que deve ir para o filho que
reside entre este registro e o precedente.
Este processo continua at o n correto ser
encontrado.
Se uma folha alcanada sem encontrar a
chave especfica, a pesquisa no obteve
sucesso.

Insero em rvores B
{

Em uma rvore B importante


manter um n to cheio quanto
possvel;
deste modo cada acesso disco, o
qual l uma entrada de um n,
pode adquirir o mximo de
quantidade de dados.

Construo de uma pequena rvore B


{
{
{

A figura (a) mostra um n raiz que j est


cheio;
Itens com chaves 20,40,60 e 80 j foram
inseridas na rvore.
Um novo item de dado com a chave 70
deve inserido, resultando na diviso de
um n.
A raiz est sendo dividida, dois novos ns
so criados: uma nova raiz e um novo n
para a direita do que est sendo dividido.

(a)

20

40

60

80

70

20

40

60

70 80

Construo de uma pequena rvore B


{
{
{
{

Na figura (b) inserimos mais dois itens: 10 e 30.


Eles preenchem totalmente o filho da esquerda, tal como
apresentado nas figura (c).
O prximo item a ser inserido, 15, divide o filho
esquerda, como visto na figura (d).
Aqui o item 20 foi promovido para cima, na raiz.
10

60

30

(b)
20

40

70

80

15

60
(c)
10

10
20

30

40

70

20

80

60

(d)
10

15

30

40

70

80

15

20

30 40

Construo de uma pequena rvore B


{
{

Na fig. (e) trs itens, 75,85 e 90, so inseridos


O terceiro filho dividido, causando a criao
de um novo n e a promoo do item
intermedirio, 80, para a raiz.
O resultado disto visto na figura (f).
20

85

75

60

(e)
10

90
70

15

30

20

60

40

70

75

80

80

(f)

10

15

30

40

70

75

85

90

80

85 90

Construo de uma pequena rvore B


Novamente trs itens, 25, 35 e 50, so adicionados fig. (g)
Os primeiros dois itens enchem totalmente o segundo filho
E o terceiro filho divido, provocando a criao de um novo
n e a promoo do item intermedirio, 35, para a raiz,
como pode ser visto na figura (h).

{
{
{

20

60

35

25

80

50
25

30

85

90

35

40 50

(g)

10

15

20

30

40

35

60

70

75

80

(h)

10

15

25

30

40

50

70

75

85

90

Construo de uma pequena rvore B


Agora a raiz est cheia.
Contudo, inseres subseqentes no necessariamente causaro a
diviso do n, porque os ns so divididos somente quando uma
nova insero em um n cheio efetuada, no quando um n cheio
encontrado em uma pesquisa sobre a rvore.
Assim, 22 e 27 so inseridos no segundo filho sem causar qualquer
diviso, como apresentado na figura (j).

{
{

20

35

60

22

80

27

(i)

10

15

25

30

20

35

60

40

50

70

40

50

70

75

85 90

80

(j)

10

15

22

25

27

30

75

85 90

{
{
{
{

O prximo item a ser inserido, 32, no causa uma diviso, na


realidade, ele causa duas divises.
O segundo n filho, est cheio, deste modo, ele dividido, como visto
na figura (l).
O item 27, promovido a partir da diviso, no foi colocado no seu
lugar porque a raiz est cheia.
Portanto a raiz tambm precisa ser dividida, resultando no arranjo
presente na figura (M).
20

35

60

32

80

(k)

10

15

22

22

20

25

27

35

60

30

40

50

70

75

22

25

30 32

27

80

20
15

27

85 90

(l)
10

25

40

50

70

75

27

35

85 90

35
(M)
20

10 15

27

22 25

60

30 32

40 50

80

70 75

85 90

60 80