Научная статья на тему 'Об алгоритмической сложности нахождения остатка от деления на степень двойки веса булевой функции, заданной полиномом'

Об алгоритмической сложности нахождения остатка от деления на степень двойки веса булевой функции, заданной полиномом Текст научной статьи по специальности «Математика»

CC BY
531
38
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по математике, автор научной работы — Селезнева С. Н.

Весом булевой функции называют число наборов, на которых она принимает значение 1. Доказано, что по полиному Жегалкина булевой функции можно найти остаток от деления ее веса на 2, к = 2, 3,..., со сложностью 0(1к), где I число слагаемых в полиноме. Библиогр. 5.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Об алгоритмической сложности нахождения остатка от деления на степень двойки веса булевой функции, заданной полиномом»

3. Kurzhanski А. В., Varaiya P., On ellipsoidal techniques for reachability analysis. Part II. Internal approximations, box-valued constraints // Optimization Methods and Software. 2001. 17. P. 207-237.

4. Glasauer S., Schneider R. Asymptotic approximation of smooth convex bodies by polytopes // Forum Math. 1996. 8. P. 363-377.

5. Boyd S., Vandenberhe L. Convex optimization. Cambridge University Press, 2004.

6. Chernousko F.L. State estimation for dynamic systems. CRC Press, 1994.

7. Хорн P., Джонсон Ч. Матричный анализ. M.: Мир, 1989.

8. Красовский Н.Н. Теория управления движением. М.: Наука, 1968.

Поступила в редакцию 02.06.06

УДК 519.7

С. Н. Селезнева

ОБ АЛГОРИТМИЧЕСКОЙ СЛОЖНОСТИ НАХОЖДЕНИЯ ОСТАТКА ОТ ДЕЛЕНИЯ НА СТЕПЕНЬ ДВОЙКИ ВЕСА БУЛЕВОЙ ФУНКЦИИ, ЗАДАННОЙ ПОЛИНОМОМ1

(кафедра математической кибернетики факультета ВМиК, e-mail: mathcyb@cs.msu.su)

Введение. Булевы функции являются одной из основных модельных систем, которые находят широкое применение как в теории, так и на практике. Систематическое исследование булевых функций было изложено в работе Э. Поста [1], ставшей классической. В настоящее время булевы функции нашли широкое применение в кодировании и криптографии [2].

Пусть Ei = {0,1}. Булевой функцией от п переменных называется отображение /" : Е" —> Е2, п = 0,1, 2,.... Множество всех булевых функций от переменных х\,... ,хп обозначим через Р" ■

Одним из удобных способов записи булевых функций являются полиномы Жегалкина. Произведение вида Xi1 •.. .-Xir, где Х{ ф Xiq при р ф q, назовем мономом ранга г. По определению будем считать 1 вырожденным мономом ранга 0. Сумма вида М\ © ... © М/, где М{ — попарно различные мономы, называется полиномом Жегалкина. При этом число I — длина полинома, степенью полинома называют максимальный из рангов его слагаемых. Будем считать 0 вырожденным полиномом с длиной и степенью, равными 0.

Полиномы Жегалкина являются полиномами над полем Е2 с операциями сложения ф и умножения • по mod 2 (полем вычетов по mod 2).

Теорема 1 [3, 4]. Каждая булева функция из Рможет быть единственным образом записана полиномом Жегалкина.

Введем некоторые обозначения. Буквой с тильдой наверху будем обозначать векторы из п соответствующих координат.

Так, х = (xi,..., хп), а= (аь ..., ап).

Через ха будем обозначать моном х"1 ■ ... ■ , где

ха=(х если а = 1, ^ £ [1, если а = 0,

Тогда каждая булева функция из Роднозначно может быть записана в виде f(x) = c(l)

7 е-Е™

где с (у) есть коэффициент при мономе ж7, с (у) G -Е^-

В соответствии с теоремой 1 для булевой функции f(x) определим ее степень deg(/) как степень задающего ее полинома.

1 Работа выполнена при поддержке Российского фонда фундаментальных исследований, грант 06-01-00438а.

13 ВМУ, вычислительная математика и кибернетика, № 1

Для векторов из Е" определим отношение частичного порядка: а ^ /3, если оц ^ /3j для всех i = 1,..., га, и а -< /3, если а ^ /3, а ф /3.

Коэффициенты полинома Жегалкина булевой функции можно найти по свойству, утверждаемому в следующей теореме.

Теорема 2 [2]. Для функции f(x) коэффициент с (а) при мономе ха в ее полиноме Жегалкина находится по правилу с (а) = ^ /(т)-

7£_Е™, 7<а

Многие важные криптографические свойства булевых функций определяются через ее вес. Для булевой функции / из Рее весом wt(f) называется число наборов из Е", на которых она равна 1.

Представляет интерес следующая задача: можно ли, зная полином Жегалкина булевой функции, "достаточно быстро" найти либо ее вес, либо некоторые свойства ее веса (под словосочетанием "достаточно быстро" будем понимать существование алгоритма, решающего задачу за полиномиальное от числа мономов в полиноме шагов).

В книге [2] авторами было отмечено, что по полиному Жегалкина булевой функции довольно легко можно определить, делится ли ее вес на 2.

Предложение 1 [2]. Пусть f(x) £ Р". Тогда wt(f) = 0 (mod 2), если и только если deg (/) < га.

Также была предложена следующая задача (как нерешенная): можно ли выделить множество мономов булевой функции, которое будет "отвечать" за делимость веса булевой функции на 2к, к — !2,3,....

В настоящей заметке предлагается некоторое решение похожей задачи, а именно: с какой алгоритмической сложностью можно найти остаток от деления на 2к, к = 2, 3,..., веса булевой функции, зная ее полином. Ниже будет доказано, что искомая сложность 0(1к), где I — длина полинома.

О реализации булевых функций различными полиномами. Для решения поставленной задачи мы расширим модель, а именно рассмотрим реализацию булевых функций полиномами над кольцом целых чисел. Такое расширение модели можно найти в [5].

Пусть Z — кольцо целых чисел с операциями сложения + и умножения • и Z[x] — кольцо полиномов над кольцом Z. Рассмотрим множество Zb[x], содержащее все полиномы из Z[x], в которых степень каждой переменной не выше 1.

Пусть f(x) £ Р"■ Будем говорить, что полином р(х) из Zb[x] задает функцию /(ж), если на множестве Е" значения полинома р(х) и функции f(x) совпадают.

В [5] доказано, что каждую функцию из Р" можно однозначно задать полиномом из Zb[x], Здесь мы приведем соответствующие утверждения с некоторыми изменениями в доказательствах.

ТеоремаЗ [5]. Для каждой булевой функции f(x) из Р" найдется задающий ее полином в Zb[x].

Доказательство. Каждую булеву функцию можно задать полиномом Жегалкина. Полином Жегалкина строится при помощи трех функций:

сложения по mod 2 — х © у,

умножения по mod 2 — х ■ у и

константы 1.

Заметим, что умножение х-у и константа 1, рассматриваемые как булевы функции и как целочисленные функции, совпадают при значениях аргументов из Е2. Функция х © у выражается полиномом из Zb[x] как х + у — 2х ■ у.

Тогда для того чтобы получить реализацию булевой функции полиномом из Zb[x], достаточно взять ее полином Жегалкина, заменить каждую операцию © по соответствующей формуле, затем перемножить скобки, проводя упрощения по правилу х ■ х = ж, и привести подобные слагаемые.

Теорема 3 доказана.

Для набора а из Е" его весом |й| назовем число его единичных координат.

Следующая теорема 4 обобщает теорему 2.

Теорема 4 [5]. Пусть функция f(x) из Р" задается полиномом р(х) из Zb[x] и пусть с(й), а £ Е", есть коэффициент в нем при мономе ха.

Тогда с(а)= £ (-1) •/(7).

7£_Е™, 7<а

Доказательство. Индукция по весу набора |й|.

Базис индукции. Пусть |й| = 0. Тогда с(0) = /(0) — верно.

Индуктивный переход. Пусть утверждение теоремы верно для всех таких наборов /3, что |/3| < < т — 1.

Рассмотрим такой набор а, что |й| = то. Так как полином р(х) задает функцию /(ж), имеем /(«) = Е с(т)- Отсюда с(а) = f(a) - Е с(т)-

Рассмотрим сумму Е с(т)- Для всех наборов /3, /3 -< й, верно предположение индукции.

Рассмотрим некоторый набор у, у ^ а. Он предшествует наборам /3, ¡3 ^ а. При подсчете с(/3)

по формуле, верной по предположению индукции, f(y) прибавляется, если |/3| — |7| — четно; /(7) вычитается, если |/3| — I7I — нечетно.

t

Если рассмотреть и случай у = а, то из тождества Е ( — 1)г • = 0 будет следовать, что сумма

¿=о

всех таких /(7) равна 0. Но набор а не участвует в рассмотрении. Поэтому из всей суммы остается одно значение /(7), причем

со знаком +, если |й| — I7I — нечетно; со знаком —, если |й| — I7I — четно.

Но в выражении f(a) — Е с (у) для с (а) знак при /(7) поменяется, т.е. будет

7> "К61 знак +, если |й| — I7I — четно; знак —, если |й| — I7I — нечетно. Теорема 3 доказана.

Из теорем 3 и 4 сразу следуют утверждения.

Следствие 1 [5]. Каждую булеву функцию из Р" можно однозначно задать полиномом из Zb[i].

Рассмотрим также кольцо Zk вычетов по mod к с операциями сложения + и умножения • по mod к, кольцо полиномов Zk[x] и множество Z%,[x] всех полиномов из Zk[x], каждая переменная в которых имеет степень не выше 1. Будем говорить, что полином р(х) из Z%,[x] задает функцию f(x) из Р", если на множестве Е" их значения совпадают.

Следствие 2. Каждую булеву функцию из Р" можно однозначно задать полиномом из Z^[x]. Следствие 3 [5].

п

£].©•••© Хп = ^У ^ ^У ^ ( — 1) • 2 • Xi1 • . . . • Х{г.

r= 1 1 ^¿1 < ••• <гг

Доказательство можно провести индукцией по числу переменных п. Следствие 4 [5]. Пусть f(x) = Mt © • • • © М/.

Тогда f(x) = ¿ Е (-l)5"1 • 2s"1 • Мп • ... • Мь .

S=1 l^ii <---<is ^I

В следствии 4 утверждается, что полином из Zb[x] для булевой функции /(ж) по ее полиному Жегалкина можно получить так: составить формальную сумму из всех мономов полинома Жегалкина, всех попарных произведений мономов полинома Жегалкина с коэффициентами —2, всех произведений мономов полинома Жегалкина по три с коэффициентами 22, и т.д. и, наконец, произведения всех мономов полинома Жегалкина с коэффициентом ( —I)'-1 • 2'-1; произвести упрощения в полученных мономах по правилу х ■ х = ж, а потом привести подобные слагаемые.

Об алгоритмической сложности нахождения по полиномам некоторых характеристик булевых функций. Заметим, что вес булевой функции — это сумма ее значений на всех наборах. В следующей теореме описывается, как найти сумму значений булевой функции на определенном множестве наборов через коэффициенты полинома из Zb[ж], ее задающего.

Теорема 6 [5]. Пусть функция /(ж) из Р" задается полиномом р(ж) из Zb[x] и пусть с(а), a G Е", есть коэффициент в нем при мономе ха. Тогда f{P) = Е с(7) -21*1-^1.

Доказательство. Рассмотрим сумму ^ /(/3). Применяя равенство/(/3) = ^ 0(7), получим,

что для произвольного вектора 7, у ^ <5, коэффициент с (у) встречается в ней ровно столько раз, сколько существует таких векторов /3, что ¡3 У у. Их есть в точности что и доказывает

теорему.

Из теоремы 6 следует, что w(f) = = с(7)

реЕп 76_Е»

Доказанные свойства позволяют построить эффективный алгоритм, который по полиному булевой функции находит остаток от деления ее веса на степень двойки.

Мы не будем вводить формальную модель алгоритма. Будем считать, что на вход некоторой процедуры подается запись полинома булевой функции М\ © ... © М/. Под сложностью процедуры на данном входе будем понимать число операций, которые выполняются процедурой для получения ответа. Под операцией будем понимать некоторое действие над парой мономов: их перемножение, сравнение и т.д.

Теорема 7. Пусть к — заданное число. Существует алгоритм, который по полиному Жегалкина М\ © • • •© Mi булевой функции f(x) находит остаток от деления ее веса на 2к со сложностью 0{1к).

Доказательство. Опишем требуемый алгоритм. Он будет опираться на следствие 4 и теорему 6.

В начале работы алгоритма текущая сумма (остаток от деления веса функции на 2к) равна нулю.

Шаг 1. Рассматриваем последовательно все мономы полинома Жегалкина. Пусть очередной моном есть M ранга г. Если г ^ п — к + 1, то к текущей сумме добавляем слагаемое 2"~г.

Шаг 2. Рассматриваем все попарные произведения мономов полинома Жегалкина, проводя упрощения по правилу х ■ х = х. Пусть M — очередной полученный таким образом моном ранга г. Если г ^ п — к + 2, то к текущей сумме добавляем слагаемое ( — 2) • 2п~г.

Шаг 3. Рассматриваем все произведения мономов полинома Жегалкина по три, проводя упрощения по правилу х-х = х. Пусть M — очередной полученный таким образом моном ранга г. Если г ^ п—к+3, то к текущей сумме добавляем слагаемое 22 • 2п~г.

И так далее до шага к.

Шаг к. Рассматриваем все произведения мономов полинома Жегалкина по к, проводя упрощения по правилу х ■ х = х. Пусть M — очередной полученный таким образом моном ранга г. Если г = п, то к текущей сумме добавляем слагаемое 2к~г.

При каждом изменении текущую сумму следует приводить по mod 2к. В конце работы алгоритма в текущей сумме останется остаток от деления веса булевой функции, заданной исходным полиномом Жегалкина, на 2к.

Сложность предложенного алгоритма будет 0(1к).

Корректность алгоритма определяется следствием 4 и теоремой 6 с замечаниями:

1) нам достаточно построить все возможные произведения мономов полинома Жегалкина по s при s <^к, так как в произведениях мономов полинома Жегалкина по s при s > к коэффициент при них будет иметь вид а ■ 2к, а — некоторое целое число, т.е. О по mod 2к (см. следствие 4);

2) полученные новые мономы можно рассматривать до ранга г при г ^ п — к + 1, так как числовой множитель при новых мономах ранга г при г < п — к + 1 имеет вид Ь ■ 2к, Ь — некоторое целое число, т.е. О по mod 2к (см. теорему 6).

Теорема 7 доказана.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Автор благодарит проф. В.Б. Алексеева, проф. О.А. Логачева и коллектив Института проблем информационной безопасности за обсуждение результата и ценные советы и замечания.

СПИСОК ЛИТЕРАТУРЫ

1. Post Е. Introduction to a général theory of elementary propositions // American Journ. Mathem. 1921. 43. P. 163-185.

2. Логачев О.A., Сальников A.A., Ященко В.В. Булевы функции в теории кодирования и криптологии. М.: МЦНМО, 2004.

3. Жегалкин И. И. Арифметизация символической логики // Матем. сб. 1928. 35. Вып. 3-4.

4. Яблонский C.B. Введение в дискретную математику. М.: Высшая школа, 2001.

5. Cari et С., Guillot Ph. A new representation of Boolean function // Technical report INRIA Project CODES. 1999. P. 1-14.

Поступила в редакцию 03.05.06

УДК 519.71

С. С. Марченков

О РЕКУРСИВНОМ ОПРЕДЕЛЕНИИ ОДНОГО КЛАССА КОНЕЧНО-АВТОМАТНЫХ ФУНКЦИЙ1

(кафедра математической кибернетики факультета ВМиК, e-mail: mathcyb@cs.msu.su)

Пусть D — конечный алфавит, D* — множество всех слов в алфавите D, включая пустое слово А. Существует несколько вариантов определения одноместной конечно-автоматной функции на множестве D* (см., например, [1-5]). Чуть более сложно дать определение многоместной конечно-автоматной функции, отображающей наборы слов из декартовой степени множества D* в множество D*. По причинам, которые будут понятны из дальнейшего, мы выбираем следующий (не самый общий) вариант такого определения.

Для задания на множестве D* га-местной функции / возьмем га конечных детерминированных автоматов (без выходов) А\,..., Ап с входным алфавитом D и множествами состояний Qi, ■ ■ ■ ,Qn-Пусть

дг : QiX D ^Qi

есть функция переходов автомата А{. Автоматы А\,..., Ап предполагаем инициальными с начальными состояниями qn,.. .,qn\. Функцию §i распространим на множество Qi X D*: если q^j £ Qi, а £ D* и а £ D, то пусть

gi{qij,A) = q^, gi{qij,aa) = gi(gi(qij, a), а).

Положим далее

д'г И = gi(qn,at).

Таким образом, д[{а) есть то состояние автомата Ai, в которое он переходит под воздействием слова а. Определим теперь "выходную" функцию h для системы автоматов А\,..., Ап:

h\ Qi х ... X Qn D*.

На основе автоматов А\,..., Ап и функции h зададим на множестве D* конечно-автоматную функцию /: если «!,...,«„ — произвольные слова в алфавите D, то пусть

/(аь ...,«„) = h(g[(ai),.. .,д'п(ап)).

Класс всех функций /, определенных указанным способом, обозначим через Ad-Понятно, что при любом "естественном" (например, позиционном) кодировании слов в алфавите D функции из класса Ad будут примитивно рекурсивными. Учитывая индуктивный (рекурсивный) характер задания функций из Ad, хотелось бы получить альтернативное индуктивное определение класса Ad в духе теории рекурсивных функций. Именно указать набор простейших функций из класса Ad и определить все остальные функции класса Ad с помощью эффективных операций, используемых в теории рекурсивных функций. Чтобы при этом не зависеть от способа кодирования слов из D*, индуктивное построение класса Ad естественно осуществить в терминах словарных примитивно рекурсивных функций [6].

1 Работа выполнена при поддержке РФФИ, проект 06-01-00438.

i Надоели баннеры? Вы всегда можете отключить рекламу.