Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top