О генерической NP-полноте проблемы выполнимости булевых схем

2020 Математические основы информатики и программирования №47

МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ И ПРОГРАММИРОВАНИЯ

УДК 510.52

О ГЕНЕРИЧЕСКОЙ NP-ПОЛНОТЕ ПРОБЛЕМЫ ВЫПОЛНИМОСТИ БУЛЕВЫХ СХЕМ1

А. Н. Рыбалов

Институт математики им. С. Л. Соболева СО РАН, г. Омск, Россия

Генерический подход к алгоритмическим проблемам предложен Каповичем, Мяс-никовым, Шуппом и Шпильрайном в 2003 г. В рамках этого подхода алгоритмическая проблема рассматривается не на всём множестве входов, а на некотором подмножестве «почти всех» входов. Понятие «почти все» формализуется введением естественной меры на множестве входных данных. В 2017 г. А. Н. Рыбалов ввёл понятие полиномиальной генерической сводимости алгоритмических проблем, которое сохраняет свойство разрешимости проблемы для почти всех входов и обладает свойством транзитивности, и доказал, что классическая проблема выполнимости булевых формул является полной относительно этой сводимости в генерическом аналоге класса NP. При этом булевы формулы представлялись в виде двоичных размеченных деревьев. В данной работе доказывается генерическая NP-полнота проблемы выполнимости для булевых схем.

Ключевые слова: булева схема, генерическая сложность, проблема выполнимости, NP-полнота.

DOI 10.17223/20710410/47/8

ON GENERIC NP-COMPLETENESS OF THE PROBLEM OF BOOLEAN CIRCUITS SATISFIABILITY

A. N. Rybalov Sobolev Institute of Mathematics, Omsk, Russia E-mail: alexander.rybalov@gmail.com

Generic-case approach to algorithmic problems was suggested by Miasnikov, Kapovich, Schupp and Shpilrain in 2003. This approach studies behavior of an algorithm on typical (almost all) inputs and ignores the rest of inputs. In 2017 A. Rybalov introduced a concept of polynomial generic reducibility of algorithmic problem that preserves the decidability property problems for almost all inputs and has the property of transitivity, and proved that the classical problem of the satisfiability of Boolean formulas is complete with respect to this reducibility in the generic analogue of class NP. Then the Boolean formulas were represented by binary labeled trees. In this paper, we prove the generic NP-completeness of the satisfiability problem for the so-called Boolean circuits. Boolean circuit is a way to represent Boolean functions, which show how the

1 Работа поддержана грантом РНФ №18-71-10028.

value of a Boolean function is obtained from values of variables using logical connectives. Boolean circuits are convenient models for the development of microprocessors, and are also the most important object of studying in computational complexity theory. Boolean circuit contains a finite number of variables xi,..., xn. Every variable xi can be either input, or defined through other variables by assigning one of the following types: xi = Xj V xk or Xj Л xk, where j, k < i; xi = —Xj or Xj, where j < i. The last variable xn of the circuit is called output. By the size of a Boolean circuit we mean the number of variables in it. The number of Boolean circuits of size n is

n

п (1 + 2(m - 1)2 + 2(m - 1)).

m= 1

Keywords: Boolean circuit, generic complexity, Boolean satisfiability problem, NP-completeness.

Введение

Генерический подход к алгоритмическим проблемам предложен в [1]. В рамках этого подхода алгоритмическая проблема рассматривается не на всём множестве входов, а на некотором подмножестве «почти всех» входов. Такие входы образуют так называемое генерическое множество. Понятие «почти все» формализуется введением естественной меры на множестве входных данных. С точки зрения практики алгоритмы, решающие быстро проблему на генерическом множестве, так же хороши, как и быстрые алгоритмы для всех входов. Классическим примером такого алгоритма является симплекс-метод — он за полиномиальное время решает задачу линейного программирования для большинства входных данных, но имеет экспоненциальную сложность в худшем случае. Более того, может так оказаться, что проблема трудноразрешима или вообще неразрешима в классическом смысле, но легкоразрешима на генерическом множестве.

Важнейшим понятием классической теории сложности вычислений является понятие полиномиальной сводимости алгоритмических проблем. С его помощью можно сравнивать проблемы по вычислительной сложности и развивать богатую теорию NP-полноты [2]. Л. Левин ввёл понятие полиномиальной сводимости и NP-полноты в среднем [3]. Ю. Гуревич привёл примеры алгоритмических проблем, которые являются NP-полными в среднем [4]. При анализе вычислительной сложности проблемы в среднем изучается математическое ожидание времени работы алгоритма для всех входов данного размера. А. Н. Рыбалов ввёл понятие полиномиальной генерической сводимости алгоритмических проблем, которое сохраняет свойство разрешимости проблемы для почти всех входов и обладает свойством транзитивности, и доказал, что классическая проблема выполнимости булевых формул является полной относительно этой сводимости в генерическом аналоге класса NP [5]. При этом булевы формулы представлялись в виде двоичных размеченных деревьев. Отметим, что А. Мясников и А. Ушаков в [6] дали другое определение генерической полиномиальной сводимости и в рамках этого определения доказали генерическую NP-полноту рандомизированной ограниченной версии проблемы остановки для машин Тьюринга.

В данной работе доказывается генерическая NP-полнота проблемы выполнимости для так называемых булевых схем. Булева схема — это способ представления булевых функций, в котором указывается, как значение булевой функции получается из значений переменных с помощью логических связок. Булевы схемы являются удобными моделями для разработки микропроцессоров, а также важнейшим объектом изучения в теории сложности вычислений [7].

1. Генерические алгоритмы

Пусть I — некоторое множество. Функция size : I ^ N называется функцией размера, если для любого n G N множество In = {x G I : size(x) = n} конечно. Например, если I = Е* —множество слов над конечным алфавитом Е, то функцией размера будет функция, определённая для любого слова w как его длина |w|. Для множества натуральных чисел N функция размера сопоставляет любому натуральному числу длину его двоичной записи. Как обычно делается в теории вычислимости, будем под алгоритмическими проблемами понимать проблемы распознавания подмножеств из некоторого множества входов с определённой на нем функцией длины. Для подмножества S С I определим последовательность

Pn(S) = ^, n =1, 2, 3,...,

1 ^n 1

где Sn = S П In — множество входов из S размера n. Заметим, что pn(S) —это вероятность попасть в S при случайной и равновероятной генерации входов из In. Асимптотической плотностью S назовём предел

p(S) = lim pn(S).

n—^^o

Множество S называется генерическим, если p(S) = 1, и пренебрежимым, если p(S) = 0. Очевидно, что S генерическое тогда и только тогда, когда его дополнение I \ S пренебрежимо.

Следуя [1], назовём множество S строго пренебрежимым, если последовательность pn(S) экспоненциально быстро сходится к нулю, т.е. существуют константы а, 0 < а < 1, и C > 0, такие, что для любого n

pn(S) < Can

Теперь S называется строго генерическим, если его дополнение I \ S строго пренебрежимо.

Алгоритм A с множеством входов I и множеством выходов J U {?} (? G J) называется (строго) генерическим, если

1) A останавливается на всех входах из I;

2) множество {x G I : A(x) = ?} является (строго) генерическим.

Аналогично определяется понятие вероятностного генерического алгоритма. Гене-

рический алгоритм A вычисляет функцию f : I ^ J, если (A(x) = y G J) ^ (f (x) = y) для всех x G I. Ситуация A(x) = ? означает, что A не может вычислить функцию f на аргументе x. Но условие 2 гарантирует, что A корректно вычисляет f на почти всех входах (входах из генерического множества). Множество S С I называется (строго) генерически разрешимым за полиномиальное время, если существует (строго) генери-ческий полиномиальный алгоритм, вычисляющий его характеристическую функцию.

2. Генерическая полиномиальная сводимость

Напомним определения генерической полиномиальной сводимости и генерической NP-полноты из [5].

Пусть I, J — некоторые множества входов с определёнными на них функциями размера. Множество A С I генерически полиномиально сводится к множеству B С J (обозначается A ^oenP B), если существуют вероятностный полиномиальный алгоритм R : I х N ^ P(J) U {?, (P(J) —это множество всех подмножеств J), полином p(n), полином q(n) степени больше 2 и константа C > 0, такие, что

1. Для всех х Е I либо (Уп ("&(х, п) = ?)), либо для всех п ^ ?(к), где к = з1ге(х), выполнены следующие свойства:

а) Уу Е Я(х,п) (у = ^ ^ з1ге(у) = п);

б) все элементы в ^(х, п) \ выдаются алгоритмом ^ равновероятно;

в) вероятность получить ответ ± в ^(х, п) не больше 2-Ск;

) Ш (р(п))к;

д) х Е А ^ Я(х,п) с В;

е) х Е А ^ я(х,п) С Ш \ В.

2. Множество {х Е I : Уп (^(х,п) = ?)} строго пренебрежимо.

В [5] доказано, что определённая таким образом сводимость сохраняет свойство «быть строго генерически разрешимым за полиномиальное время» для алгоритмических проблем, а также обладает свойством транзитивности.

Определим генерический аналог класса ЫР. Множество Б С I принадлежит классу sgNP, если существует полиномиальное строго генерическое множество О С I, такое, что Б П О Е ЫР. Множество Б Е sgNP называется генерически ЫР-полным, если для любого А Е sgNP имеет место А ^СепР Б.

3. Булевы схемы

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

1) х, = х^- V хк, где к < г;

2) х, = х^- Л хк, где к < г;

3) х, = —х^-, где < г;

4) х, = х^-, где ] < г.

Заметим, что первая переменная любой булевой схемы обязана быть входной. Последняя переменная хп схемы называется выходной. Естественным образом любая булева схема С задаёт булеву функцию от входных переменных схемы следующим образом. Входным переменным схемы можно присвоить любые булевы значения. Затем значения всех остальных переменных схемы вычисляются в порядке возрастания их индексов через значения входных и предыдущих переменных схемы согласно соответствующим присваиваниям. Значение выходной переменной и будет значением соответствующей функции. С другой стороны, для любой булевой схемы можно легко построить булеву схему (и не одну), задающую эту функцию. Под размером булевой схемы будем понимать число переменных в ней. Обозначим через ВС множество всех булевых схем.

Лемма 1. Число булевых схем размера п равно

п

|ВСп| = П (1 + 2(ш - 1)2 + 2(т - 1)).

т= 1

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

1) переменная хт является входной — один вариант;

2) хт = х^- V хк, где к < т, — (т — 1)2 вариантов;

3) хт = х^- Л хк, где к < т, — (т — 1)2 вариантов;

4) хт = — х^-, где ] < т, — (т — 1) вариантов;

5) хт = х^-, где ] < т, — (т — 1) вариант.

Итого получается (1 + 2(т — 1)2 + 2(т — 1)) вариантов выбора для переменной для

п

всех п переменных булевой схемы получаем ^ (1 + 2(т — 1)2 + 2(т — 1)) вариантов

т=1

выбора.

Выясним порядок роста функции |ВСп|. Оценим каждый множитель в произведении |ВСп| снизу:

2т(т — 1) = 2(т — 1)2 + 2(т — 1) < 1 + 2(т — 1)2 + 2(т — 1).

Отсюда 2пп!(п — 1)! < |ВСп|. Оценим каждый множитель в произведении |ВСп| сверху:

1 + 2(т — 1)2 + 2(т — 1) = 2т(т — 1) + 1 < 2т(т — 1) + 2т = 2т2.

Отсюда |ВСп| < 2п(п!)2. Итого получаем

2п(п!)2 п

< |ВСп| < 2п(п!)2

Для любой булевой схемы С(ж1;... , хп) определим множество Ед(С) всевозможных булевых схем от переменных х1,... , хп, жп+1,... , жп+т, в которых переменные х1,... , хп определяются так же, как в схеме С, переменные жп+1,... , жп+т-1 определяются произвольным образом, а выходная переменная жп+т определяется так: жп+т = хп. Очевидно, что любая схема из Ед(С) вычисляет ту же булеву функцию, что и схема С.

Лемма 2. Для любой булевой схемы С имеет место

>

5п2к

для любого п > к, где к — размер схемы С.

Доказательство. Пусть булева схема С имеет размер к и п > к. В любой булевой схеме из множества Ед(С) П ВСп присваивания для первых к переменных и для последней переменной фиксированы. Переменные жп+1,... ,жп+т-1 определяются произвольным образом. Поэтому, аналогично тому, как это делалось в доказательстве леммы 1, можно подсчитать

п- 1

|£д(С) ПВСп| = П (1 + 2(т — 1)2 + 2(т — 1)).

т=к+1

Отсюда

п1

|Е*С) ПВС„| 1 + 2(т " 1)2 + 2(т — 1)»

Так как

т=1 1

п

1 т=1

1

(1 + 2(т — 1)2 + 2(т — 1)) 5п2

> —- для любого т < п, то имеем

>

5п2к

Лемма доказана.

1

1

1

4. Основной результат

Под проблемой выполнимости булевых схем будем понимать следующую алгоритмическую проблему. Для любой булевой схемы нужно определить, существуют ли булевы значения её входных переменных, при которых значение выходной переменной равно 1. Известно [7], что существует полиномиальный алгоритм, который по любой булевой формуле строит булеву схему, которая вычисляет ту же функцию. Поэтому проблема выполнимости булевых схем является NP-полной в классическом смысле. Следующее утверждение показывает, что она является генерически NP-полной.

Теорема 1. Проблема выполнимости булевых схем генерически NP-полна. Доказательство. Пусть A е sgNP. Тогда существует полиномиальное строго генерическое множество G, такое, что A П G е NP. Так как проблема выполнимости булевых схем NP-полна, существует классическая полиномиальная сводимость f множества AnG к ней. Полиномиальный вероятностный алгоритм R, генерически сводящий проблему A к проблеме выполнимости булевых схем, работает на входе (x, n) следующим образом:

1) проверяет, принадлежит ли x множеству G;

2) если x е G, выдаёт ?;

3) если x е G, то строит булеву схему C = f (x), такую, что C выполнима тогда и только тогда, когда x A;

4) случайно и равновероятно генерирует булеву схему из множества Eq(C) П BCn. Проверим свойства полиномиальной сводимости. Свойство 2 следует из того, что множество G строго генерическое. Свойства 1а и 1б следуют из описания шага 4. Свойство 1в очевидно выполняется: алгоритм вообще не выдаёт ответ Свойства 1д и 1е также выполняются по построению схемы C. Наконец, свойство 1г следует из леммы 2.

Автор выражает благодарность рецензенту за полезные замечания и предложения по улучшению текста статьи.

ЛИТЕРАТУРА

1. KapovichI., Miasnikov A, Schupp P., and Shpilrain V. Generic-case complexity, decision problems in group theory and random walks //J. Algebra. 2003. V. 264. No. 2. P. 665-694.

2. Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. М.: Мир, 1982. 419 с.

3. Levin L. Average case complete problems // SIAM J. Computing. 1987. V. 15. P. 285-286.

4. Gurevich Y. Average case completeness // J. Computer System Sciences. 1991. V. 42. P. 346-398.

5. Рыбалов А. О генерической NP-полноте проблемы выполнимости булевых формул // Прикладная дискретная математика. 2017. №36. С. 106-112.

6. Miasnikov A. and Ushakov A. Generic case completeness // J. Computer System Sciences. 2016. V. 82. No. 8. P. 1268-1282.

7. Сэвидж Д. Сложность вычислений. М.: Факториал, 1998. 368 с.

REFERENCES

1. KapovichI., Miasnikov A., Schupp P., and Shpilrain V. Generic-case complexity, decision problems in group theory and random walks. J. Algebra, 2003, vol. 264, no. 2, pp. 665-694.

2. Garey M. and Johnson D. Computers and Intractability. N. Y., Freeman & Co, 1979. 340 p.

3. Levin L. Average case complete problems. SIAM J. Computing, 1987, vol. 15, pp. 285-286.

4. Gurevich Y. Average case completeness. J. Computer System Sciences, 1991, vol.42, pp.346-398.

5. Rybalov A. O genericheskoy NP-polnote problemy vypolnimosti bulevyh formul [On generic NP-completeness of the Boolean satisfiability problem]. Prikladnaya Diskretnaya Matematika, 2017, no. 36, pp. 106-112.

6. Miasnikov A. and Ushakov A. Generic case completeness. J. Computer System Sciences, 2016, vol.82, no. 8, pp. 1268-1282.

7. Savage J. The Complexity of Computing. John Wiley and Sons Inc., 1977. 391 p.