497
правок
Изменения
→Описание алгоритма
Основная идея алгоритма, заключается в том что мы уменьшаем размер исходной строки. Для этого мы разбиваем символы сходной строки на пару и пронумеровываем их, а из полученных номеров составляем новую строку, которая уже в <tex>2</tex> раза короче.
=== Шаг 1: суффиксное дерево для сжатой строки===
* Строка <tex>s</tex> разбивается на пары подряд идущих символов: <tex> <12> <11> <12> <21> <22> <21> </tex>
*: (если символов нечетное число - последняя пара дополняется специальным символом <tex>\$</tex>)
* Пары сортирутся сортируются поразрядной сортировкой: <tex><11> <12> <12> <21> <21> <22> </tex>.
* Удаляются копии: <tex><11> <12> <21> <22> </tex>.
* Парам даются номера (условно, в массиве они и так есть): <tex>11-(0), 12-(1), 21-(2), 22-(3)</tex>