Какой класс в библиотеках базового класса С# (.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.
Ответ 2
К сожалению .Net не предоставляет никакой библиотеки для дерева.
Но вы можете получить некоторую помощь онлайн для B-деревьев
1) https://github.com/rdcastro/btree-dotnet
2) http://social.msdn.microsoft.com/Forums/vstudio/en-US/c51b655d-f288-4fbf-9312-9ae4278ff8b7/b-tree-implementation?forum=csharpgeneral
Ответ 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обсуждалось выше.
- и т.д.... намного больше улучшений, ожидающих документального подтверждения/цитирования, если позволяет время.