Материал из Викиконспекты
|
|
Строка 23: |
Строка 23: |
| Следовательно для <tex>\forall i = 1 \ldots n - x * k</tex>, <tex>\alpha [i] = \alpha[i + x *k]</tex>.<br/> | | Следовательно для <tex>\forall i = 1 \ldots n - x * k</tex>, <tex>\alpha [i] = \alpha[i + x *k]</tex>.<br/> |
| Значит у строки есть период длины <tex>(k * x)</tex>. | | Значит у строки есть период длины <tex>(k * x)</tex>. |
| + | }} |
| + | {{Теорема |
| + | |statement= Если у строки есть периоды длины <tex>p</tex> и <tex>q</tex>, то НОД<tex>(p, q)</tex> также является периодом этой строки. |
| + | |proof= |
| + | Пусть <tex> p > q </tex>, тогда<br/> |
| + | для <tex>\forall i = 1 \ldots n - q</tex>, <tex>\alpha [i] = \alpha[i + p] = \alpha[i + q]</tex>.<br/> |
| + | Значит для <tex>\forall i = 1 \ldots n - (p - q)</tex>, <tex>\alpha [i] = \alpha[i + (p - q)]</tex><br/> |
| + | Теперь следуя алгоритму Евклида, если <tex> q >= p - q </tex> получим <tex>\alpha [i] = \alpha[i + (q - (p - q))]</tex>,<br/> |
| + | иначе <tex>\alpha [i] = \alpha[i + (p - q) - q]</tex>.<br/> |
| + | Будем выполнять такие действия, пока не получим НОД<tex>(p, q)</tex>. Это будет выполнятся для <tex>\forall i </tex>. Следовательно будет период длины НОД<tex>(p, q)</tex>. |
| }} | | }} |
Версия 14:34, 30 марта 2012
Связь периода и бордера
Теорема: |
Если у строки длины [math]n[/math] есть бордер длины [math]k[/math], то у нее есть период длины [math](n - k)[/math]. |
Доказательство: |
[math]\triangleright[/math] |
Напишем формально определения бордера длины [math]k[/math] строки [math]\alpha[/math]:
[math]\forall i = 1 \ldots k[/math], [math]\alpha [i] = \alpha[i + (n - k)][/math].
Сделаем замену [math]x = n - k[/math]:
[math]\forall i = 1 \ldots n - x[/math], [math]\alpha [i] = \alpha[i + x][/math].
Получили определение периода длины [math]x[/math]. Но [math]x = n - k[/math], значит у строки [math]\alpha[/math] есть период длины [math](n - k)[/math]. |
[math]\triangleleft[/math] |
Свойства периода
Теорема: |
Если у строки есть период длины [math]k[/math], то у нее есть период длины [math](k * x)[/math], где [math] x \in N[/math]. |
Доказательство: |
[math]\triangleright[/math] |
Пусть Длина строки равна [math]n[/math]. Тогда из определения периода имеем, что
[math]\forall i = 1 \ldots n - k[/math], [math]\alpha [i] = \alpha[i + k][/math].
Это вернео для всех таких [math]i[/math], значит получаем
[math]\alpha [i] = \alpha[i + k][/math].
[math]\alpha [i + k] = \alpha[i + 2* k][/math].
[math]\alpha [i + 2 * k] = \alpha[i + 3 * k][/math].
[math] \ldots [/math]
[math]\alpha [i + (x - 1) * k] = \alpha[i + x * k][/math].
Следовательно для [math]\forall i = 1 \ldots n - x * k[/math], [math]\alpha [i] = \alpha[i + x *k][/math].
Значит у строки есть период длины [math](k * x)[/math]. |
[math]\triangleleft[/math] |
Теорема: |
Если у строки есть периоды длины [math]p[/math] и [math]q[/math], то НОД[math](p, q)[/math] также является периодом этой строки. |
Доказательство: |
[math]\triangleright[/math] |
Пусть [math] p \gt q [/math], тогда
для [math]\forall i = 1 \ldots n - q[/math], [math]\alpha [i] = \alpha[i + p] = \alpha[i + q][/math].
Значит для [math]\forall i = 1 \ldots n - (p - q)[/math], [math]\alpha [i] = \alpha[i + (p - q)][/math]
Теперь следуя алгоритму Евклида, если [math] q \gt = p - q [/math] получим [math]\alpha [i] = \alpha[i + (q - (p - q))][/math],
иначе [math]\alpha [i] = \alpha[i + (p - q) - q][/math].
Будем выполнять такие действия, пока не получим НОД[math](p, q)[/math]. Это будет выполнятся для [math]\forall i [/math]. Следовательно будет период длины НОД[math](p, q)[/math]. |
[math]\triangleleft[/math] |