УДК 519.7
С. Н. Селезнева1
ЛИНЕЙНАЯ ОЦЕНКА СХЕМНОЙ СЛОЖНОСТИ РАСПОЗНАВАНИЯ ПОЛИНОМИАЛЬНОСТИ ФУНКЦИЙ НАД КОЛЬЦОМ ВЫЧЕТОВ ПО СОСТАВНОМУ МОДУЛЮ*
Доказано, что при каждом фиксированном составном числе к схемная сложность задачи, состоящей в распознавании полиномиальности произвольной функции f(x 1,... ,х„) над кольцом вычетов по модулю к по вектору длины N = кп ее значений и в случае положительного ответа нахождения ее полиномиального задания, линейна.
Ключевые слова: функция над конечным кольцом, полином над конечным кольцом, полиномиальная функция, алгоритм, схема, схемная сложность.
1. Введение. Схемная сложность булевых и многозначных функций является одним из разделов теории сложности. Это понятие было введено в [1]. Там было показано, что схемная сложность "самой сложной" булевой функции от п переменных равна О О. Б. Лупановым в [2] было доказано, что схемная сложность (в базисе из конъюнкции, дизъюнкции и отрицания) "самой сложной" булевой функции от п переменных асимптотически равна Однако если известна более детальная информация о рассматриваемых функциях, то оценка сложности может уточняться. Отметим работы [3-7] об оценках схемной сложности некоторых функций.
Схему из функциональных элементов (СФЭ) можно рассматривать как формальную алгоритмическую модель. Отметим работы [8-11] о схемной сложности операций сложения и умножения двоичных чисел, умножения матриц.
Настоящая работа касается исследования схемной сложности распознавания свойств булевых и многозначных функций. В [12] изучена схемная сложность распознавания принадлежности булевых и многозначных функций по вектору их значений к некоторым предполным и замкнутым классам. В большинстве случаев получены линейные оценки сложности. В работе [13] исследована схемная сложность распознавания монотонности булевых и многозначных функций по вектору их значений, и в [14] показана линейность схемной сложности распознавания некоторых свойств булевых функций.
В настоящей работе рассматривается задача проверки полиномиальности fc-значных функций (функций над кольцами вычетов по модулю к). Известно, что каждая fc-значная функция может быть задана полиномом по модулю к в том и только в том случае, если к — простое число [15]. Если же к — составное число, то приобретает важность задача распознавания полиномиальности fc-знач-ных функций. Другими словами, а возможно ли заданную fc-значную функцию записать полиномом по mod к? В том случае, когда функция полиномиальна, нам также важно найти полином, задающий эту функцию. В [16] был предложен практически применимый алгоритм, который по вектору значений fc-значной функции f(xi,... ,жп), где к = рт, р — простое число, т ^ 2, определяет, задается ли / полиномом по модулю к, и в случае положительного ответа находит ее канонический полином, причем алгоритм имеет битовую сложность O(N), где N = кп — длина вектора значений функции. Там же отмечено, как этот алгоритм можно обобщить на случай произвольного составного числа при этом его сложность остается такой же.
1 Факультет ВМК МГУ, доц., к.ф.-м.н., e-mail: seleznQcs.msu.su
* Работа поддержана РФФИ, гранты 10-01-00768-а, 12-01-00706-а.
В настоящей работе подробно рассматривается случай произвольного составного к. Приведено описание алгоритма, который по вектору значений fc-значной функции f(x\,... ,хп) определяет, задается ли эта функция полиномом по модулю к, в случае положительного ответа строит один из ее полиномов, причем алгоритм имеет битовую сложность O(N), где N = кп — длина вектора значений функции /. По описанному алгоритму строится последовательность СФЭ Sn, с линейной сложностью решающих исследуемую задачу. Заметим, что при распознавании полиномиальности важны все значения исходной функции. Поэтому тем самым доказывается, что схемная сложность задачи распознавания полиномиальности fc-значных функций при составных к линейна.
2. Основные понятия. Пусть к ^ 2, /•,'/,. = {0,1,..., к — 1}. Функция f(x\,..., хп) называется fc-значной, если / : —> Ек, где п = 0,1, 2,... . Множество всех fc-значных функций обозначим как 1%. множество всех fc-значных функций, зависящих от переменных х\,... ,хп, обозначим как Рf. Вектором значений функции f(x\,..., хп) назовем вектор Uf(a), а € /*//.'. длины кп ее значений на всевозможных наборах а €
Пусть Z — множество целых чисел; Z^ = Z/(к) = {0,1,..., А; — 1} — кольцо вычетов по модулю к, где к ^ 1. Функция f(x\,..., хп) € задается полиномом по модулю к, если найдется такой полином р(х i,...,xn) € Zk[xi,..., хп], что р(а) = /(а) для всех а € ЕМножество fc-значных функций, задающихся полиномами по модулю к, обозначим как Pol/;, и будем называть их полиномиальными.
Если к = рто, где р — простое число, т ^ 1, и /(ж i, ...,хп) € Pol/;, то найдутся такие коэффициенты с(а) ^ /•.]!. а е /•-].'. что
f(x 1, ...,хп) = ^ ^ с(а) ' • • • • • жпп, <j=(s1,...,sn)eE%
где xs,i — степени, = 1 (в случае простого числа к это следует из малой теоремы Ферма, для составного числа к это доказано в [17, 18] или, например, в [16]). Заметим [15], что Pol/; = Р^ тогда и только тогда, когда к — простое число.
В качестве алгоритмической модели рассмотрим схемы из функциональных элементов (СФЭ) в некотором полном в Р/; базисе. Сложностью L(S) СФЭ S назовем число функциональных элементов в ней. Под (битовой) сложностью алгоритма будем понимать сложность соответствующей СФЭ.
Известны быстрые алгоритмы построения по вектору значений fc-значной функции f(x\,..., хп) ее полинома по модулю к при простых к: для к = 2 алгоритм описан в книге Г. П. Гаврилова, А. А. Сапо-женко [19]; для произвольного простого числа к предложен Ю. В. Таранниковым в 2004 г. Сложность этих алгоритмов (в алгоритмической модели СФЭ) равна 0(N log N) битовых операций, где N = кп — длина вектора значений функции.
Д. Г. Мещаниновым в [20] описан алгоритм, проверяющий по вектору значений fc-значной функции f(x 1,...,жп) для к = рт, где р — простое число, т ^ 2, является ли функция / полиномиальной и в случае положительного ответа строящий какой-то ее полином. Сложность этого алгоритма равна 0(N log™ N) операций, где N = кп — длина вектора значений функции.
В [16] предложен алгоритм, проверяющий по вектору значений fc-значной функции f(x\,... ,хп) для к = рт, где р — простое число, т ^ 2, является ли функция / полиномиальной и в случае положительного ответа строящий ее канонический полином. Сложность этого алгоритма (в алгоритмической модели СФЭ) равна O(N) битовых операций, где N = кп — длина вектора значений функции. Там же отмечено, как этот алгоритм обобщается на случай произвольного составного числа и сложность его остается такой же.
В настоящей работе подробно опишем этот алгоритм для случая произвольного составного числа к.
3. О схемной сложности распознавания полиномиальности и построения полиномов
Теорема. Пусть к — фиксированное составное число. Для каждого натурального числа п можно построить такую СФЭ Sn с кп входами и(а), а € . и кп + 1 выходами v(a), а € . и z, что если на ее входах и(а) появляются значения f (а) произвольной функции f € I "! ■ то на ее выходе z выдается 1, если f € Pol^; и выдается 0 — иначе, в случае если z = 1, то на ее выходах v(a), а = (si,... ,sn) € /*//.'. выдаются коэффициенты какого-то ее полинома при мономах х'11 • ... • ж®п, причем для сложности последовательности СФЭ Si, S2, • • •, Sn,... верно L(Sn) = 0(kn).
Доказательство. Опишем алгоритм, который для произвольной функции / € Р{.1 по вектору ее N = кп значений определяет, является ли она полиномиальной, и в случае положительного ответа строит какой-то ее полином. По приведенному описанию несложно построить соответствующую СФЭ Sn.
Пусть к — составное число, к = р™1 •... -р™г, где pi — попарно различные простые числа, nii ^ 1.
Если г = 1, т. е. к = рто, где р — простое число, т ^ 2, — воспользуемся алгоритмом из [16].
Пусть г 2. Тогда кольцо Z^ есть прямая сумма идеалов, изоморфных кольцам Z Построим алгоритм пошагово, опираясь на этот факт.
Шаг 1. Пусть di = г = 1,..., г.
Пусть а = (öi,..., ап) € и ß = (b\,..., Ьп) € Щ- Будем говорить, что наборы а и ß сравнимы по модулю di и обозначать а = /3(mod di), если
а 1 = bi(mod di),..., а,п = bn(mod (¿¿).
По свойствам полиномов над кольцами вычетов по модулю к если функция f {х,\,... ,х„) из Pol/;, то для любых наборов а,ß из из того, что а = ß(mod di), следует /(а) = /(/3)(mod di).
Выполним проверку этого необходимого условия полиномиальное™ для функции f(xi,...,xn). Для этого для каждого i, г = 1,... ,г, сравниваем значения функции / на наборах, сравнимых по модулю р™'1. Так как сравнимость наборов по модулю р™'1 задает отношение эквивалентности на множестве 1^1'. то проверку для каждого i можно выполнить со сложностью O(N). Значит, сложность шага 1 будет также O(N) битовых операций.
Если хотя бы однажды условие не выполняется, то / ^ Pol/;. Иначе, переходим к шагу 2.
Шаг 2. По китайской теореме об остатках сопоставим каждому элементу а € Е^ однозначный набор (öi, ..., аг) € Ерт1 х ... х Ертг, являющийся решением системы сравнений:
а = öj(mod р™'1),..., а = ar(mod р™г).
В силу выполненного условия шага 1 функции f(x\,... ,хп) € сопоставляется набор функций (/ь...,/г)еР% Х...ХР».
У1 У1
Теперь для каждого г, % = 1 ,...,г, надо проверить, задается ли функция fi(x\,..., хп) из -Р"™» полиномом по модулю p"li и в случае положительного ответа найти какой-то ее полином.
Воспользуемся известными алгоритмами.
Если nii = 1, то применим алгоритмы построения полиномов при простых pi (Г. П. Гаври-лов, A.A. Сапоженко [19], Ю.В. Таранников). Получим вектор коэффициентов полинома функции fi со сложностью 0{р™'1Пп). Если nii 2, то применим алгоритмы распознавания полиномиальности и построения полиномов при составных р"н (С.Н. Селезнева [16]). Если fi ^ Ро1р«ч, то / ^ Pol/;. Иначе, получим вектор коэффициентов канонического полинома функции fi со сложностью 0{р™'1П).
Сложность шага 2 равна O(N).
Шаг 3. Если все функции fi — полиномиальны (каждая по своему модулю), то по китайской теореме об остатках по набору коэффициентов с\ € Ертг,..., сг € Ертг при мономе X в полиномах функций /i,..., fr соответственно найдем коэффициент г ^ /•,'/. при мономе X в полиноме функции /, являющийся решением системы сравнений:
с = ci (mod р™1),..., с = cr (mod p"lr).
Выполнить шаг 3 можно со сложностью O(N).
По приведенному описанию алгоритма можно построить соответствующую СФЭ Sn, причем L(Sn) = 0(кп).
Теорема доказана.
Заметим, что при распознавании полиномиальности важны все значения исходной функции /(жI,... ,хп), так как всегда можно найти функцию, отличающуюся от полиномиальной только на одном наборе значений переменных. Откуда заключаем, что схемная сложность задачи распознавания полиномиальности fc-значных функций при каждом фиксированном составном к по вектору их N = кп значений линейна.
В заключение рассмотрим примеры применения описанного алгоритма.
Пример 1. Рассмотрим /(ж) из Р\->:
ж 0 1 2 3 4 5 6 7 8 9 10 И
/ 0 10 9 3 4 6 9 7 0 6 1 3
Заметим, что 12 = 3 • 22.
Рассмотрим (¿1 = 3. Для удобства в таблице наборы значений переменной ж, сравнимые по модулю (¿1, и соответствующие им значения функции / выделим разными шрифтами. Тогда
ж 0 1 2 3 4 5 6 7 8 9 10 И и ж 0 1 2
/ 0 10 9 3 4 6 9 7 0 6 1 3 /i 0 1 0
При (¿2 = 4 получаем
ж 0 1 2 3 4 5 6 7 5 9 10 11 и ж 0 1 2 3
/ 0 10 9 3 4 6 9 7 0 6 1 3 h 0 2 1 3
Тогда ¡\(х) = 2х2 + 2ж, f2(x) $ Pol4, откуда /(ж) ^ Poli2. Пример 2. Рассмотрим д(ж) из Р\->:
ж 0 1 2 3 4 5 6 7 8 9 10 и
9 0 7 6 9 4 3 6 1 0 3 10 9
Заметим, что 12 = 3 • 22. При (¿1 = 3 получаем
ж 0 1 2 3 4 5 6 7 8 9 10 и и ж 0 1 2
/ 0 7 6 9 4 3 6 1 0 3 10 9 /i 0 1 0
При (¿2 = 4 получаем
ж 0 1 2 3 4 5 6 7 5 9 10 11 и ж 0 1 2 3
/ 0 7 6 9 4 3 6 1 0 3 10 9 h 0 2 1 3
Тогда gi(x) = 2ж2 + 2ж, = Зж, и д(ж) = 8ж2 + 11ж.
СПИСОК ЛИТЕРАТУРЫ
1. Shannon С.Е. А symbolie analysis of relay and switching eireuits // Trans. AIEE. 1938. 57. P. 713-723.
2. J1 у панов О. Б. Об одном методе синтеза схем // Изв. вузов. Радиофизика. 1958. 1. № 1. С. 120-140.
3. Редькин Н. П. Доказательство минимальности некоторых схем из функциональных элементов // Проблемы кибернетики. Вып. 23. М.: Наука, 1970. С. 83-101.
4. Резник В.И. Реализация монотонных функций схемами из функциональных элементов // ДАН СССР. 1961. 139. № 3. С. 566-569.
5. Сопруненко Е. П. О минимальной реализации некоторых функций схемами из функциональных элементов // Проблемы кибернетики. Вып. 15. М.: Наука, 1965. С. 117-134.
6. Schnorr С. Р. Zwei lineare untere Schranken für die komplexitat Boolescher funktionen // Computing. Archiv für Elektronischer Rechnen. 1974. 13. N 2. P. 155-171.
7. Ложкин С. А., Семенов А. А. Об одном методе сжатия информации и о сложности реализации монотонных симметрических функций // Изв. вузов. Математика. 1988. № 7. С. 44-52.
8. Редькин Н. П. О минимальной реализации двоичного сумматора // Проблемы кибернетики. Вып. 38. М.: Наука, 1981. С. 181-216.
9. Карацуба A.A., Офман Ю.П. Умножение многозначных чисел на автоматах // ДАН СССР. 1962. 145. № 2. С. 293-294.
10. Schönhage А., Strassen V. Schnelle multiplikation grober zahlen // Computing Archiv für Elektronisches Reshnen. 1971. 7. N 3-4. P. 281-292.
11. Fischer M.J., Meyer A.R. Boolean matrix multiplicationand transitive closure//IEEE Conference Record of the 12th Annual Symp. on Switching and Automata Theory. 1971. P. 129-131.
12. Алексеев В. Б. Ступенчатые билинейные алгоритмы и распознавание полноты в fc-значных логиках // Изв. вузов. Матем. 1988. № 7. С. 19-27.
13. Воронен ко А. А. О сложности распознавания монотонности // Матем. вопросы кибернетики. 1999. 8. С. 301-303.
14. Воронен ко А. А. О методе разложения для распознавания принадлежности инвариантным классам // Дискретная математика. 2002. 14. Вып. 4. С. 110-116.
15. Яблонский С.В. Функциональные построения в fc-значной логике // Труды МИАН. 1958. 51. С. 5-142.
16. Селезнева С.Н. Быстрый алгоритм построения для fc-значных функций полиномов по модулю к при составных к // Дискретная математика. 2011. 23. Вып. 3. С. 3-22.
17. Niven I., Warren L.J. A generalization of Fermat's theorem // Proc. of the American Math. Society. 8. N 2. 1957. P. 306-313.
18. Singmaster D. On polynomial functions (mod m) // J. of Number Theory. 1974. 6. P. 345-352.
19. Гаврилов Г.П., Сапоженко А. А. Сборник задач по дискретной математике. М.: Наука, 1977.
20. Мещанинов Д. Г. Метод построения полиномов для функций fc-значной логики // Дискретная математика. 1985. 7. Вып. 3. С. 48-60.
Поступила в редакцию 23.05.12
CIRCUIT COMPLEXITY OF RECOGNIZING POLYNOMIALITY FOR FUNCTIONS OVER RESIDUE MODULO COMPOSITE NUMBER IS LINEAR
Selezneva S. N.
It is proved that for every fixed composite number k circuit complexity of a problem to recognize if an arbitrary function f(xi,..., xn) over residue modulo k given by a vector of N = kn its values is polynomial and, if so, to find its polynomial representation is linear.
Keywords: function over a finite ring, polynomial over a finite ring, polynomial function, algorithm, circuit, circuit complexity.