Я пытаюсь использовать алгоритм, который работает в O (w) time, где w - длина слова, которое я пытаюсь найти в список алфавитно упорядоченных слов. Пространство не вызывает беспокойства. Я нашел некоторую информацию об использовании Trie, чтобы найти слово в времени O (w), но я не уверен, включает ли это время время, необходимое для создания самой Trie? Скажем, у меня есть массив отсортированных по алфавиту слов, S, и я хочу найти слово w, S имеет n слов, w имеет длину m. Вот то, что я до сих пор:Word Поиск с временной сложностью O (m) с использованием Trie-m - это размер слова
1. build Trie, T, from S // O(?) time
2. search for w in T // O(m) time
Я хотел бы найти способ, чтобы держать шаг 2 в постоянная время, поэтому моя общая временная сложность будет O (м). Есть ли способ сделать это? Если это так, мне нужно только некоторое руководство по настройке. Если нет, есть ли другая структура данных, о которой я прокладываю? Потребление пространства не является проблемой. Я могу использовать столько места, сколько необходимо для того, чтобы алгоритм работал в O (w), чего я не могу сделать, если только я не смогу настроить Trie в постоянное время.
Я нашел this сообщение, в котором указано время создания Trie is O (n * l), где l - длина слов в строке S. Это может мне сказать, мне нужно использовать другую структуру данных для моего решения, но я не могу определить, какой другой тип структуры данных будет соответствовать моей проблеме.
Спасибо Оливер! Ваше объяснение делает это очень ясным. – lchristina26