Em que ordem você deve inserir um conjunto de chaves conhecidas em uma Árvore B para obter uma altura mínima?
Dado um número fixo de chaves ou valores (armazenados em array ou em alguma estrutura de dados) e ordem de b-tree, podemos determinar a sequência de inserção de chaves que gerariam uma b-tree eficiente em espaço.
Para ilustrar, considere a b-tree de ordem 3. Deixe as chaves serem {1,2,3,4,5,6,7}. Inserindo elementos na árvore na seguinte ordem
for(int i=1 ;i<8; ++i)
{
tree.push(i);
}
criaria uma árvore como esta
4
2 6
1 3 5 7
Vejohttp://en.wikipedia.org/wiki/B-tree
Mas inserindo elementos dessa maneira
flag = true;
for(int i=1,j=7; i<8; ++i,--j)
{
if(flag)
{
tree.push(i);
flag = false;
}
else
{
tree.push(j);
flag = true;
}
}
cria uma árvore como esta
3 5
1 2 4 6 7
onde podemos ver que há diminuição no nível.
Então existe uma maneira particular de determinar a sequência de inserção que reduziria o consumo de espaço?