Изменения

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

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

56 байт добавлено, 22:12, 30 апреля 2014
Существование и единственность
|proof=
1. Так как <tex>s < t</tex>, <tex>\mathcal {9} i : s[i] < t[i]</tex> и <tex>s[j] = t[j]</tex>, <tex>j < i \rightarrow s + t < t</tex>
2. <tex>|s| <= \leqslant |t|</tex>
Пусть <tex>u</tex> {{---}} суффикс строки <tex>s + t</tex>
Разобьем строку на символы. Будем их склеивать, если подряд идущие символы: <tex>s[i] < s[i+1]</tex>. Так как символ {{---}} простая строка, по лемме <tex>s[i..i+1]</tex> {{---}} тоже простая и <tex>s[i..i+1] < s[i]</tex>.
Далее склеиваем строки, не удовлетворяющие условию <tex>s_1 >= \geqslant s_2 >= \geqslant ... >= \geqslant s_k</tex>.
Это конечный процесс, так как длина строки конечна <tex>\rightarrow</tex> получим нужное разбиение.
Пусть существует хотя бы одно разбиение строки на простые слова.
Возьмем разбиение строки на простые слова (без условия <tex>s_1 >= \geqslant s_2 >= \geqslant ... >= \geqslant s_k</tex>) такое, чтобы <tex>k</tex> было минимально.
Пусть в нем есть <tex>s_i < s_{i+1}</tex>, тогда эти строки можно сконкатернировать <tex>\rightarrow</tex> получим разбиение с меньшим числом слов {{---}} противоречие с выбором <tex>k</tex>.
1) Пусть <tex>|s_i| > |s_i'|</tex>
Тогда <tex>s_i = s_i' + s_{i+1}' + ... + t</tex>, где <tex>t</tex> {{---}} префикс <tex>s_{j+1}'</tex>, <tex>i <= \leqslant j</tex>
Получаем: <tex>s_i < t</tex> (так как <tex>s_i</tex> простая и по определению меньше своего суффикса),
<tex>t < s_{j+1}'</tex> (так как <tex>t</tex> {{---}} префикс),
Анонимный участник

Навигация