Jump to content

Анатри

Анатри

Анатри [1] — это структура данных , предназначенная для решения анаграмм . Решение анаграммы – это задача найти слово из заданного списка букв. Эти проблемы обычно встречаются в словесных играх, таких как «Эрудит» , или в газетных кроссвордах . Задача для колеса слов также состоит в том, что центральная буква появляется во всех словах, обрамленных данным набором. Могут быть введены некоторые другие условия относительно частоты (количества появлений) каждой буквы в данной входной строке. эти проблемы классифицируются как проблема удовлетворения ограничений В литературе по информатике .

Анадерево представляется как ориентированное дерево , содержащее набор слов (W), закодированных в виде строк в некотором алфавите . Внутренние вершины помечены какой-либо буквой алфавита, а листья содержат слова. Ребра помечены неотрицательными целыми числами. Анадерево обладает тем свойством, что сумма меток ребер от корня до листа равна длине слова, хранящегося на листе. Если внутренние вершины помечены как , ... , а метки ребер , ... , то путь от корня к листу по этим вершинам и ребрам представляет собой список слов, содержащих с, с и так далее. Anatrees предназначены для структур данных только для чтения со всеми словами, доступными во время создания.

Смешанное анатри

Смешанное анадерево это анадерево, внутренние вершины которого также хранят слова. В смешанном анадереве могут быть слова разной длины, тогда как в обычном анадереве все слова имеют одинаковую длину.

Структуры данных

[ редактировать ]

Для решения анаграмм за постоянное время был предложен ряд структур данных. Двумя наиболее часто используемыми структурами данных являются алфавитная карта и карта частот.

Алфавитная карта содержит хеш-таблицу всех возможных слов, которые могут быть в языке (это называется словарем ) . Для данной входной строки отсортируйте буквы в алфавитном порядке. Эта отсортированная строка отображается на слово в хеш-таблице. Следовательно, для поиска анаграммы необходимо сортировать буквы и искать слово в хеш-таблице. Сортировка может выполняться за линейное время с помощью сортировки подсчетом , а поиск в хэш-таблице может выполняться за постоянное время. Например, для слова ANATREE алфавитная карта создаст отображение .

Карта частот также хранит список всех возможных слов в словаре в хеш-таблице. Для данной входной строки карта частот сохраняет частоты (количество появлений) всех букв и использует это количество для поиска в хеш-таблице. Время выполнения в худшем случае оказывается линейным по размеру словаря. Например, для слова ANATREE алфавитная карта создаст отображение . Слова, которых нет в строке, не записываются на карте.

Строительство

[ редактировать ]

Построение анадерева начинается с выбора метки для корня и разделения слов на основе метки, выбранной для корня. Этот процесс рекурсивно повторяется для всех меток дерева. Конструкция анадерева неканонична для данного набора слов, в зависимости от метки, выбранной для корня, анадерево будет соответственно различаться. На производительность анатри во многом влияет выбор этикеток.

Ниже приведены некоторые эвристики для выбора меток:

  • Начинайте обозначать вершины в алфавитном порядке от корня. Такой подход снижает накладные расходы на строительство.
  • Начните маркировать вершины на основе относительной частоты. Для присвоения меток вершинам используется вероятностный подход. Если это совокупность слов, содержащих , то мы помечаем вершину если это максимизирует ожидаемое расстояние до листа. В этом подходе наиболее часто встречающиеся символы (например, E) отмечены в корне, а наименее часто встречающиеся символы — в конце. Следующее уравнение максимизируется . Этот подход предотвращает длинные последовательности ребер, помеченных нулями, поскольку они не добавляют буквы в слова, генерируемые анадеревом.

Нахождение анаграмм

[ редактировать ]

Чтобы найти слово в анадереве, начните с корня, в зависимости от частоты метки в данной входной строке, следуйте по ребру, имеющему эту частоту, до листа. На листе есть нужное слово. Например, рассмотрите анатри на рисунке, чтобы найти слово , данная строка может быть . Начните с корня и следуйте по краю, который имеет как этикетка. Мы следуем этой метке, поскольку данная входная строка имеет . Пройдите по этому краю, пока не встретите лист. Это дает необходимое слово.

Требования к пространству и времени

[ редактировать ]

Лексикон, который хранит слова (каждое слово может быть символы длиной) в алфавите имеет следующие требования к пространству.

Структура данных Требования к пространству
Алфавитная карта
Карта частот
Анатри

Наихудшее время выполнения anatree составляет

  1. ^ Римс, Чарльз (март 2012 г.). «Анатри: быстрая структура данных для анаграмм». Журнал экспериментальной алгоритмики . 17 (1): 2012. doi : 10.1145/2133803.2133804 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 25d41e1e3d43da4dfaa79bf9bf234cd6__1687928880
URL1:https://arc.ask3.ru/arc/aa/25/d6/25d41e1e3d43da4dfaa79bf9bf234cd6.html
Заголовок, (Title) документа по адресу, URL1:
Anatree - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)