Период и бордер, их связь — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Свойства периода)
(Свойства периода)
Строка 12: Строка 12:
 
==Свойства периода==
 
==Свойства периода==
 
{{Теорема
 
{{Теорема
|statement= Если у строки есть [[Основные определения, связанные со строками|период]] длины <tex>k</tex>, то у нее есть период длины <tex>|k \cdot x|</tex>, где <tex> x \in N</tex>.
+
|statement= Если у строки есть [[Основные определения, связанные со строками|период]] длины <tex>|k|</tex>, то у нее есть период длины <tex>|k \cdot x|</tex>, где <tex> x \in N</tex>.
 
|proof=
 
|proof=
 
Пусть длина строки равна <tex>n</tex>.<br/>
 
Пусть длина строки равна <tex>n</tex>.<br/>
Строка 19: Строка 19:
 
Пусть верно для <tex>x = m</tex>. Докажем, что верно для <tex>x = m + 1</tex>.<br/>
 
Пусть верно для <tex>x = m</tex>. Докажем, что верно для <tex>x = m + 1</tex>.<br/>
 
Из определения периода имеем, что<br/>
 
Из определения периода имеем, что<br/>
<tex>\forall i = 1 \ldots n - k</tex>, <tex>\alpha [i] = \alpha[i + k]</tex>, а из предположения индукции, что<br/>
+
для <tex>\forall i = 1 \ldots n - k</tex>, <tex>\alpha [i] = \alpha[i + k]</tex>, а из предположения индукции, что<br/>
<tex>\forall i = 1 \ldots n - k</tex>, <tex>\alpha [i] = \alpha[i + m \cdot k]</tex><br/>
+
для <tex>\forall i = 1 \ldots n - k</tex>, <tex>\alpha [i] = \alpha[i + m \cdot k]</tex><br/>
 
Значит получаем, что<br/>
 
Значит получаем, что<br/>
 
<tex>\forall i = 1 \ldots n - k</tex> <tex>\alpha [i] = \alpha [i + m \cdot k] = \alpha[i + m \cdot k + k]</tex>, следовательно<br/>
 
<tex>\forall i = 1 \ldots n - k</tex> <tex>\alpha [i] = \alpha [i + m \cdot k] = \alpha[i + m \cdot k + k]</tex>, следовательно<br/>
<tex>\forall i = 1 \ldots n - k</tex>, <tex>\alpha [i] = \alpha[i + (m + 1) \cdot k]</tex>.<br/>
+
для <tex>\forall i = 1 \ldots n - k</tex>, <tex>\alpha [i] = \alpha[i + (m + 1) \cdot k]</tex>.<br/>
 
Значит у строки есть период длины <tex> |(m + 1) \cdot k|</tex>.<br/>
 
Значит у строки есть период длины <tex> |(m + 1) \cdot k|</tex>.<br/>
 
Утверждение доказано.
 
Утверждение доказано.
Строка 29: Строка 29:
  
 
{{Теорема
 
{{Теорема
|statement= Если у строки есть периоды длины <tex>p</tex> и <tex>q</tex>, то НОД<tex>(p, q)</tex> также является периодом этой строки.
+
|statement= Если у строки есть периоды длины <tex>|p|</tex> и <tex>|q|</tex>, то НОД<tex>(p, q)</tex> также является периодом этой строки.
 
|proof=
 
|proof=
 
Пусть <tex> p > q </tex>, тогда<br/>  
 
Пусть <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</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>\forall i = q \ldots n - p</tex>, <tex>\alpha [i + q] = \alpha[i + p]</tex><br/>
Теперь, следуя алгоритму Евклида, если <tex> q >= p - q </tex>, получим <tex>\alpha [i] = \alpha[i + (q - (p - q))]</tex>,<br/>
+
Сделаем замену <tex>j = i + q</tex> и получим, что
иначе <tex>\alpha [i] = \alpha[i + (p - q) - q]</tex>.<br/>
+
для <tex>\forall j = 1 \ldots n - (p - q)</tex>, <tex>\alpha [j] = \alpha[j + (p - q)]</tex><br/>
Будем выполнять такие действия, пока не получим НОД<tex>(p, q)</tex>. Это будет выполнятся для <tex>\forall i </tex>. Следовательно будет период длины НОД<tex>(p, q)</tex>.
+
Получили новый период длины <tex>|p - q|</tex>. Пусть теперь <tex>p = max(p - q, q)</tex>, а <tex>q = min(p - q, q)</tex>.<br/>
 +
Будем повторять алгоритм сначала, пока <tex>p <> q</tex>.
 +
Видно, что представленный алгоритм - это алгоритм Евклида. Значит при его завершении получим, что последний найденный период равен НОД<tex>(p, q)</tex>.
 
}}
 
}}
  
 
[[Категория:Алгоритмы и структуры данных]]
 
[[Категория:Алгоритмы и структуры данных]]
 
[[Категория:Основные определения. Простые комбинаторные свойства слов]]
 
[[Категория:Основные определения. Простые комбинаторные свойства слов]]

Версия 11:18, 8 апреля 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 \cdot x|[/math], где [math] x \in N[/math].
Доказательство:
[math]\triangleright[/math]

Пусть длина строки равна [math]n[/math].
Доказательство будем вести по индукции по числу [math]x[/math].
Для [math] x = 1 [/math] утверждение очевидно.
Пусть верно для [math]x = m[/math]. Докажем, что верно для [math]x = m + 1[/math].
Из определения периода имеем, что
для [math]\forall i = 1 \ldots n - k[/math], [math]\alpha [i] = \alpha[i + k][/math], а из предположения индукции, что
для [math]\forall i = 1 \ldots n - k[/math], [math]\alpha [i] = \alpha[i + m \cdot k][/math]
Значит получаем, что
[math]\forall i = 1 \ldots n - k[/math] [math]\alpha [i] = \alpha [i + m \cdot k] = \alpha[i + m \cdot k + k][/math], следовательно
для [math]\forall i = 1 \ldots n - k[/math], [math]\alpha [i] = \alpha[i + (m + 1) \cdot k][/math].
Значит у строки есть период длины [math] |(m + 1) \cdot k|[/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 - p[/math], [math]\alpha [i] = \alpha[i + p] = \alpha[i + q][/math].
Значит для [math]\forall i = q \ldots n - p[/math], [math]\alpha [i + q] = \alpha[i + p][/math]
Сделаем замену [math]j = i + q[/math] и получим, что для [math]\forall j = 1 \ldots n - (p - q)[/math], [math]\alpha [j] = \alpha[j + (p - q)][/math]
Получили новый период длины [math]|p - q|[/math]. Пусть теперь [math]p = max(p - q, q)[/math], а [math]q = min(p - q, q)[/math].
Будем повторять алгоритм сначала, пока [math]p \lt \gt q[/math].

Видно, что представленный алгоритм - это алгоритм Евклида. Значит при его завершении получим, что последний найденный период равен НОД[math](p, q)[/math].
[math]\triangleleft[/math]