Архипов писал(а):
1) Проблема теоретическая или практическая?
как отразится на алгоритме поиска если я отвечу теоретическая? или практическая?
Архипов писал(а):
2) Если искомое слово "караул" единственно (уникально) в словаре, то поиск продолжится до того места в словаре, где искомое слово находится (на этом цикл обрывается).
но в словаре 50000 и перед "караул" м.стоять 49999.
Архипов писал(а):
3) Если искомое слово "караул" не уникально (повторяется), то придется перебрать все 50000 слов, чтобы найти все слова "караул" в этом файле.
это значит, в цикле по словарю каждый раз заниматься поиском в всех данных. а если их 500тыс мб? плохая идея.
ну, если свежих мыслей нет, возьмусь пользовать TST-деревья.
есть правда мысль построить автомат.
оч.быстро для ищет ограниченный набор путей (посимвольно, в каждом столбце), но всё потОм сводится к поиску единственного существующего пути, если он есть.
Добавлено спустя 16 минут 35 секунд:Cave писал(а):
vv40inЭ-э, простите,
у вас - это что? За логарифм числа слов в словаре, как и за логарифм длины текста поиска задачу, разумеется, не решить, ибо в общем случае нужно хотя бы раз прочитать весь текст и пробежаться по всему словарю (например, если все его слова встречаются).
Поэтому предлагаю использовать именно алгоритм поиска подстроки в строке, который делает предобработку за время
и использует столько же памяти, а затем за
с
памяти решает задачу,
- длина текста,
- длина слова в словаре. Под эти критерии подходит, например, алгоритм Кнута-Морриса-Пратта.
Вы тоже предлагаете в цикл по словарю с просмотром внутри него всего массива данных? или я не так понял?
TST обеспечит
. или нет, лучше чем:
. (256 - длина алфавита). или лучше чем:
0x10000-если производить выборку и сранение словами.
я как раз ищу идеи получше. начальник сказал, что они есть. или мы не поняли др.друга (т.е. он меня не захотел услышать - я ведь не красноречив
).