Estou bastante familiarizado com uma Árvore B, principalmente tendo que manter os bancos de dados bem alimentados com eletricidade, ar condicionado e espaço no disco rígido. Associo-me a uma lista vinculada dupla (doubl [ie, ey]?).
Hoje, um dos desenvolvedores no almoço mencionou uma árvore R.
Eu pulei na Wikipedia e comecei a ler. Parecia uma árvore B mais alta. Infelizmente, não ter uma formação matemática profunda torna difícil entender o que alguns dos meus colegas de trabalho estão falando.
Eu esperava que alguém pudesse esclarecer algumas diferenças entre uma árvore B e uma árvore R. Provavelmente, acabarei perguntando aos caras, mas não há garantia de que eles responderão à minha pergunta. Muito provavelmente eles começarão a divagar sobre Deus sabe o quê. . .
fonte
Respostas:
Uma árvore R pode ser vista como generalização de uma árvore b. Onde uma árvore b fornece acesso a O (log n) em um "intervalo limitado" das chaves que ele contém, uma árvore R fornece acesso a O (log n) em uma "região dimensional K" das chaves que ele contém.
Se você quisesse mapear CEPs para nomes de condados, você poderia usar uma B-Tree, pois poderia perguntar "Quais são todos os municípios com CEPs entre 60000 e 61000?" No entanto, uma B-Tree não seria adequada para mapear coordenadas GPS para nomes de condados para consultas como "Quais são todos os municípios dentro de 160 quilômetros de Chicago?", Uma vez que apenas ordena suas chaves em uma única dimensão. Um R-Tree divide suas chaves de acordo com as caixas delimitadoras sobrepostas e, portanto, é uma maneira natural de armazenar chaves quando você precisa consultar várias dimensões.
fonte
A maioria das estruturas em árvore pode ser reduzida a alguma forma de lista vinculada, desde que você ignore como a lista é construída (especificamente, como os elementos são adicionados e removidos e como os nós são reequilibrados, se aplicável). É essencialmente o algoritmo de inserção / exclusão / recuperação que distingue uma estrutura de dados de outra.
Os nós em uma árvore R geralmente contêm uma caixa delimitadora, que permite indexar com eficiência os locais, conforme necessário, se você deseja procurar registros "próximos" a um local específico. Os elementos em uma árvore B têm uma ordem mais simples; você pode comparar diretamente se algo é maior ou igual a outro elemento. Em uma árvore R, o objetivo de cada entrada é determinar quais elementos estão contidos em uma caixa delimitadora.
Uma Árvore B permite pesquisar com eficiência itens que podem ser solicitados na memória secundária (como um disco rígido), e uma Árvore R permite pesquisar com eficiência elementos que estão "em" ou "próximos" a um ponto ou caixa delimitadora específica, também na memória secundária.
fonte