Я изучаю попытки и проверяю их преимущества и недостатки. Они весьма полезны во многих практических приложениях, таких как словарь, проверки орфографии и т. Д. Из-за их постоянного поиска O (m) (где m - длина строки) и других преимуществ, таких как предоставление упорядоченного извлечения строк и получение общих префиксов. Таким образом, преимущества довольно ясны для меня, но ограничения немного запутанны.Недостатки попыток
Я по этой ссылке: https://en.wikipedia.org/wiki/Trie
Недостатки, перечисленные здесь:
- Пытается может быть медленнее, в некоторых случаях, чем хэш-таблицы для поиска данных, особенно если данные доступны непосредственно на жесткий диск или какое-либо другое вторичное запоминающее устройство, где время произвольного доступа является высоким по сравнению с основной памятью.
Следующий вопрос - Почему существует сценарий, связанный с вторичным хранением? Не предполагается, что попытки не будут храниться в основной памяти. Если они хранятся во вторичном хранилище, то использование trie в любом случае бесполезно, поскольку доступ к диску всегда будет приводить к увеличению времени.
- Для некоторых попыток может потребоваться больше места, чем хеш-таблица, так как память может быть выделена для каждого символа в строке поиска, а не для одного фрагмента памяти для всей записи, так как в большинстве хэш-таблиц.
последующий вопрос: Является ли это из-за того, что пытается будет содержать больше ссылок/указателей для подключения каждого символа к следующему, и что бы потреблять больше байт, чем если бы она хранилась в целом строка? (Я получил эту причину из одного из ответов здесь). Может ли кто-нибудь это уточнить?
Я бы очень признателен за помощь здесь. Благодарю.
Привет, Джим, спасибо за ваш ответ. Да, неправильно говорить постоянный поиск O (m). Кроме того, не хэш принимает O (m) время для вычисления хэша, поэтому общее время для поиска хэшей должно быть O (m)? (Иначе хэш для «гаура» и «гаурава» будет таким же). Можете ли вы пояснить немного больше в этой части? –