Декомпозиция Линдона — различия между версиями
(Новая страница: «{{Определение |id=def1. |definition='''Простая строка''' {{---}} строка, которая строго лексикографичес...») |
|||
| Строка 9: | Строка 9: | ||
}} | }} | ||
| − | Лемма | + | {{Лемма |
| − | 1. s+t < t | + | |id=lemma |
| − | 2. s + t | + | |statement=<tex>s </tex>, <tex>t</tex> – простые и <tex>s < t</tex> лексикографически. Тогда: |
| − | + | 1. <tex>s + t < t</tex> | |
| − | 1. Так как s < t существует i : s[i] < t[i] и s[j] = t[j], j < | + | 2. <tex>s + t</tex> - простая |
| − | 2. |s| <= |t| | + | |proof= |
| − | Пусть | + | 1. Так как <tex>s < t</tex>, существует <tex>i : s[i] < t[i]</tex> и <tex>s[j] = t[j]</tex>, <tex>j < i</tex> -> <tex>s + t < t</tex> |
| − | + | 2. <tex>|s| <= |t|</tex> | |
| − | + | Пусть <tex>u</tex> – суффикс строки <tex>s + t</tex> | |
| − | |||
| − | Теорема | + | 1) <tex>|u| = |t| -> u = t -> u > s + t</tex> |
| − | + | ||
| + | 2) <tex>|u| < |t| -> u</tex> {{---}} суффикс <tex>t</tex>. Так как <tex>t</tex> – простая, <tex>t < u -> s + t < t < u</tex> | ||
| + | |||
| + | 3) <tex>|u| > |t| -> s = s' + s''</tex>, <tex>u = s'' + t</tex>. Так как <tex>s</tex> {{---}} простая, <tex>s < s''</tex> и <tex>|s''| < |s| -> s + t < s'' + t</tex> | ||
| + | }} | ||
| + | |||
| + | {{Теорема | ||
| + | |id=theorem | ||
| + | |statement=Можно построить декомпозицию Линдона любой строки s, причем единственным образом. | ||
| + | |proof= | ||
1. Существование. | 1. Существование. | ||
Разобьем строку на символы. Будем их склеивать, если подряд идущие символы: s[i] < s[i+1]. Так как символ - простая строка, по лемме s[i..i+1] - тоже простая и s[i..i+1] < s[i]. | Разобьем строку на символы. Будем их склеивать, если подряд идущие символы: s[i] < s[i+1]. Так как символ - простая строка, по лемме s[i..i+1] - тоже простая и s[i..i+1] < s[i]. | ||
| Строка 34: | Строка 42: | ||
2. Единственность. | 2. Единственность. | ||
| − | + | Пусть существует несколько разбиений s=s_1 + s_2 + … + s_k = s_1' + s_2' + … + s_k', | |
| − | + | удовлетворяющих условию теоремы. | |
Сравним длины первых двух слов s_1 и s_1', если |s_1| = |s_1'|, сравним вторые, и так далее. | Сравним длины первых двух слов s_1 и s_1', если |s_1| = |s_1'|, сравним вторые, и так далее. | ||
Если у всех слов длины одинаковы, то разбиения совпадают!!! | Если у всех слов длины одинаковы, то разбиения совпадают!!! | ||
| Строка 49: | Строка 57: | ||
2) Пусть |s_i| < |s_i'| - проверяется аналогично. | 2) Пусть |s_i| < |s_i'| - проверяется аналогично. | ||
То есть не может быть строк s_i несовпадающей длины → разбиения равны. | То есть не может быть строк s_i несовпадающей длины → разбиения равны. | ||
| + | }} | ||
Версия 20:49, 30 апреля 2014
| Определение: |
| Простая строка — строка, которая строго лексикографически меньше любого своего суффикса. |
| Определение: |
| Декомпозиция Линдона строки — её разложение , где строки просты, и при этом . |
| Лемма: |
, – простые и лексикографически. Тогда:
1. 2. - простая |
| Доказательство: |
|
1. Так как , существует и , -> 2. Пусть – суффикс строки 1) 2) — суффикс . Так как – простая, 3) , . Так как — простая, и |
| Теорема: |
Можно построить декомпозицию Линдона любой строки s, причем единственным образом. |
| Доказательство: |
|
1. Существование. Разобьем строку на символы. Будем их склеивать, если подряд идущие символы: s[i] < s[i+1]. Так как символ - простая строка, по лемме s[i..i+1] - тоже простая и s[i..i+1] < s[i]. Далее склеиваем строки, не удовлетворяющие условию s_1>=s_2>=. .. >= s_k. Это конечный процесс, так как длина строки конечна → получим нужное разбиение. Пусть существует хотя бы одно разбиение строки на простые слова. Возьмем разбиение строки на простые слова (без условия s_1>=s_2>=. .. >= s_k) такое, чтобы k было минимально. Пусть в нем есть s_i < s_(i+1), тогда эти строки можно сконкатернировать → получим разбиение с меньшим числом слов!!! Получили: k – минимально ↔ нет s_i < s_(i+1) 2. Единственность. Пусть существует несколько разбиений s=s_1 + s_2 + … + s_k = s_1' + s_2' + … + s_k', удовлетворяющих условию теоремы. Сравним длины первых двух слов s_1 и s_1', если |