Подбор слова по буквам¶
Подбор слова по буквам — процесс восстановления или нахождения слова, заданного неполным набором буквенных признаков: известными позициями букв, перечнем букв без указания порядка, длиной слова и дополнительными ограничениями. Задача встречается в лингвистике, кроссвордистике, криптографии, теории алгоритмов и повседневной игре в слова; решается как вручную эвристическими методами, так и с помощью компьютерных словарей и поисковых алгоритмов.
¶Основные формулировки задачи
В зависимости от того, какие данные известны, задача принимает разные формы:
- Поиск по шаблону — известны позиции некоторых букв (например,
_ _ К _ Тдлиной 5), требуется найти все подходящие слова словаря. - Анаграмма — задан набор букв в произвольном порядке (например, «АБВГД»), нужно составить слово, используя все или часть букв.
- Перестановка с ограничениями — буквы заданы, но часть позиций известна («_ _ Е _», буквы {А, Е, Л, Н, Т}).
- Кроссвордная формулировка — даны определение и частично заполненная сетка; подбор слова по буквам выступает как вспомогательный шаг при решении.
¶Методы решения вручную
¶Эвристики кроссвордистов
При решении кроссвордов подбор по буквам опирается на типичные сочетания русского языка. Часто используемые приёмы:
- подстановка наиболее вероятных букв в свободные позиции по длине слова и пересечениям;
- поиск слов с характерными суффиксами и префиксами (например, для слова длиной 6 с окончанием «-ИЕ»);
- опора на частотность букв (в русском языке наиболее часты буквы О, А, Е, И, Н);
- перебор по словарю с фильтрацией по маске.
¶Частотный и морфологический анализ
Полезно учитывать морфологию: русские слова имеют богатую систему окончаний, поэтому известное окончание резко сужает область поиска. Также учитываются частотные корни и словообразовательные модели.
¶Компьютерные методы
¶Поиск по маске
Простейший алгоритм — линейный перебор словаря с проверкой соответствия маске. Для словаря из N слов и маски длины L сложность составляет O(N·L). На практике словари русского языка содержают от 100 тысяч до 1 миллиона словоформ, поэтому перебор выполняется за доли секунды.
¶Алгоритмы на префиксных деревьях
Более эффективный подход — хранение словаря в виде дерева (tries) или автоматов. Поиск по маске с известными позициями выполняется обходом дерева, что позволяет отсекать неподходящие ветви заранее. Для задачи анаграмм применяются сортированные представления слов (например, «подпись» слова — отсортированный набор букв), что позволяет свести поиск к поиску по ключу.
¶Индексы и сжатие
В информационно-поисковых системах для подобных запросов используются инвертированные индексы, n-граммные модели и сжатые словари (Dawg — Directed Acyclic Word Graph), которые объединяют слова с общими суффиксами.
¶Применение
¶Лингвистика и образование
Задача подбора по буквам используется в методике преподавания русского языка, при составлении кроссвордов и сканвордов, в лингвистических играх и соревнованиях по решению кроссвордов.
¶Криптография и дешифровка
При дешифровке простых шифров подстановки подбор слова по буквам выступает как часть процесса криптоанализа: известные буквы и длина слов сужают пространство гипотез.
¶Информационный поиск
Поисковые системы и словарные сервисы поддерживают поиск по маске (например, «кот» или «ак*»), что является прямым приложением данной задачи. Сервисы вроде словарей-помощников для кроссвордов строятся именно на этих алгоритмах.
¶Сложность и вычислительные вопросы
Задача поиска слова по маске в словаре решается за линейное время от размера словаря при наивном подходе и существенно быстрее при использовании индексов. Задача составления слова из произвольного набора букв (NP-полная при произвольных ограничениях) на практике решается жадно или перебором с отсечением. Для русского языка сложность увеличивается из-за богатства морфологических форм и омографии.
¶См. также
¶Источники
- Русский язык: энциклопедия / Гл. ред. Ю. Н. Караулов.
- Словарь русского языка в 4 томах, изд. Ожегова.
- Классические работы по алгоритмам сортировки и поиска (Кнут «Искусство программирования»).
- Материалы по информационному поиску (Моцард, Сингх «Информационный поиск»).
