Класс B-дерева в стандартных библиотеках С#?

Какой класс в библиотеках базового класса С# (.NET или Mono) непосредственно реализует B-деревья или может быть быстро переопределен/унаследован для реализации B-деревьев? Я вижу класс Hashtable, но не может найти каких-либо классов для чего-либо из семейства Tree...

Должен существовать базовый класс Tree, который может быть переопределен для генерации определенных реализаций дерева (например, B-tree или Red-Black или Binary Tree и т.д., указав условия инварианта дерева). Не имеет смысла заставлять программистов изобретать колесо для базовых структур данных (Tree довольно простой в CompSci), особенно на объектно-ориентированном языке; так что я уверен, что я просто не ищу права...

Изменить:

  • Я не использую Hashtable и не думаю, что это связано с деревом. Я просто использовал его как пример "другого класса структуры данных в BCL".
  • Для тех, кто интересуется фоном, например, прецедентом. Он для O (log (N)) ищет ассоциативный набор в памяти. Представьте себе создание индекса для этого ассоциативного набора...

Ответ 1

В .NET нет (общедоступной) реализации B-Tree.

Нет общего родового класса Tree, который предоставляет частичную реализацию структуры на основе дерева.

Вам нужно будет написать что-то подобное с нуля или использовать стороннюю реализацию, а не реализацию .NET.

Ответ 3

Я знаю, что я очень опаздываю на вечеринку, но у меня был большой успех с BPlusTree. Авторы сделали с ним фантастическую работу. http://csharptest.net/projects/bplustree/

Ответ 4

Возможно, вы захотите взглянуть на мои общие реализации С# обоих деревьев B & B+ в GitHub.

Продвинутая алгоритмы

Ответ 5

Существует реализация B-Tree для .NET на codeplex, который выглядит многообещающим. Производительность.

В коде используется API хранилища для хранения и управления парами данных ключ/значение. В реализации внутреннего хранилища используется усовершенствованная модернизированная реализация B-Tree, которая виртуализирует ОЗУ и дисковое хранилище.

Пара ключевых улучшений для этого B-дерева по сравнению с традиционными

:

  • node Оптимизация загрузки поддерживает ее при полной средней загрузке 75% -98% внутренних и листовых узлов. Традиционные B-деревья достигают только половинная (50%) средняя нагрузка. Это означает более сжатый или более плотные данные Хранилища экономят ИТ-магазины от дорогостоящего оборудования для хранения.
  • Высота листовых узлов в конкретном случае допускается не идеально сбалансированным, чтобы способствовать скорости удаления при нулевой/минимальной стоимости в обмен. Кроме того, несоответствие высоты, связанное с удалением, имеет тенденцию отремонтированы во вставках из-за функции оптимизации нагрузки nodeобсуждалось выше.
  • и т.д.... намного больше улучшений, ожидающих документального подтверждения/цитирования, если позволяет время.