Что быстрее: "основополагающее дерево" или "b-дерево" - PullRequest
2 голосов
/ 21 августа 2010

Для обработки языка, как в обычных словарных словах, что будет быстрее при чтении , радикальном дереве или обычном b-дереве? Есть ли более быстрый метод, например, словарь с ведрами и хэшированием?

1 Ответ

2 голосов
/ 30 сентября 2010

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

Однако я ожидаю, что в этом случае хорошо реализованная хеш-таблица, вероятно, окажется самой быстрой. Это в основном требует:

  • Один просмотр строки для вычисления значения хеша, обычно с использованием очень быстрых операций, таких как сдвиг битов / XOR
  • Поиск в одной хеш-таблице на основе значения хеша
  • Сравнение одной строки, чтобы подтвердить, что у вас есть правильное слово
  • Немного дополнительной обработки в случае коллизии хеша - однако вы можете настроить размер хеш-таблицы, чтобы минимизировать это

Основное дерево также будет очень быстрым, есть лишь небольшая дополнительная нагрузка из-за необходимости прохождения нескольких уровней узлов дерева. Если ваше дерево относительно редкое, вероятно, что при поиске нужно будет всего лишь пройти небольшое количество уровней, чтобы найти уникальный ответ. Одним из преимуществ основополагающего дерева является то, что оно очень рано сообщит вам, если у вас нет возможных совпадений (например, пустая ветвь для дерева, начинающаяся с «qq»)

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

...