Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коды и шифры.DOC
Скачиваний:
62
Добавлен:
18.08.2019
Размер:
2.07 Mб
Скачать

М11. Двоичные линейные рекурренты

Как и можно было бы предположить после анализа чисел Фибоначчи и аналогичных им последовательностей, нам необходимо исследовать свойства многочлена степени k, сопоставленного линейной рекурренте степени k. Общий вид подобной рекурренты таков:

Un = a1U(n-1) + a2U(n-2) + ...+ akU(n-k),

а ассоциированный с ней многочлен выглядит так:

Xk + a1Xk-1 + ... +ak = 0.

Напомним, что все вычисления выполняются по модулю 2, так что -as - это то же самое, что +as. Поскольку рекуррента является двоичной и имеет степень k, то все ее коэффициенты (или множители) равны либо 0, либо 1, и, более того, последний коэффициент, ak, можно положить равным 1. Поэтому существует 2(k-1) различных наборов коэффициентов.

Математическое исследование периодов двоичных последовательностей, порождаемых линейными рекуррентами, слишком сложно, чтобы приводить его здесь. Однако можно сформулировать необходимый нам основной результат следующим образом.

Теорема

Пусть (n) обозначает количество натуральных чисел, меньших n и не имеющих с n общих делителей. Тогда число двоичных линейных рекуррент степени k, порождающих последовательности знаков гаммы максимального периода 2k-1, равно

.

Функция (n) называется -функцией Эйлера (произносится "фи"). Ее очень просто вычислить. Пусть p1, p2, ..., pr - все различные простые числа, такие что n делится без остатка на некоторую степень каждого из них. Тогда

.

Так, например, для k=12 получаем

212-1=4095=335713,

и поэтому

(4095)= =1728.

Таким образом, число двоичных линейных рекуррент степени 12, порождающих двоичные последовательности максимального периода 4095, равно

=144,

что и утверждается в главе 8. Заметим, что хотя 4095 делится на 32, соответствующая дробь, входящая в функцию Эйлера, равна двум третям, а не восьми девятым.

Аналогично, для k=23 число двоичных линейных рекуррент степени23, порождающих двоичные последовательности максимального периода (223-1), равно

,

то есть

,

причем и 47, и 178481 - простые числа. То, что число 178481 является простым, следует из того, что оно не делится ни на одно простое число, меньшее своего квадратного корня, т.е. ни на одно простое число, меньшее 422. Итак, получаем, что число таких последовательностей равно

=356960,

о чем также сказано в главе 8.

(Доказательство приведенной теоремы можно найти в [8.2]).

M12. Восстановление двоичной линейной рекурренты по отрезку гаммы

Пример

По шифрованному тексту сообщения восстановлены следующие 15 двоичных знаков гаммы:

101010011000100,

записанные слева направо в порядке их выработки. Проверить, что они могут быть порождены линейной рекуррентой степени5.

Решение

Линейная рекуррента степени 5 имеет вид:

Un = aU(n-1) + bU(n-2) + cU(n-3) + dU(n-4) + eU(n-5),

где a, b, c, d и e - это неизвестные константы, равные либо 0, либо 1, поскольку все вычисления происходят по модулю 2.

Пронумеруем биты слева направо от 1 до 15 и подставим в рекуррентную формулу значения битов для n=6, 7, 8, 9 и 10. Таким образом, получаем пять линейных уравнений относительно неизвестных a, b, c, d и e:

a1 + b0 + c1 + d0 + e1 = 0 (A.1)

a0 + b1 + c0 + d1 + e0 = 0 (A.2)

a0 + b0 + c1 + d0 + e1 = 1 (A.3)

a1 + b0 + c0 + d1 + e0 = 1 (A.4)

a1 + b1 + c0 + d0 + e1 = 0 (A.5)

Из уравнений (A.1) и (A.3) находим, что a=1, и тогда из уравнения (A.4) следует, что d=0. Теперь из уравнения (A.2) получаем, что b=0, а из уравнения (A.1) находим c=0. Таким образом, получено решение данной системы из пяти уравнений:

Un = U(n-1) + U(n-5).

Теперь необходимо проверить, что это решение дает правильные значения битов для n=11, 12, 13, 14 и 15. Легко видеть, что это действительно так. Итак, мы убедились в том, что только что найденная нами рекуррента степени 5 действительно порождает данный отрезок гаммы.

Как уже было сказано в главе 8, могут возникнуть ситуации, когда для данной степени k решение отсутствует, или когда решений будет несколько. В первом случае система уравнений оказывается несовместной, а во втором случае неоднозначности обычно устраняются при наличии дополнительных знаков гаммы. Эти ситуации проиллюстрированы следующими примерами.

Пример (более одного решения)

Проверить, что следующие 10 двоичных знаков гаммы

0110110110

могут быть порождены двумя двоичными линейными рекуррентами степени5.

Проверка

Допустим, рекуррента выглядит следующим образом:

Un = aU(n-1) + bU(n-2) + cU(n-3) + dU(n-4) + eU(n-5).

Пронумеруем биты слева направо от 1 до 10 и подставим в рекуррентную формулу значения последовательных разрядов для n=6, 7, 8, 9 и 10. Отсюда получаем систему уравнений:

aббббб+бcб+бdббббб=б1,

aб+бbббббб+бdб+бeб=б0,

ббббbб+бcббббб+бeб=б1,

aббббб+бcб+бdббббб=б1,

aб+бbббббб+бdб+бeб=б0,

которая имеет два истинных набора решений степени5 (т.е. таких, в которых e, коэффициент при U(n-5), не равен нулю):

a=b=c=0, d=e=1

и

a=d=0, b=c=e=1.

Таким образом, мы получили две линейные рекурренты степени5:

Un = U(n-4) + U(n-5)

и

Un = U(n-2) + U(n-3) + U(n-5).

Кроме того, существуют еще и решения, в которых e=0 (т.е. решения, степень которых отлична от 5), в том числе:

a=b=1, c=d=e=0,

которое соответствует рекурренте, имеющей степень 2:

Un = U(n-1) + U(n-2).

Это показывает, что приведенная выше двоичная последовательность есть не что иное, как последовательность чисел Фибоначчи, приведенных по модулю 2.

Пример (отсутствие решения при заданной степени)

Проверить, что последовательности шести двоичных разрядов гаммы

011010

не может быть порождена никакой линейной рекуррентой степени 3.

Проверка

Если такая рекуррента существует, то она имеет вид:

Un = aU(n-1) + bU(n-2) + c U(n-3).

По имеющимся данным составим систему уравнений

aб+бbббббб=б0,

áááábá+ácá=á1,

aббббб+бcб=б0.

Складывая первое уравнение со вторым по модулю 2, получим

aá+ácá=á1,

что противоречит первому уравнению. Поэтому система уравнений несовместна, и ни одного решения степени3 не существует.