A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Algorítmos e estrutura de dados III Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.

Apresentações semelhantes


Apresentação em tema: "Algorítmos e estrutura de dados III Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação."— Transcrição da apresentação:

1 Algorítmos e estrutura de dados III Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação

2 Árvores 2-3 Árvores B (B-Trees) Árvores B+

3 Árvores de busca com grau maior que 2 Vimos que árvores de busca quando balanceadas, como as árvores AVL, permitem busca em tempo logarítmico. No caso das árvores AVL, a busca se dá em tempo log 2 (n) no pior caso. Poderíamos tentar melhorar procurando fazer a busca em tempo log k (n), com k > 2.

4 Árvores 2-3 Similar às árvores AVL, mas - Cada nó interno tem dois ou três filhos e - Todos os nós externos têm a mesma profundidade. A C F K M HLO G P T RX Q S VZ

5 Inserção em árvores 2-3 Como nas árvores AVL, a inserção se dá numa folha. Se há espaço para acrescentar o novo elemento, ele entra aí. Ex: Inserção do elemento G na árvore abaixo. E L P I T V X UWZ G

6 Inserção em árvores 2-3 Se não há espaço para acrescentar o novo elemento, gera- se dois nós com os dois elementos extremos no nó, e promove-se o elemento central, para ser incluído no nível imediatamente superior. E L P I T V X UWZ G N

7 Inserção em árvores 2-3 I N T V X UWZ Ex: Inserção do elemento N na árvore abaixo. Como um nó não pode ter três elementos, são criados dois nós com um elemento cada, e o elemento do meio é promovido. LE G P

8 Inserção em árvores 2-3 Se não há espaço para acrescentar o nó promovido, procede-se da mesma forma que no overflow anterior, até eventualmente achar espaço suficiente ou chegar até a raiz. I N T V X UWZ Ex: Inserção do elemento C na árvore abaixo. LE G P C

9 Inserção em árvores 2-3 Se não há espaço para acrescentar o nó promovido, procede-se da mesma forma que no overflow anterior, até eventualmente achar espaço suficiente ou chegar até a raiz. N T V X UWZ Ex: Inserção do elemento C leva à promoção do elemento E. LC P E G I

10 Inserção em árvores 2-3 I T V X UWZ Ex: Inserção do elemento C leva à promoção do elemento E que por sua vez leva à promoção do elemento I. C E G N L P

11 Árvores B ou B-Tree Note que a diferença crucial em termos de tempo de acesso entre a árvores binárias e as árvores 2-3 é que agora o acesso pode ser feito em tempo logarítmico, mas com base 3, o que é mais rápido. Podemos pensar então numa forma de diminuir mais ainda o tempo de acesso, aumentando o número de elementos em cada nó.

12 Árvores B Árvores B são uma extensão da noção de árvores 2-3, onde cada nó que não é a raiz pode ter entre m e 2m chaves. Esta estrutura normalmente é usada em memória externa. Deve haver um compromisso entre o maior número de elementos por nó e a capacidade de acesso em disco, além de uma técnica de busca dentro do nó.

13 Árvores B É um tipo de árvore muito utilizada em banco de dados e sistema de arquivos. Para inserir ou remover variáveis de um nó, o nó não poderá ultrapassar sua ordem e nem ser menor que sua ordem dividida por dois. Árvores B não precisam ser rebalanceadas como são freqüentemente as árvores de busca binária com Árvore AVL.

14 Árvores B Árvores B têm vantagens substanciais em relação a outros tipos de implementações quanto ao tempo de acesso e pesquisa aos nós. O criador das árvores B, Rudolf Bayer, não definiu claramente de onde veio o B das árvores B. Ao que parece, o B vem de balanceamento onde todos os nós da árvore estão em um mesmo nível. Também é possível que o B tenha vindo de seu sobrenome Bayer, ou ainda do nome da empresa onde trabalhava Boeing, no Boeing Scientific Research Labs.

15 Árvores B Definições Quando existem 2 ou mais nós, passam a ser chamadas de n-árias Nesses casos, os nós são mais comumente chamados de páginas Os registros de uma árvore B também são todos ordenados

16 Árvores B Supondo uma árvore B n-ária. Em um árvore B de ordem m temos: Cada página contém: Registros: no mínimo m e no máximo 2m registros, exceto a raiz, que pode conter entre 1 e 2m registros; Descendentes: no mínimo m + 1 descendentes e no máximo 2m +1 descendentes Todas as páginas folhas aparecem no mesmo nível

17 Exemplo de uma árvore B Exemplo de uma árvore B de ordem 2 com 3 níveis Páginas

18 Árvores B Objetivo principal Minimizar o número de acessos ao disco para recuperar um registro

19 Declaração do TAD Árvores B Definição da Estrutura #define ORDEM 2 #define TAMANHO (ORDEM*2)-1 typedef struct Pagina *PonteiroPagina; typedef struct { int chave; PonteiroPagina p; } item; typedef struct { int m; // numero de itens na pagina PonteiroPagina p0; item e[TAMANHO]; } Pagina;

20 Declaração do TAD Árvores B Definição das operações. Algumas das operações que podem ser feitas em árvores B são: Inicializa Pesquisa Insere Retira

21 Pesquisa em Árvore B Procedimento para pesquisa do número 13

22 Pesquisa em Árvore B Procedimento para pesquisa do número 55

23 Inserção Primeiro, é preciso localizar a página apropriada em que o novo registro deve ser inserido Duas possibilidades: Caso 1: o registro encontra seu lugar em uma página com menos de 2m registros. Nesse caso, o processo de inserção fica limitado àquela página Caso 2:O registro precisa ser inserido em uma página já cheia (com 2m registros). Nesse caso, o processo de inserção pode levar à criação de uma nova página.

24 Inserção de Registros Caso 1: o registro encontra seu lugar em uma página com menos de 2m registros Ordem 2 9 Registro 9 Registro 45 Registro

25 Inserção de Registros Caso 2: O registro precisa ser inserido em uma página já cheia (com 2m registros), e a página pai tem menos que 2m registros e 2m+1 páginas Ordem: 2 Registro

26 Caso 2: O registro precisa ser inserido em uma página já cheia (com 2m registros), e a página pai já tem 2m registros e 2m+1 páginas Ordem: 2 Inserção de Registros Registro

27

28 Remoção Primeiro, é preciso localizar a página apropriada do registro a ser excluído Duas possibilidades: Caso 1: quando o registro se encontra em uma página folha. 1.1: A folha possui mais que m registros 1.2: A folha possui apenas m registro e o irmão possui m+1 registros 1.3: A folha e seus irmãos possuem apenas m registros Caso 2: quando o registro não se encontra em uma folha. Nesse caso, o registro a ser retirado deve ser primeiro substituído por um outro para depois ser excluído. Em ambos os casos deve-se verificar se a retirada não afeta as propriedades básicas de uma árvore B

29 Remoção de Registros Caso 1.1: quando o registro se encontra em uma página folha e a folha possui mais que m registros Ordem 2 Registros 7, 13, 15, 33, 37, 41 e 43 Retirada simples do elemento da folha

30 Remoção de Registros Caso 1.2: quando o registro se encontra em uma página folha, a folha possui m registros (mínimo possível) e o irmão possui m+1 registros Ordem 2 A chave k do pai que separa os irmãos pode ser incluída no nó X e a última ou primeira chave do irmão (última se o irmão for da esquerda e primeira se o irmão for da direita) pode ser inserida no pai no lugar de k Registro

31 Remoção de Registros Caso 1.2: quando o registro se encontra em uma página folha, a folha possui m registro (mínimo possível) e o irmão possui m+1 registros Ordem Registro

32 Remoção de Registros Caso 1.3: quando o registro se encontra em uma página folha, a folha e seus irmãos possuem m registros (mínimo possível). Se sub-dividem em dois casos: Caso 1.3.1: O pai pode emprestar registros Caso 1.3.2: O pai não pode emprestar registros

33 Remoção de Registros Caso 1.3.1: quando o registro se encontra em uma página folha, a folha e seus irmãos possuem m registros (mínimo possível) e o pai pode emprestar Ordem 2 Registro 6 Se os dois irmãos de X contiverem exatamente m registros (ocupação mínima), nenhum registro poderá ser emprestado. Neste caso, o nó X e um de seus irmãos (à esquerda ou direita) são concatenados em um único nó, que também contém a chave separadora do pai

34 Remoção de Registros Caso 1.3.1: quando o registro se encontra em uma página folha, a folha e seus irmãos possuem m registros (mínimo possível) e o pai pode emprestar Ordem 2 Registro

35 Remoção de Registros Caso 1.3.1: quando o registro se encontra em uma página folha, a folha e seus irmãos possuem m registros (mínimo possível) e o pai pode emprestar Ordem 2 Registro

36 Remoção de Registros Caso 1.3.2: quando o registro se encontra em uma página folha, a folha e seus irmãos possuem m registros (mínimo possível) e o pai não pode emprestar Ordem 2 Registro Se os dois irmãos de X e o pai contiverem exatamente m registros (ocupação mínima), também nenhum registro poderá ser emprestado. Neste caso, o nó X e um de seus irmãos são concatenados em um único nó que também contém a chave separadora do pai, e o procedimento é feito recursivamente até que as páginas contenham a quantidade mínima de registros.

37 Remoção de Registros

38 Remoção de Registros Outro exemplo: Árvore B de ordem Registro

39 Remoção de Registros

40 Remoção Caso 2: quando o registro não se encontra em uma folha. Mesmo procedimento de remoção em árvores binárias ou AVL Substituição pelo registro mais à direita da sub-árvore à esquerda; Substituição pelo registro mais à esquerda da sub-árvore à direita; Caso 2.1: a sub-árvore vizinha possui registros para emprestar Caso 2.2: a sub-árvore vizinha não possui registros para emprestar

41 Remoção de Registros Registro 20 Caso 2.1: a sub-árvore vizinha possui registros para emprestar OU

42 Remoção de Registros Caso 2: quando o registro não se encontra em uma folha. Possui dois casos: Caso 2.2.1: O irmão possui registros para emprestar Caso 2.2.2: O irmão não possui registros para emprestar

43 Remoção de Registros Registro 20 Caso 2.2.1: a sub-árvore vizinha NÃO possui registros para emprestar e o irmão possui registros para emprestar Concatena-se o filho à esquerda e à direita do registro excluído; o registro mais à esquerda (ou mais à direita) do irmão é promovido para a raiz e o registro à esquerda (ou à direita) da raiz é inserido na página que teve o registro excluído; o filho à esquerda (ou o filho à direita) do registro que foi emprestado passa a ser o filho à direita (ou à esquerda) do nó para onde ele foi deslocado;

44 Remoção de Registros

45 Remoção de Registros Registro 40 Caso 2.2.1: a sub-árvore vizinha NÃO possui registros para emprestar e o irmão possui registros para emprestar

46 Remoção de Registros

47 Remoção de Registros Registro 23 Caso 2.2.2: a sub-árvore vizinha NÃO possui registros para emprestar e o irmão também NÃO possui registros para emprestar Concatena-se os registros filhos à esquerda e à direita do registro excluído; em seguida, concatena-se os registros da página excluída, do seu irmão e do seu pai

48 Considerações finais Inserção: Mais veloz se comparado à tabelas de hash, por sua capacidade de se ajustar e balancear a cada inserção, isto significa menores colisões, e consequentemente menos laços para encontrar uma posição livre. No caso de precisar expandir, a duplicação é feita somente na folha, e nos nós correspondentes se necessário, o que garante menor espaço vazio alocado e menos ocupação em disco, ao contrário do hash que duplica a tabela por inteiro.

49 Considerações finais Exclusão: No caso de uma exclusão, Arvores B são capazes de evitar grandes fragmentações, pois se ajustam e balanceiam também nesse momento. Já em tabelas de hash, quando há exclusão de uma chave, o espaço alocado para esta fica vazio, porém ainda alocado. Maior fragmentação significa menor desempenho.

50 Considerações finais Busca: Árvores B são tão boas e velozes quanto tabelas de hash numa busca por igualdade, porém são muito superiores em velocidade e desempenho em buscas do tipo range. A superioridade da Árvore B, se baseia na chave primária, onde a busca começa pela raiz e é direcionada aos nós e filhos de acordo com a chave procurada, isto torna mais objetivo e direto o resultado final. Porém, se comparado a Árvore B+, sua performance pode cair um pouco em uma busca linear.

51 Árvores B+ São árvores B que contém dados somente nos nós folhas e existe uma ligação entre os irmãos folhas adjacentes para facilitar a busca Uma árvore B+ é uma variação da árvore B. Representa a ordenação de dados de uma maneira que permita uma inserção e remoção eficiente de elementos. É um índice dinâmico de multi-níveis com ligações máximas e mínimas no número de chaves em cada nodo.

52 Árvores B+ Os sistemas de arquivos NTFS para o Microsoft Windows, o sistema de arquivos ReiserFS para Unix, o XFS para IRIX e Linux, e o JFS2 para AIX, OS/2 e Linux, usam este tipo de árvore. Numa árvore-B+, contrastando com uma árvore-B, todos dos dados são gravados nas folhas. Os nodos internos contêm apenas chaves e apontadores da árvore. Todas as folhas estão no mesmo nível mais baixo. Os nodos das folhas também estão ligados entre si como uma lista para efetuar consultas facilmente.

53 Arvores B+ O número máximo de apontadores num registro é chamado de ordem da árvore B+. O número mínimo de chaves por registro é metade do número máximo de chaves. Por exemplo: Se a ordem de uma árvore B+ for n+1, cada nodo (exceto o da raiz) deverá ter entre (n+1)/2 e n chaves. Se n for um número primo, o número mínimo de chaves pode ser (n+1)/2 ou (n-1)/2, mas terá de ser o mesmo em toda a árvore.

54 Árvores B+ Um exemplo simples de uma árvore B+ ligando as chaves 1-7 aos valores de dados d1-d7. Notar a lista ligada (em vermelho) permitindo uma atualização ordenada rápida.


Carregar ppt "Algorítmos e estrutura de dados III Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação."

Apresentações semelhantes


Anúncios Google