Изменения

Перейти к: навигация, поиск

Декомпозиция Линдона

287 байт добавлено, 23:51, 8 июня 2014
Поиск лексикографически минимального суффикса строки
* по данным подстрокам <tex>x</tex> и <tex>y</tex> строки <tex>T</tex> найти <tex>lcp(x,y)</tex> и определить, какая из подстрок лексикографически меньше
* по индексам <tex>i</tex> и <tex>j</tex> вычислить максимальный и минимальный суффикс в <tex>Suf[i,j]</tex>
 
Более того, такой <tex>улучшенный суффиксный массив</tex> может отвечать на запрос
Возьмём строку <tex>T</tex> длины <tex>n</tex>. Для каждой позиции <tex>j</tex> мы выберем O(logN) подстрок <tex>T[k\ldots j]</tex>, которые мы назовём каноническими. Определим как <tex>S^{l}_{j}</tex> <tex>l</tex>-ю кратчайшую каноническую подстроку, заканчивающуюся в позиции <tex>j</tex>. Для пары целых чисел <tex>1\le i<j\le n</tex> мы определим как <tex>\alpha(i,j)</tex> наибольшее <tex>l</tex>, такое, что <tex>S^{l}_{j}</tex> - суффикс <tex>T[i \ldots j]</tex>.
{{Лемма
|id=lemma
|statement= Минимальный суффикс <tex>T[i\ldots j]</tex> равен либо <tex>T[p\ldots j]</tex>, где <tex>p</tex>-начальная позиция минимального суффикса в <tex>Suf[i,j]</tex>, либо минимальному суффиксу <tex>|S^{\alpha(i,j)}_{j}|</tex> . Более того, <tex>p</tex> может быть найдено за константное время с использованием
|proof=
}}
Анонимный участник

Навигация