Каковы преимущества Т-деревьев над В +/- деревьев?

голоса
12

Я исследовал определения Т-деревьев и B- / B + деревьев. Из работ в Интернете , я понимаю , что B-дерева лучше выполнять в иерархической памяти, такие как жесткие диски и кэшированной память.

То, что я не могу понять, почему Т-деревья / используются даже для плоской памяти?

Они рекламируются как космическая эффективной альтернатива AVL дерев.

В худшем случае, все листовые узлы Т-дерева содержат только один элемент, и все внутренние узлы содержат минимальное количество животных, которая близка к полному. Это означает, что в среднем только половина отведенного пространства используется. Если я не ошибаюсь, это то же самое, как использование в худшем случае B-деревьев, когда узлы В-дерева наполовину.

Если предположить, что оба дерева хранить ключи локально в узлах, но использовать указатели для обозначения записей, единственное отличие в том, что B-деревья должны хранить указатели для каждой из ветвей. Это, как правило, вызывает до 50% накладных расходов или менее (более Т-деревьев), в зависимости от размера клавиш. На самом деле, это близко к ожидаемому накладных расходов в AVL деревья, не предполагая родительского указателя, записей, встроенные в узлы, ключи, встроенные в записи. Является ли это ожидаемый выигрыш в эффективности, что позволяет нам использовать B-дерева, вместо этого?

T-деревья, как правило, реализуются на вершине АВЛ деревьев. AVL деревья более сбалансированы, чем B-деревьев. Может ли это быть связано с применением Т-деревьев?

Задан 29/01/2011 в 15:43
источник пользователем
На других языках...                            


2 ответов

голоса
3

Я могу дать вам личную историю , которая охватывает половину ответа, то есть, почему я написал некоторые Паскаль код для программирования B + деревья около 18 лет назад.

моя целевая система ПК с двумя дисководами, я должен был хранить индекс в энергонезависимой памяти, и я хотел, чтобы лучше понять, что я учился в университете. Я был очень недоволен выполнением коммерческого пакета, вероятно, DBase III, или какой-то продукт Fox, я не могу вспомнить.

во всяком случае: я нуждался в этих операциях:

  • Погляди
  • вставка
  • удаление
  • следующий пункт
  • предыдущий товар

  • Максимальный размер индекса не был известен

  • поэтому данные должны были находиться на диске
  • каждый доступ к поддержке имел высокую стоимость
  • читает весь блок стоит такой же, как чтение одного байта

B + -деревьях сделал что маленький медленный компьютер действительно летать через данные!

листики были два дополнительных указателей, чтобы они образовали дважды связанный список, для последовательного поиска.

Ответил 11/02/2011 в 23:49
источник пользователем

голоса
2

На самом деле разница заключается в системе вы используете. Как мой учитель в университете прокомментировал это так: если ваша проблема заключается в нехватке памяти, или в нехватке ГНБА будет определять, какое дерево и реализацию которых вы будете использовать. Скорее всего, это будет B + дерево.

Поскольку существует сотни реализаций, например, с 2direction очереди и однонаправленным очередей, где необходимо цикл мыслью элементов, а также существует несколько способов для хранения индекса и получить его будет определять реальные минусы и минуты любой реализации.

Ответил 25/02/2011 в 09:02
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more