Декомпозиция Линдона — различия между версиями
(→Основные определения) |
(→Существование и единственность) |
||
Строка 18: | Строка 18: | ||
|proof= | |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> | 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| | + | 2. <tex>|s| \leqslant |t|</tex> |
Пусть <tex>u</tex> {{---}} суффикс строки <tex>s + t</tex> | Пусть <tex>u</tex> {{---}} суффикс строки <tex>s + t</tex> | ||
Строка 35: | Строка 35: | ||
Разобьем строку на символы. Будем их склеивать, если подряд идущие символы: <tex>s[i] < s[i+1]</tex>. Так как символ {{---}} простая строка, по лемме <tex>s[i..i+1]</tex> {{---}} тоже простая и <tex>s[i..i+1] < s[i]</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 | + | Далее склеиваем строки, не удовлетворяющие условию <tex>s_1 \geqslant s_2 \geqslant ... \geqslant s_k</tex>. |
Это конечный процесс, так как длина строки конечна <tex>\rightarrow</tex> получим нужное разбиение. | Это конечный процесс, так как длина строки конечна <tex>\rightarrow</tex> получим нужное разбиение. | ||
Пусть существует хотя бы одно разбиение строки на простые слова. | Пусть существует хотя бы одно разбиение строки на простые слова. | ||
− | Возьмем разбиение строки на простые слова (без условия <tex>s_1 | + | Возьмем разбиение строки на простые слова (без условия <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>. | Пусть в нем есть <tex>s_i < s_{i+1}</tex>, тогда эти строки можно сконкатернировать <tex>\rightarrow</tex> получим разбиение с меньшим числом слов {{---}} противоречие с выбором <tex>k</tex>. | ||
Строка 54: | Строка 54: | ||
1) Пусть <tex>|s_i| > |s_i'|</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 | + | Тогда <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>s_i < t</tex> (так как <tex>s_i</tex> простая и по определению меньше своего суффикса), | ||
<tex>t < s_{j+1}'</tex> (так как <tex>t</tex> {{---}} префикс), | <tex>t < s_{j+1}'</tex> (так как <tex>t</tex> {{---}} префикс), |
Версия 22:12, 30 апреля 2014
Основные определения
Определение: |
Простая строка — строка, которая строго лексикографически меньше любого своего суффикса. |
Определение: |
Декомпозиция Линдона строки | — её разложение , где строки просты, и при этом .
Существование и единственность
Лемма: |
1. 2. — простая |
Доказательство: |
1. Так как , и , 2. Пусть — суффикс строки1) 2) 3) — суффикс . Так как — простая, , . Так как — простая, и |
Теорема: |
Можно построить декомпозицию Линдона любой строки , причем единственным образом. |
Доказательство: |
1. Существование. Разобьем строку на символы. Будем их склеивать, если подряд идущие символы: . Так как символ — простая строка, по лемме — тоже простая и . Далее склеиваем строки, не удовлетворяющие условию . Это конечный процесс, так как длина строки конечна получим нужное разбиение.Пусть существует хотя бы одно разбиение строки на простые слова. Возьмем разбиение строки на простые слова (без условия ) такое, чтобы было минимально. Пусть в нем есть , тогда эти строки можно сконкатернировать получим разбиение с меньшим числом слов — противоречие с выбором .Получили: — минимально нет2. Единственность. Пусть существует несколько разбиений , удовлетворяющих условию теоремы. Сравним длины первых двух слов и , если , сравним вторые и так далее. Если у всех слов длины одинаковы, то разбиения совпадают — противоречие. Иначе Покажем, что такого не может быть:1) Пусть Тогда , где — префикс , Получаем: (так как простая и по определению меньше своего суффикса), (так как — префикс), (по условию разбиения), (их начало совпадает, и по предположению. Получили противоречие: .2) Пусть То есть не может быть строк — проверяется аналогично. несовпадающей длины разбиения равны. |