Aula de Avaliao
Dezembro 2012
R OTEIRO
DA
AULA
1 2
rvores de Busca Multidirecionais rvore B Busca em uma rvore B Insero em uma rvore B
Referncias
1/29
B REVE R EVISO
Se a probabilidade de pesquisar uma chave em uma tabela for a mesma para todas as chaves, uma rvore binria balanceada determina a busca mais eciente Caminho de uma rvore sequncia de arcos, com origem na raiz e nal em um determinado n Nvel de determinado n tamanho do caminho da raiz at determinado n mais um, que representa o nmero de ns no caminho Altura de uma rvore binria nvel mximo de suas folhas rvore binria balanceada (rvore AVL) as alturas das duas subrvores de todo n nunca diferem em mais de um Balanceamento de um n a altura de sua subrvore da esquerda menos a altura de sua subrvore a direita Manuteno do balanceamento feita por meio de rotaes
2/29
B REVE R EVISO
3/29
RVORES
DE
B USCA G ERAL
As rvores de busca geral (no binrias) so tambm usadas como tabelas de pesquisa, principalmente em armazenamento externo Categorias desse tipo de rvore:
rvores de busca multidirecionais rvores de busca digitais
4/29
RVORES
DE
B USCA M ULTIDIRECIONAIS
Cada n contm uma ou mais chaves rvore de busca multidirecional de ordem n cada n tem n ou menos subrvores e contm uma chave a menos que a quantidade de subrvores Se s0 , s1 , ..., sn1 forem as n subrvores de um n contendo as chaves k0 , k1 , ..., kn2 , em ordem ascendente, todas as chaves na subrvores sj (em que j est entre 1 e n 1) so maiores que kj 1 e menores que kj e todas as chaves na subrvore sn1 so maiores que kn2 A subrvore sj 1 chamada subrvore esquerda da chave kj 1 e sua raiz chamada lho esquerdo da chave kj 1 De modo semelhante, sj chamada subrvore direita e sua raiz de lho direito de kj 1 Um ou mais subrvores de um n podem estar vazias
5/29
RVORES
DE
B USCA M ULTIDIRECIONAIS
6/29
RVORES
DE
B USCA M ULTIDIRECIONAIS
Ns completos ns que contm o nmero mximo de subrvores e o nmero mximo de chaves Semifolha n com pelo menos uma subrvore vazia rvore de busca direcional de cima para baixo caracterizada pela condio de que qualquer n incompleto um n folha Numa rvore multidirecional de cima para baixo, uma semifolha precisa ser ou completa ou um folha
7/29
RVORES
DE
B USCA M ULTIDIRECIONAIS
RVORES
DE
B USCA M ULTIDIRECIONAIS
rvore Multidirecional Balanceada todas as folhas (que tambm so semifolhas) esto no mesmo nvel A rvore da gura a seguir no rvore de cima para baixo porque existem quatro ns com apenas uma chave e que no so ns folha As rvores das duas guras anteriores no esto balanceadas
9/29
RVORES
DE
B USCA M ULTIDIRECIONAIS
10/29
RVORE B
Uma rvore de busca multidirecional e balanceada, de ordem n, na qual cada n no-raiz contm pelo menos n/2 chaves, chamada de rvore B de ordem n Uma propriedade importante de uma rvore B o tamanho de cada n, que pode ser to grande quanto o tamanho de um bloco. Alm disso, ela possui as seguintes propriedades:
1
3 4
a raiz tem pelo menos duas subrvores, a menos que ela seja uma folha; cada n no-raiz e no-folha contm k 1 chaves e k ponteiros para subrvores, em que n k n; 2 cada n folha contm k 1 chaves, em que n k n; 2 todas as folhas esto no mesmo nvel.
Exerccio: Implemente um TAD (Tipo Abstrato de Dados) que represente uma rvore B.
11/29
RVORE B
12/29
RVORE B
Resposta:
13/29
B USCA
EM UMA
RVORE B
A busca em uma rvore B consiste em, primeiramente, fazer uma busca sequencial em todas as chaves de um determinado n Caso encontre a chave desejada, o algoritmo retorna o n que contm a chave Caso no encontre a chave no n corrente, o algoritmo avana para o lho do n no qual a chave pode estar e, ento realiza uma nova busca Se a chave no for encontrada em nenhum n, o algoritmo retorna NULL Exerccio: Implemente um algoritmo que realize a busca por uma chave em uma rvore B
14/29
B USCA
Resposta:
EM UMA
RVORE B
15/29
I NSERO
EM UMA
RVORE B
Pode-se identicar trs situaes comuns quando se insere uma chave em uma rvore B. Lembrando que a tarefa de insero deve manter o balanceamento da rvore, temos que
1
uma chave pode ser colocada em uma folha que ainda tem algum espao. A ordem da chave nas folhas deve ser sempre preservada a folha na qual uma chave precisa ser colocada est cheia tem-se, ainda, o caso em que a raiz da rvore est cheia e uma chave precisa subir para a raiz
2 3
16/29
I NSERO
EM UMA
RVORE B
Antes da insero:
Depois da insero:
17/29
I NSERO
EM UMA
RVORE B
Antes da insero:
Depois da insero:
?
Figura: Insero em uma rvore B na folha sem espao.
18/29
I NSERO
EM UMA
RVORE B
19/29
I NSERO
EM UMA
RVORE B
20/29
I NSERO
EM UMA
RVORE B
21/29
I NSERO
EM UMA
RVORE B
Projeto: Elabore um algoritmo de alto nvel, utilizando a linguagem C, que realize o processo de insero em uma rvore B.
22/29
R EMOO
EM UMA
RVORE B
A remoo em grande parte o inverso da insero, embora tenha mais casos especiais Deve-se tomar cuidado para evitar que cada n esteja menos da metade cheio depois de uma remoo Isso signica que os ns algumas vezes devem ser fundidos Na remoo existem dois casos principais:
remover uma chave de uma folha remover uma chave de um n no-folha
No segundo caso utiliza-se um procedimento similar remoo por cpia, usada para rvores binrias de busca
23/29
R EMOO
EM UMA
RVORE B
24/29
R EMOO
EM UMA
RVORE B
Se, depois de remover K , o nmero de chaves na folha menor do que [n/2] 1, causando uma subutilizao:
Se existem um irmo, esquerda ou direita com o nmero de chaves excedendo o mnimo [n/2] 1, ento todas as chaves dessa folha ou desse irmo so redistribudas entre eles, movendo-se a chave separadora do ascendente at a folha e movendo-se uma chave do irmo at o ascendente Se a folha subutilizada e o nmero de chaves do seu irmo [n/2] 1, a folha e o irmo so fundidos; as chaves de uma folha, de seu irmo e a chave de separao do ascendente so todas colocadas na folha e o n irmo descartado. As chaves no ascendente so movidas se um buraco aparece. Isso pode inicializar uma cadeia de operaes se o ascendente subutilizado. O ascendente agora tratado como se fosse uma folha, e essa etapa repetida at que a etapa anterior possa ser executada ou a raiz da rvore tenha sido atingida.
25/29
R EMOO
EM UMA
RVORE B
Um caso particular resulta em fundir uma folha ou no-folha com seu irmo quando o seu ascendente a raiz com somente uma chave. Nesse caso, as chaves do n e seu irmo, junto com a nica chave da raiz, so colocadas no n que se torna uma nova raiz, e tanto o n irmo como o n raiz velho so descartados. o nico caso em que dois ns desaparecem ao mesmo tempo. Alm disso, a altura da rvore diminuda por um.
26/29
R EMOO
EM UMA
RVORE B
27/29
R EMOO
EM UMA
RVORE B
R EMOO
EM UMA
RVORE B
As rvores B, de acordo com sua denio, esto garantidas de serem pelo menos 50% cheias, por isso pode acontecer de 50% de espao ser basicamente perdido Com que frequncia isso acontece? Se muito frequentemente, a denio precisa ser reconsiderada ou algumas outras restries impostas a essa rvore B As anlise e simulaes, no entanto, indicam que, depois de uma srie de numerosas inseres e remoes aleatrias, a rvore B est aproximadamente 69%, depois do que as mudanas na porcentagem de clulas ocupadas so muito pequenas Mas muito improvvel que a rvore B v sempre estar cheia at a borda, assim, algumas estipulaes adicionais so necessrias
29/29