Сжатые префиксные деревья
8 мин
Туториал
Тема префиксных деревьев поиска уже неколько раз поднималась на хабре. Здесь, например, кратко описывается, что такое префиксное дерево и зачем оно нужно, и рассматриваются основные операции над такими деревьями (поиск, вставка, удаление). К сожалению, ничего при этом не говорится про реализацию. В этом недавнем посте рассматривается «питонья библиотека datrie», являющаяся Cython-оберткой библиотеки libdatrie. По последней ссылке имеется хорошее описание реализации частично сжатых префиксных деревьев в виде детерминированных конечных автоматов (с использованием массивов). Я решил внести свои пять копеек в эту тему, рассмотрев реализацию на языке С++ префиксных деревьев с помощью указателей. Кроме того, была и еще одна цель — сравнить между собой поиск строк с помощью сбалансированного двоичного дерева поиска (АВЛ-дерево) и сжатого префиксного дерева.
Если в
Так получилось, что за последние полгода мне удалось познакомиться с несколькими простыми (в смысле правил) и в чем-то схожими настольными играми. Первым в этом ряду был «Сет», потом «Барабашка», а уже летом мы играли в «Доббль». Сразу скажу, что все перечисленные игры весьма увлекательные, однако, речь в этом посте пойдет, конечно же, не об этом. Дело в том, что спустя некоторое время (другими словами, наигравшись) меня заинтересовали идеи, лежащие в основе этих игр, и которые оказались тесно связанными именно с комбинаторикой. В данном посте речь пойдет о самой простой (на мой взгляд) игре — «Барабашке», которая, кстати, в оригинальном варианте имеет более благозвучное название «Geistesblitz» (нем. — озарение). 


Листая страницы хаба «Алгоритмы», наткнулся на
Целью этого нововведения было исследование вычислительных возможностей клеткоподобных структур (имеются в виду биологические клетки), а вообще вся эта деятельность была инспирирована знаменитым