Серия «Математика»
2010. Т. 3, № 4. С. 33-43
Онлайн-доступ к журналу: http://isu.ru/izvestia
УДК 519.7
Вычислительная оценка сложности полиномиальных представлений булевых функций *
А. С. Казимиров, С. Ю. Реймеров
Восточно-Сибирская государственная академия образования
Аннотация. В статье рассматривается сложность полиномиальных представлений булевых функций. Предложены условия, которым должна удовлетворять функция, имеющая сложность больше заданной. С помощью генетического алгоритма минимизации получены верхние оценки сложности таких булевых функций, и как следствие получена новая верхняя оценка сложности для всех булевых функций.
Ключевые слова: булевы функции; полиномиальные представления; минимизация; генетические алгоритмы.
Любую булеву функцию можно представить множеством различных термов и наибольший интерес представляют термы с определенными свойствами. В данной работе рассматривается минимизация полиномиальных представлений булевых функций.
Под полиномиальной формой или полиномом Ру, представляющей функцию /(х\,..., хп), будем понимать формулу вида Ру = Р1®.. .®Р&, где Рг = х”"1 ■ ... ■ х”4 , aij £ {0, 1}, х0 = х, х1 = х, также Рг может быть
Количество слагаемых k будем далее называть сложностью полинома и обозначать | Pf |.
Через L(f) обозначим сложность полинома, представляющего функцию f и имеющего минимальное число слагаемых: L(f) = min |Pf |.
Pf
Далее L(f) будем называть сложностью функции.
Под сложностью L(n) класса всех n-местных функций будем понимать сложность самой сложной функции: L(n) = max L(f).
В статье [1] получена оценка L(7) < 28. В данной работе получены результаты, позволяющие понизить эту оценку.
* Работа выполнена при финансовой поддержке РФФИ, грант 09-01-00476а.
равно 1.
ЬР-эквивалентность. Остаточной функцией / по г-му аргументу будем называть функцию /а. (х1;..., хп) = /(х1;..., хг-1, а, хг,..., хп). В зависимости от значения а будем говорить о нулевой и единичной остаточных.
Функцию /. (х1,.. .,хп) = /X0" (хь..., хп) ® (х1,..., хп) будем на-
зывать производной функции / по г-му аргументу.
Рассмотрим функцию /(х1;..., хп). Функция ^(х1,..., хп) называется ЬР-эквивалентной к / (х1;..., х*), если можно построить последовательность функций /о,..., /п, в которой /о = /, /* = д и /^+1 получается из /к одним из следующих преобразований:
/к + 1(х1? • • • , хг, • • • , ху , • • • , хп ) У* к (х1 ? • • • ? ху , • • • , хг, • • • , хп ) ;
/к + 1(х1? • • • , хп ) /к (х 1, • • • , хг 7 • • • 7 хп ) ;
/к+1(х1, ... ,х„) = х/)£.(х1, .. . ,хп) © х ■ (/к)х(х1,. .. ,хп);
. /к + 1(х1, . .. ,хп) = х*(/к )Х, (х1, . . . ,хп) © х< ■ (/к )х, (х1, . . . ,хп).
Все булевы функции разбиваются на ЬР-классы. Под представителем РР-класса будем понимать наименьшую функцию (в двоичной записи ее вектора) из класса.
В [2] показано, что если функция д эквивалентна /, то Ь(/) = Ь(д). Там же можно найти подробное описание классов ЬР-эквивалентности.
Построение сложных функций. Из разложения Шеннона
/(хо,... ,хп) = хо ■ /(0,х1,... ,хп) © хо ■ /(1,х1,... ,хп) получается верхняя оценка:
Ь(/) < /)+ /).
Ее можно обобщить следующим образом:
Ь(п + 1) ^ Ь(п) + Ь(п).
Таким образом, функция не может иметь сложность а, если
Ь(/°) + ЦД) < а.
Построим множество (п + 1)-местных функций Ра следующим образом: возьмем всевозможные пары п-местных функций /1 и /2 таких, что Ь(/1) + Ь(/2) > а, и для каждой пары сконструируем функцию
/ : Д = /1 и /11 = /2.
В дальнейшем будем использовать выражение функция / пары (а, в), которое означает, что функция / = хо/1 ©хо/2, где Ь(/1) = а, Ь(/2) = в.
Из верхней оценки разложения функции на две остаточных следует, что если существуют (п + 1)-местные функции сложности а, то все они будут содержаться в Ра. Функции из Ра будем в дальнейшем называть функциями-претендентами на сложность а.
Для получения функций-претендентов на сложность 28 надо перебрать все пары таких функций /і и /2, сложности которых представлены одним из столбцов таблицы I.
Каждая функция из пар (15,14) и (15,13) будет иметь ЬР-эквива-лентную функцию в парах (14,15) и (13,15), соответственно. Таким образом, достаточно перебрать функции-претенденты из пар (13,15), (14, 14), (14, 15) и (15, 15).
Таблица I. Сложности функций для построения
од 13 14 14 15 15 15
од 15 14 15 13 14 15
Рассмотрим произвольную функцию / = Жо/1 Ф Х0/2 пары (13,15), где Ь(/і) = 13 и ^(/2) = 15. Функция / является функцией-претен-дентом. Пусть /з = /1 Ф /2. Если Ь(/з) = 15, то можно построить эквивалентную к / функцию-претендент х0/3 Ф Х0/2, которая будет в паре (15,15). Если Ь(/з) = 14, то можно построить эквивалентную к / функцию-претендент х0/3 Ф Х0/2, которая будет в паре (14,15). Если Ь(/з) = 13, то можно построить эквивалентную к / функцию-претендент Ж0/1 Ф Х0/3, которая будет иметь сложность, меньшую 27, а значит, ее не надо минимизировать. Таким образом, все функции-претенденты, получаемые в переборе пары (13,15), имеют либо эквивалентные в других парах, либо вообще не могут дать искомую сложность 28.
Таким образом, для поиска функций сложности 28 достаточно перебрать пары (14,14), (14,15) и (15,15).
Для получения функций-претендентов на сложность 27 надо перебрать пары таких функций /і и /2, сложности которых представлены одним из столбцов таблицы II.
Таблица II. Сложности функций для построения ^27
ОД 12 13 13 14 14 14 15 15 15 15
од 15 14 15 13 14 15 12 13 14 15
Пары (14,13), (15,12), (15,13) и (15,14) имеют симметричные пары, поэтому их перебор не даст новых функций с точностью до ЬР-эквивалентности.
Рассмотрим пару (12,15). Если /3 = /1 ©/2 имеет сложность меньше 14, то для всех таких функций можно построить ЬР-эквивалентные из /3 и /1, для которых оценка сложности меньше 27. Если Ь(/з) = 15, то для таких функций можно построить ЬР-эквивалентные функции из /3 и /2, которые принадлежат паре (15,15).
Рассмотрим пару (13,14). Если /3 = /1 ©/2 имеет сложность меньше
14, то для всех таких функций можно построить ЬР-эквивалентные из
/3 и /1, для которых оценка сложности меньше 27. Если ^(/3) = 15, то для таких функций можно построить ЬР-эквивалентные функции из /3 и /2, которые принадлежат паре (15,14).
Рассмотрим пару (13,15). Если /3 имеет сложность меньше 14, то для всех таких функций можно построить ЬР-эквивалентные из /3 и /1, для которых оценка сложности меньше 27. Если ^(/3) = 15, то для таких функций можно построить ЬР-эквивалентные функции из /3 и /2, которые принадлежат паре (15,15).
Таким образом, для поиска функций сложности 27 достаточно перебрать пары (14,14), (14,15) и (15,15), то есть те же пары, что и для поиска функций сложности 28.
6-местные функции сложности 14. Для поиска 7-местных функций сложности 27 и 28 необходимо получить все 6-местные функции сложности 14 и 15. В работе [1] были найдены все функции сложности
15. Таким образом, для дальнейшего решения задачи необходимо найти функции сложности 14.
Для поиска функций сложности 14 необходимо перебирать пары таких 5-местных функций /1 и /2, сложности которых представлены одним из столбцов таблицы III.
Таблица III. Сложности функций для построения Р14
ОД 5 6 6 777 88 88 9999 9
од 9 8 9 789 67 89 5678 9
Повторяем рассуждения, аналогичные построению сложных функций сложности 27 и 28.
Исключаем симметричные пары. После чего остается рассмотреть пары (5, 9), (6, 8), (6, 9), (7, 7), (7, 8), (7, 9), (8, 8), (8, 9) и (9, 9).
Рассмотрим пару (5, 9): функции /1, /2 и /3 = /1 © /2, где £(/1) = 5, Ь(/2) = 9. Поскольку Ь(5) = 9, то Ь(/3) < 9. Допустим, что Ь(/3) < 8, тогда выполнится Ь(хо/1 © хо/3) < 13. Если же Ь(/3) = 9, то функция хо/1©хо/3 будет просмотрена в паре (9, 9), так как Ь(/3) = 9 и Ь(/2) = 9. Таким образом, можно исключить пару (5, 9).
Аналогичным образом классы пар (6, 8) и (6, 9) сводятся к парам, в построении которых не участвуют функции сложности 6. В итоге, чтобы получить все классы функций сложности 14, достаточно перебрать пары (7, 7), (7, 8), (7, 9), (8, 8), (8, 9) и (9, 9).
Для дальнейшей оценки перебора этих функций воспользуемся таблицей IV, в которой отражено количество функций той или иной сложности.
В таблице V отражен количественный результат перебора. Полный перебор всех функций /1 и /2 из пар функций-претендентов на сложность 14 будет больше, чем в приведенной таблице. Например, количество функций-претендентов в паре (7, 7) равно 1 688 168 546 855 523 216.
Перебор можно уменьшить, если воспользоваться свойствами ЬР-экви-валентности.
Таблица IV. Распределение 5-местных функций по сложностям
Сложность Число классов Число функций
0 1 1
1 1 243
2 4 24 948
3 19 1 351 836
4 137 39 365 190
5 971 545 193 342
6 3572 2 398 267 764
7 2143 1 299 295 404
8 86 11 460 744
9 2 7 824
Всего 6936 4 294 967 296
Допустим, необходимо найти функцию /. Рассмотрим все функции Н = х1^1 © х1^2, где Н — представитель ЬР-класса. Построим все функции д = х!$1 © х1^2, ЬР-эквивалентные Н. Среди построенных функций будет получена и функция /.
Тогда для каждой функции / найдется некоторая ЬР-эквивалентная функция Н с Н1 — представителем класса.
Таблица V. Количество функций-претендентов на сложность 14 с использованием ЬР-классов
Пара Функции-претенденты
(7, 7) 2 784 390 050 772
(7, 8) 24 560 374 392
(7, 9) 16 766 832
(8, 8) 985 623 984
(8, 9) 672 864
(9, 9) 15 648
Всего 2 809 953 504 492
Основное тождество минимизации. Очевидно, что любая функция /(хо,..., хп) может быть представлена в виде:
/(хо,.. .,х„) = хо ■ Д(хь ... ,х„) © хо ■ /2(х1, . ..,х„) © /3(х1, ... ,х„).
Здесь /1, /2 и /3 — функции меньшего числа переменных. Подставив вместо хо поочередно 0 и 1, получаем следующие равенства:
/(0,х1,... ,х„) = /2(х1,... ,х„) © /3(х1,... ,х„);
1/(1,х1,. ..,х„) = /1 (х1, ...,х„) © /3(х1,... ,х„).
Преобразуем эти равенства таким образом, чтобы функции /1 и /2 выражались через известные остаточные функции исходной / и единственную неизвестную функцию /3:
j/2(xi, . .. ,ж„) = /(0,XI, ...,жп) ® /з(Х1, ...,Xn);
\/l(Xi, . .. ,Xn) = /(1,Xi, ...,Ж„) ф /з(Х1, . . . ,Xn).
Из такого представления следует, что
L(/) = fnliIln(L(/°0 ф /3) + L(/io Ф /3) +
/3€F n
то есть для минимизации (n + 1)-местной функции / достаточно перебрать все n-местные функции /3. Однако, реализация этого метода минимизации (n + 1)-местной функции связана с необходимостью предварительного вычисления и хранения библиотеки сложностей всех n-местных функций. Уже при n = 5 размер библиотеки составляет 232 байт. Для работы с 7-местными функциями требуется библиотека размером 264 байт. На сегодняшний день проблематично как получение такой библиотеки, так и ее хранение. Возможности сегодняшней вычислительной техники позволяют получать точные значения L(/) для произвольных функций с местностью не более 6 аргументов, но возможно понизить оценку сложности генетическими алгоритмами.
Алгоритмы минимизации. Следующие алгоритмы использовались при минимизации функций-претендентов.
Алгоритм 1. Минимизация функции полным перебором.
Пусть / — (n + 1)-местная функция, для которой необходимо найти сложность; lib — массив сложностей n-местных функций (индексом каждой сложности является двоичное представление вектора функции); f1 — /°1; f2 — /^; hasNext(f3) — метод, который сообщает остались ли еще функции после f3.
int L = -1;
for(u_int64 f3 = 0; hasNext(f3); f3++) {
int nL = lib [f3] + lib[f3 ~ f1] + lib[f3 ~ f2] ; if (nL < L || L == -1)
L = nL;
}
Таким образом происходит перебор всех функций f3 ив L хранится
L(/).
Алгоритм 2. Минимизация функций с дополнительной библиотекой.
Для всех 6-местных функций, сложности которых меньше 14, выполняется min(L(/i), ^(/2)) < 4, а функции сложности 15 принадлежат
одному ЬР-классу. На основе этого в [8] был предложен оптимизированный алгоритм.
Пусть — двумерный массив, в котором есть все функции сложностей до 5 (первый индекс — сложность, второй — номер функции); пШЬ — библиотека, в которой хранятся сложности всех 5-местных
функций; а — Д^ — /11.
UInt8 ts = 255, ts1, ts2, ts3;
int fsi;
for(int i = 0; i < 5; i++) {
£огЦпЬ з = 0; з < fs[i].size(); ^++) { fsi = fs [i] [^] ; ts1 = nlliЬ[fsi ~ £1]; ts2 = nlliЬ[fsi ~ £2]; if (ts1 + ts2 + i < ts) ts = ts1 + ts2 + i; ts3 = nllib[fsi ~ ^ ~ f2]; if (ts1 + ts3 + i < ts) ts = ts1 + ts3 + ^ if (ts2 + ts3 + i < ts) ts = ts2 + ts3 + i;
}
}
Хранение библиотеки 5-местных функций. Для минимизации 6-местной функции необходимо иметь библиотеку сложностей 5-местных функций с произвольным доступом к ней, то есть хранить ее в оперативной памяти.
Очевидно, что для хранения сложности одной функции достаточно 1 байта. Поскольку количество 5-местных функций составляет 22 =
4 294 967 296, то для хранения сложностей всех 5-местных функций достаточно 4 памяти.
Поскольку Ь(5) < 9, то можно закодировать данные так, чтобы в 1 байте хранились значения сложностей сразу для двух функций. Таким образом, объем всей библиотеки сокращается до 2 &Б.
Можно хранить в памяти только представителей ЬР-классов функций и вычислять сложности функции “на лету”, определяя класс и сложность класса, к которому она принадлежит. Такое решение требует меньше памяти, но объем вычислений значительно увеличивается. Поэтому необходимо найти некоторый компромисс между используемой памятью и объемом промежуточных вычислений.
Обозначим через Q множество всех п-местных функций. А через Q — множество п-местных функций, у которых первое значение вектора равно 0, т.е. Q/ = {/ | / € Ь, /(0,..., 0) = 0}.
Предложение. Любая функция из множества Q имеет ЬР-эквивалентную функцию в множестве Q .
Доказательство. Достаточно показать, что для любой функции / € Q существует ЬР-эквивалентная функция из класса Q .
Рассмотрим функцию / € Ь \ Q . Если /(1, 0,..., 0) = 0, то построим ЬР-эквивалентную функцию д(ж^ ..., жп) = /(ж^ ж2,..., жп). Очевидно, что д € Ь .
Если /(1, 0,..., 0) = 1, то построим ЬР-эквивалентную функцию д(ж1,... ,жп) = /(ж1,... ,жп) ® Ж1 ■ /(1,Ж2,... ,жп). Очевидно, что д € Ь.
Таким образом, получается, что для любой функции / € Q \ Q можно построить ЬР-эквивалентную функцию д € Q .
Следовательно достаточно хранить только функции, у которых первое значение вектора равно 0. А для всех остальных существуют ЬР-эквивалентные. Таким образом удалось сократить размер библиотеки до 1 &Б. □
Минимизация 7-местных функций. Время выполнения алгоритма полного перебора при минимизации 7-местных функций недостижимо. Тривиальных методов значительного сокращения полного перебора не было выявлено, поэтому было решено использовать некие оценочные алгоритмы. Такими алгоритмами могут быть случайная выборка или генетический алгоритм минимизации.
Случайная выборка — это алгоритм, в котором в качестве функции /з берется некоторое случайное множество 6-местных функций и среди них выбирается одна такая, которая дает наименьшую оценку сложности исходной 7-местной функции. Каждая из 6-местных функций также минимизируется алгоритмом случайной выборки, а функции сложности
5 уже существуют в загруженной библиотеке сложностей.
Алгоритм случайной выборки оказался малоэффективным, так как среднее число функций /з, которые позволяют минимизировать функцию стремится к одной, поэтому количество используемых операций стремится к числу операций в полном переборе.
По той причине, что случайная выборка показала себя как неэффективный метод минимизации, использовался генетический алгоритм. Данный алгоритм на 6-местных функциях статистически минимизировал функции как алгоритм полного перебора, но его время выполнения (для 6-местных функций) не превышало 5 секунд.
В итоге для минимизации использовался алгоритм генетической минимизации в классическом своем представлении: со скрещиванием, минимизацией и отбором по функциям с наименьшей сложностью. Подробнее этот алгоритм описан в работе [3].
Минимизация функций-претендентов. Генерация функций-пре-тендентов и минимизация производились на кластере, созданном из 14 узлов учебной аудитории.
Генерация и последующая минимизация были осуществлены двумя МР1-приложениями.
Первое приложение генерировало функции-претенденты: представителю каждого ЬР-класса необходимой сложности (функция /1) подставлялась в пару каждая функция /2 необходимой сложности. Перебор функций-претендентов одного ЬР-класса независим от перебора функций-претендентов другого класса, поэтому возможно параллельное рассмотрение различных классов. Часть функций в процессе перебора удалось исключить за счет оценки сложности функции разложением ее на две остаточных. Полученные функции-претенденты нуждались в последующей минимизации. Минимизация каждой отдельной функции — независимая задача, поэтому распараллеливание происходило на уровне отдельных функций.
Этими двумя программами были найдены 6-местные функции сложности 14. Результат данной работы представлен в таблице VI.
Таблица VI. Результаты минимизации функций-претендентов на сложность 14
Группа Число функций
(7,7) (7,8) (7,9) 0
(8,8) 1586
(8,9) 332
(9,9) 992
Всего 2414
Таким образом, было найдено 2414 функций, которые дают сложность 14. Эти функции были найдены с точностью до ЬР-классов, то есть все ЬР-классы 6-местных функций, дающих сложность 14, присутствуют в этих 2414. Также присутствовали функции, которые принадлежали уже представленным ЬР-классам.
На следующем этапе было написано МР1-приложение, которое для каждой функции находило все функции, принадлежащие ее ЬР-классу. После работы этого приложения были найдены все представители каждого из этих ЬР-классов.
Таблица VII. 6-местные функции сложности 14 и 15
Сложность Число классов Число функций
14 62 65 393 568
15 1 96
Всего 63 65 393 664
Результаты поиска ЬР-классов 6-местных функций и дальнейшего вычисления всех представителей этих классов можно представить таблицей VII.
Для дальнейшего поиска 7-местных сложных функций необходимо также перебрать пары функций для генерации функций-претендентов.
Объем перебора этих пар можно представить таблицей VIII. Таблица VIII. Количество функций-претендентов на сложность 27 и выше
Пара Функции-претенденты
(14.14) (14.15) (15.15) 4 054 401 216 5 952 96
Всего 4 054 407 264
Аналогично поиску функций на сложность 14 были написаны приложения для поиска функций на сложность 27 и выше. Для минимизации использовался генетический алгоритм.
Минимизация функций-претендентов на сложность 27 производилась в несколько однотипных этапов. На первом этапе параметры генетического алгоритма были подобраны таким образом, чтобы время минимизации всех функций-претендентов не превышало двух-трех дней. Далее на кластере все функции-претенденты были минимизированы и получен файл функций с оценкой сложности больше или равной 27.
На втором этапе генетический алгоритм был настроен так, что его точность была повышена, а время минимизации всех оставшихся функций не превышало двух-трех дней, был получен файл с функциями, имеющими верхнюю оценку сложности больше или равную 27.
Оставшиеся функции были минимизированы генетическим алгоритмом минимизации с большим перебором чем на втором этапе, после чего всех функций были найдены представления сложности меньше 27.
Таким образом, удалось показать, что не существует 7-местных функций сложности 27 и 28:
Теорема. L(7) < 26.
Действие теоремы распространяется на большее число переменных: Следствие. L(n) ^ 1221 ■ 2n.
Данная оценка лучше асимптотической оценки
< 2“(2l°g2 n + 2) ,
n
полученной в [4], при n < 70.
Список литературы
1. Винокуров С. Ф. Верхняя оценка сложности булевых функций в классе ПНФ / С. Ф. Винокуров, А. С. Казимиров // Algebra and Model Theory 4. - Novosibirsk: Novosibirsk State Tech. University, 2003. - P. 160-165.
2. Казимиров А. С. Оценка числа классов LP-эквивалентности булевых функций / А. С. Казимиров // Вестн. Бурят. ун-та. Сер. 13, Математика и информатика. - 2005. - Вып. 2. - С. 17-22.
3. Казимиров А. С. Параллельные генетические алгоритмы в задачах минимизации булевых функций / А. С. Казимиров // Вестн. ТГУ. Приложение. - 2006.
- № 17. - С. 226-230.
4. Кириченко К. Д. Верхняя оценка сложности полиномиальных нормальных форм булевых функций / К. Д. Кириченко // Дискретная математика. - 2005.
- Т. 17, № 3. - С. 80-88.
5. Реймеров С. Ю. О сложности полиномиальных представлений булевых функций 7 переменных / С. Ю. Реймеров // Студент и научно-технический прогресс: Математика : материалы XLVIII междунар. науч. студ. конф. -Новосибирск : Новосиб. гос. ун-т, 2010. - С. 177.
6. Рябец Л. В. Нахождение минимальных полиномов булевых функций с использованием специальной операторной формы / Л. В. Рябец // Технологии Microsoft в теории и практике программирования : тез. докл. - Новосибирск, 2006. - С. 215-217.
7. Even S. On minimal modulo 2 sums of products for switching functions / Even S // IEEE Trans. Electron. Comput. - 1967. - Vol. EC-16, N 10. - P. 671-674.
8. Gaidukov A. Algorithm to derive minimum ESOPs for 6-variable functions / A. Gaidukov // Proceedings of the 5th International Workshop on Boolean Problems 2002. Freiberg, Germany, Sept. 19-20. - 2002. - P. 141-148.
A. S. Kazimirov, S. U. Reymerov
Computational bound on complexity of polynomial representations of boolean functions
Abstract. This paper concerns complexity of exclusive-or-sum-of-products expressions representing Boolean functions. Conditions for functions having complexity over a given number are introduced. Genetic minimization algorithm gave obtained upper bounds on complexity of such functions. As a result a new upper bound on complexity for all Boolean functions is obtained.
Keywords: boolean functions; ESOPs; exclusive-or-sum-of-products; minimization; genetic algorithms.
Казимиров Алексей Сергеевич, кандидат физико-математических наук, Восточно-Сибирская государственная академия образования, 664011, Иркутск, ул. Н. Набережная, 6, тел.: (3952) 240477
Реймеров Сергей Юрьевич, аспирант, Восточно-Сибирская государственная академия образования, 664011, Иркутск, ул. Н. Набережная, 6, тел.: (3952) 240477 ([email protected])
Alexey Kazimirov, East Siberian State Academy of Education, 6, N. Naberezhnaya St., Irkutsk, 664011, phone: (3952) 240477 ([email protected])
Sergey Reymerov, East Siberian State Academy of Education, 6, N. Naberezhnaya St., Irkutsk, 664011, postgraduate student, phone: (3952) 240477 ([email protected])