Подтвердить что ты не робот

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

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

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

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

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

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

T-деревья обычно реализуются поверх деревьев AVL. Деревья AVL более сбалансированы, чем B-деревья. Может ли это быть связано с применением T-деревьев?

4b9b3361

Ответ 1

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

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

так или иначе: мне нужны эти операции:

  • поиск
  • вставки
  • удаление
  • следующий элемент
  • предыдущий элемент

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

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

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

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

Ответ 2

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

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