Алгоритмические задачи с таблицами значений булевых полиномов

Алгоритмические задачи с таблицами значений булевых полиномов1

М. Н. Вялый

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

В последние годы увеличился интерес к такому давно известному способу задания булевых функций как многочлены Жегалкина (или булевы полиномы, они же полиномы над полем из двух элементов 12). Как следствие, появились работы [1, 2, 3], в которых изучается комбинаторика таких полиномов и описываются соотношения между алгебраическим и комбинаторными свойствами. Данная работа принадлежит к тому же направлению. В ней изучаются особенности основных задач комбинаторики слов при применении их к таблицам значений булевых полиномов.

Проверка вхождения одного слова в другое, перечисление вхождений и подсчет кратностей вхождений — это основные алгоритмические задачи комбинаторики слов. Нас будут интересовать эти задачи, когда слово, в котором ищутся вхождения вхождения образца, является таблицей значений некоторого булевого полинома. Поскольку любая булева функция однозначно соответствует некоторому булеву полиному, любое слово длины 2" является таблицей значений некоторого булева полинома. Специфика рассматриваемых здесь задач состоит в том, что предполагается наличие короткого описания для полинома, так что прямое построение таблицы значений требует неприемлемо большого времени.

Есть три основных способа задания булевых полиномов, помимо таблицы значений: списком мономов, формулой и схемой вычисления.

1 Работа выполнялась при финансовой поддержке проектов РФФИ 02-01-716, 02-01-22001, НЦНИ и гранта поддержки научных школ НШ 1721.2003.1

Моном однозначно определяется двоичным словом а ё Гз по правилу

ха = ж“1 ж“2 .. .ж“", aj € {0,1}, ж0 = 1, ж1 = ж.

Множеству мономов А соответствует полином ^2аедХа, где суммирование производится по модулю 2. Сложностью задания полинома списком мономов естественно считать |А|.

Формулы определяются рекурсивно. Константы и переменные — это формулы размера 1. Если С — формулы размеров д и г соответственно, то + С, — формулы размера д + г + 1.

Схема вычисления размера в — это последовательность булевых функций /о, /ъ • • •, /8, которая начинается с 1, жх, жд,..., ж„ и для каждой Д, к > п, при некоторых < к выполнено Д = fifj или Д = /,: + fj.

Основной интересующий нас здесь случай — это полиномы малой степени (¿ = 0(1)). В этом случае все три приведенные выше способа задания полинома имеют сопоставимую сложность (полиномиально эквивалентны). В общем случае представление в виде списка мономов дает формулу размера, полиномиально зависящего от числа мономов, а представление в виде формулы — схему, размер которой полиномиален от размера исходной формулы. Таким образом, представление в виде схемы — наиболее сжатое.

Работа устроена следующим образом. В разделе 1 приводятся основные определения и обозначения, используемые в работе. В разделе 2 рассматривается задача вычисления степени слова, которая по определению равна наименьшей степени полинома, таблица значений которого содержит данное слово. Для задачи вычисления степени построен полиномиальный алгоритм. В разделе 3 рассматривается задача проверки вхождения слова в таблицу значений заданного полинома. В общем случае эта задача оказывается МР-полной. В случае полиномов фиксированной степени построен субэкспоненциальный алгоритм проверки вхождения слова. Показатель степени при этом зависит только от степени и длины слова. Таким образом, для проверки вхождения слов фиксированной длины в таблицы значений полиномов фиксированной степени получаем полиномиальный алгоритм. Отдельно рассматривается простейший случай полиномов степени 2. В этом случае для задачи проверки вхождения слова существует алгоритм, полиномиальный и по длине записи слова, и по длине записи полинома. В разделе 4 полученные в предыдущем разделе результаты применяются к задаче последовательного порождения вхождений слова в таблицу значений полинома. Как следствие, построен полиномиальный алгоритм последовательного перебора нулей полинома фиксированной степени. В последнем разделе 5 рассматривается задача вычисления кратности вхождений слова в таблицу значений полинома. Уже для кратности вхождения слова из одного 0 (то есть, попросту для числа нулей полинома) известны результаты, говорящие о трудности этой задачи даже для полиномов степени 3

(см. [8]). Здесь рассматриваются задачи ¿>(гу) подсчета кратности вхождения фиксированного слова ги в полиномы третьей степени. Построен полиномиальный алгоритм для задачи <5(01) (фактически, подсчет числа серий в таблице значений как двоичном слове). Приведены примеры слов, для которых задача £(ги) не менее трудна, чем <5(0). На основе рассмотренных примеров сформулирована гипотеза об окончательном виде классификации трудных и простых задач в этом наборе задач.

1. Определения и обозначения

Через F2 обозначается поле из 2 элементов, через Т(<1, п) — полиномы над F2 (булевы полиномы или полиномы Жегалкина) степени не выше сі ОТ П переменных Жх, .. ., х„.

Наборы значений п булевых переменных естественным образом отождествляются с двоичными словами длины п. Для записи двоичных слов (равно как и для соответствующих им наборов переменных) мы будем использовать наряду с обычной и мультипликативную запись: 0а11“2... означает слово, начинающееся с а\ нулей, за которыми идут а2 единиц и т.д.

Выписывая значения полинома / в лексикографическом порядке от наименьшего набора 0" до наибольшего набора 1", получаем таблицу значений Т(/) полинома /: двоичное слово длины 2П. Отношение лексикографического порядка будем обозначать -<(>.

Степенью слова ги назовем наименьшее сі, при котором существует булев полином / степени с/, таблица значений которого содержит слово ги: Г(/) = моїумі, мо,«і Є {0,1}*. Степень слова IV будем обозначать IV.

Через фи,и обозначим число вхождений слова IV в слово и, а через ^ш/ — количество вхождений слова IV в таблицу значений полинома /. В частности, т^о/, фі/ — количество нулей (соответственно — единиц) полинома /.

2. Вычисление степени слова

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

Пусть / — полином от переменных жі,..., хп. Разобьем переменные на две группы: щ = ж,;, 1 < г < п — к, и гц = 1 < г < к. Тогда / можно

записать в виде

Таблица значений T(f) разбивается на блоки длины 2к:

T

где Ти — таблица значений полинома /(и, v) при фиксированном и. Аффинная (линейная неоднородная) невырожденная замена переменных и приводит к перестановке блоков, не меняя самих блоков.

Лемма 1. Пусть а,Ь — два подряд идущие блока в T{f). Тогда существует такая аффинная замена переменных, что а = TQn-k-i0, Ъ = TQn-k-i1.

Доказательство. Аффинные автоморфизмы действуют транзитивно на упорядоченных парах несовпадающих точек пространства F!,1.

Теорема 1. Существует алгоритм, работающий за полиномиальное время, который по слову iv вычисляет степень degw.

Доказательство. Обозначим k = [~log2 |w|~| и рассмотрим разложение (2) относительно к последних переменных. Слово iv может попадать не более чем в два последовательных блока этого разложения. Лемма 1 позволяет считать без ограничения общности, что эти два блока — первые блоки разложения. Но это означает, что достаточно проверять вхождения слова w в таблицы значений полиномов от к + 1 переменной (при ограничении на подпространство степень полинома не возрастает).

Длина таблицы значений полинома от к + 1 переменной равна 2fc+1 = 0(|w|). У слова w есть не более 2fc+1 — |w| + 1 возможных мест вхождений в таблицу значений. Если зафиксировать пару ( г, d), где г — первая позиция вхождения слова iv в таблицу значений, a d — степень полинома, то условие существования такого полинома записывается в виде системы линейных уравнений на коэффициенты при его мономах (значение полинома зависит от его коэффициентов линейно). Размер системы полиномиален по |го|, а всего систем 0(|wI log |w|).

Таким образом, искомый алгоритм состоит в последовательном решении для всех возможных пар ( г, d) системы уравнений £( г, d), задающей условие вхождения слова iv в таблицу значений некоторого полинома из T(d,k + 1), начиная с ¿-го места. Минимальное d, при котором существует г, для которого система £(?', d) разрешима и будет степенью w.

Из приведенного в доказательстве анализа непосредственно извлекается следующее

Следствие 1. Любое слово iv входит в таблицу значений некоторого полинома из !F(degiv, [~log2 |w|~| + 1).

Следствие 2. Почти все двоичные слова длины п имеют степень Q (log п/ log log п).

Доказательство. Из следствия 1 получаем, что слов степени cl длины п существует не более 2n2(l"log2 "1+1) штук (произведение возможных положений слова длины п на число полиномов в J-(d, flog2 |n|] + 1)). Сравнивая с 2" — общим количеством слов длины п, получаем требуемую оценку.

Легко привести примеры слов, степень которых отличается от верхней оценки [~log2 |w|~| на константу.

"Утверждение 1. deg0fc10fc = d, где k = 2<i~1 + 2d~2 — 1.

Доказательство. Пусть 0fc10fc входит в таблицу значений T(f) полинома /. Рассмотрим разложение T(f) на блоки длины 2d_1. При любом расположении слова 0fc10fc относительно блоков найдется как блок вида 0r10s, так и блок О2 . Это означает, что коэффициент clc¡-i (и) в разложении (2) по d — 1 последним переменным не постоянен. Но тогда deg / > d.

3. Проверка вхождения слова в таблицу значений полинома

Как уже упоминалось, полином можно задавать существенно различными по длине записи представления способами. В любом случае, если значение полинома в заданной точке /(жх,... ,х„) вычисляется по описанию полинома [/] за полиномиальное время от длины описания, задача проверки вхождения заданного слова в таблицу значений заданного полинома принадлежит классу NP. Если не ограничивать степень полинома, то эта задача оказывается NP-полной уже для представления полинома списком мономов.

Итак, рассмотрим алгоритмическую задачу распознавания свойства ПОДСЛОВО, входом которой является некоторое двоичное слово IV и список мономов А,

А = {(с41}, а(21},..., а^),..., (a[m\ а{2т),..., а^т))}.

Ответом в задаче является «да», если слово w входит таблицу значений полинома

/а(ж) =

аЕ А

и «нет» в противном случае.

Теорема 2. Задача подслово NP-полма.

Доказательство. Сведем к задаче ПОДСЛОВО задачу 3-КНФ. Итак, пусть есть некоторая 3-КНФ С {и і,...Будем считать без ограничения общности, что эта КНФ содержит ровно 2к дизъюнкций (этого легко добиться простым повторением дизъюнкций, что не влияет на ответ в задаче КНФ). Дизъюнкции будем индексировать наборами к булевых переменных V = (l’l, .. -,vk).

Запишем каждую дизъюнкцию CVl„,Vk в виде многочлена третьей степени от переменных «і,..., ип:

CVl...Vk = ^c„

а

Для каждого а коэффициенты cv(a) можно записать в виде многочлена /а, степени к от переменных v. (Переход от таблицы значений многочлена к его представлению в виде суммы мономов состоит в решении системы линейных уравнений, поэтому осуществим за полиномиальное время.) Теперь введем еще одну булеву переменную г, упорядочим переменные в порядке «1, «2, • • • , Un, Z,V 1, • • • , l’k и рассмотрим многочлен

Fc{ui,U2,...,U„,Z,Vi,...,Vk) = {l + z) /а

Докажем, что КНФ С выполнима тогда и только тогда, когда слово I2 входит в T{Fc) Пусть С выполнима и (wj,..., и*) — выполняющий набор. Тогда подслово T(Fc), начинающееся с позиции и*00к и заканчивающееся в позиции и*01к, состоит из одних единиц, как следует из (4). Чтобы доказать обратное, заметим, что любой интервал от ul0к до и11к состоит из одних нулей в силу (5). Таким образом, вхождения I2 возможны лишь на интервалах от w00fc до и01к. Вхождение I2 в интервал такого вида равносильно выполнимости С на наборе и.

Если ограничить степень полинома константой, задача ПОДСЛОВО, скорее всего, перестает быть NP-полной. Во всяком случае, для нее есть алгоритм субэкспоненциальной трудоемкости.

Пусть (w,/) — вход задачи подслово, |гу| = то, / Є J-(d,n), d = 0(1). Аналогично доказательству теоремы 1 рассмотрим разложение (2) относительно к последних переменных, где к = |"log2 |ы>|]. Слово iv может попадать не более чем в два последовательных блока этого разложения, индексированных двумя последовательными двоичными словами «о, «і длины п — к. Каждый из блоков Тщ должен быть таблицей значений полинома fj степени < сі от к переменных. Слово iv задает значения t старших позиций таблицы Т(/о) и m—t младших позиций таблицы T(/i). Обозначим

через г длину общего левого подслова у для слов ио,и\. Тогда щ = у01“, «1 = г/10“, а = п — к — г — 1.

Если зафиксировать г, t, то коэффициенты полиномов /г; станут некоторыми полиномами от у степени не выше (1. Эти полиномы легко строятся по /, го, г, t. Всего таких коэффициентов не более 2ка (два полинома из Т((1,к)). Поэтому условие вхождения слова IV в Т(/) при указанных значениях параметров г, t задается системой из не более чем 2ка уравнений степени не выше с1 на г булевых переменных

• • • ? У г) = Ъ], 1 < ] < ^тах ^ 2/с

Разрешимость такой системы равносильна тому, что полином

Р{у) = \\icjiy) + Ъз + I)

3

не равен тождественно 0. Полином не равняется тождественно нулю тогда и только тогда, когда хотя бы один из коэффициентов при его мономах не равен 0. Раскрытие скобок в (6) дает 0(гмк ) слагаемых, коэффициенты при мономах для -Р(у) получаются из них приведением подобных. Трудоемкость этой операции п°^ое<11Ш1), то есть субэкспоненциальна по длине входа задачи (напомним, что с1 = 0(1)).

Заметим также, что возможных значений параметров г, t не более (п — т)т. Таким образом, доказано

"Утверждение 2. Существует алгоритм проверки вхождения слова IV в таблицу значений полинома степени с1 трудоемкости п°^1оё 1Ш1).

Особняком стоит случай с1 = 2. В этом случае незначительной модификацией приведенного выше рассуждения можно получить полиномиальный алгоритм проверки вхождения слова.

"Утверждение 3. Существует полиномиальный алгоритм проверки вхождения слова IV в таблицу значений полинома степени 2.

Доказательство. В случае полинома степени 2 степени с^(у) из системы (6) не превосходят 2. Более того, квадратичные части у всех с^{у) совпадают (это сумма мономов степени 2 исходного полинома /, составленных из первых г переменных). Поэтому система (6) равносильна системе из одного квадратичного уравнения и нескольких линейных. Проверку разрешимости такой системы можно провести за полиномиальное время. Действительно, найдем базис в подпространстве, задаваемом линейными уравнениями системы, и перепишем в этом базисе единственное квадратичное уравнение. Получим некоторый полином степени 2, заданный набором мономов. Проверка равенства нулю такого полинома выполняется легко.

Всего нужно проверить разрешимость не более чем (п— |гу|)|гу| таких систем. Таким образом, получаем полиномиальный алгоритм проверки вхождения слова IV в таблицу значений полинома степени 2.

4. Последовательное порождение вхождений слова

Под алгоритмом последовательного порождения вхождений слова IV в таблицу значений полинома / мы понимаем такой алгоритм, который получает на вход число р Є [0..2П] и выдает число А{р) Є [0..2П] по правилу: Л(0) указывает на номер первой позиции первого в лексикографическом порядке вхождения IV в Т(/) или равен 0, когда вхождений нет; если р — номер первой позиции некоторого вхождения IV в Т(/), то А{р) — номер первой позиции следующего в лексикографическом порядке вхождения IV в Т(/) или 0, когда р — номер первой позиции последнего вхождения; во всех остальных случаях А{р) = 0.

Оказывается, что последовательное порождение вхождений сводится к задаче проверки существования вхождения. Это сведение основано на следующей лемме, которая уже по существу неявно использовалась выше. Сейчас нам будет удобно называть F2 кубом (булев куб) и называть под-кубами подпространства F2, задаваемые уравнениями ж,; = сц, ж,;+і = а,:+і, ...хк = 0,1:, 1 < і < к < п. Порядок переменных здесь такой же, какой задает рассматриваемый лексикографический порядок на ¥%.

Лемма 2. Любой отрезок лексикографического упорядочения ¥% [а, Ь] = {ж : а ~<с ж -<(> 6} представляется в виде дизъюнктного объединения < 2п + 2 подкубов.

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

Без ограничения общности можно считать, что а лежит в первой половине, а Ь — во второй, поскольку и первая, и вторая половины лексикографического порядка — лексикографические порядки на кубе меньшей размерности. Но тогда [а, Ь] = [а, 2П~1 — 1] и [2"_1, Ъ\.

Поскольку обращение лексикографического порядка совпадает с лексикографическим порядком, получающимся после преобразования

(которое сохраняет множество подкубов), то осталось проверить, что [0, а] разбивается на < п + 1 кубов. Пусть jl,... , js — индексы единиц в записи а. Обозначим

Сіі = {ж : хк = ак, при к < х.и = 0}.

Это подкуб, а из определения лексикографического порядка сразу следует, что [0, а] = и|=1<5,: и [а, а] (если ж -<<> а и ж ф а, то в некоторой позиции,

на которой в а стоит единица, в х стоит 0; до этой позиции а и х должны совпадать, а что стоит после этой позиции — неважно).

Обозначим через 1(ги, /) предикат вхождения слова ги в Т(/).

Теорема 3. Существует алгоритм последовательного порождения вхождений слова IV в Т(/), / Є 3-(<1,п), обращающийся к оракулу I и работающий за полиномиальное время. Количество обращений к оракулу 0(п2), на каждом, обращении запрашивается X(IV, д), где степень и число переменных д не превосходят сі и п соответственно.

Доказательство. Очевидно, что последовательное порождение вхождений сводится к нахождению первого в лексикографическом порядке вхождения слова IV в отрезок [р+ 1, 2П] таблицы значений. Поэтому опишем алгоритм построения первого вхождения в произвольный отрезок [а, Ь\.

Алгоритм состоит в двоичном поиске с обращением к процедуре проверки вхождения IV в каждую из частей разбиения. Разобьем отрезок [а, Ь] на два по возможности равных отрезка [а, с], [с, Ь\. Проверим вхождение IV в [а, с]. Если вхождение есть, рекурсивно применим алгоритм к отрезку [а, с]. Если вхождения нет, сделаем вначале |гу| — 1 проверку возможных вхождений IV на границе отрезков разбиения. Если такие вхождения есть, то алгоритм заканчивает работу, выдавая первое из них. В противном случае алгоритм рекурсивно применяется к отрезку [с, Ь\. Нетрудно видеть, что алгоритм обращается не более 2п раз к процедуре вхождения слова IV в отрезок, а в остальном работает за полиномиальное время.

Процедура проверки вхождения слова в отрезок [а, Ь] использует лемму 2. Разобьем отрезок на подкубы в соответствии с леммой 2. Проверим вхождения IV на границах подкубов. Таких проверок не более < (2п + 1)(|гу| — 1) проверок Если вхождений не найдено, найдем для каждого под-куба разбиения ограничение / на этот подкуб (и степень, и число переменных при этом не возрастают) и проконсультируемся с оракулом I по поводу вхождений IV в эти подкубы.

Общее число обращений к оракулу, как нетрудно видеть, 0(п2).

У леммы 2 и теоремы 3 есть несколько следствий, представляющих самостоятельный интерес.

Следствие 3. Существует полиномиальный алгоритм, который по полиному /, представленному списком, м.оном.ов, и точке х определяет наибольший отрезок [а, Ь] в лексикографическом, порядке, который содержит х и на котором, полином, постоянен (/|[а.,6] = /(ж))-

Доказательство. По списку мономов полинома легко построить список мономов его ограничения на любой подкуб.

По списку мономов легко проверить, является ли полином константой. Теперь осталось применить лемму 2 и метод деления пополам из доказательства теоремы 3.

Следствие 4. Для любого двоичного слова ги, |гу| = 0(1) , и полинома степени й = 0(1) существует полиномиальный алгоритм последовательного порождения подслое ги, входящих в таблицу значений /.

Этот результат — прямое следствие утверждения 2 и теоремы 3. Отдельно можно отметить частный случай этого утверждения.

Следствие 5. Существует полиномиальный алгоритм, последовательного порождения нулей полинома.

5. Подсчет кратности вхождения слова для многочленов степени 2 и 3

Начнем с некоторых предварительных замечаний. При подсчетах часто удобнее использовать разность количества нулей и единиц булева полинома

Д/ = #о/-#1/= Е

Количество нулей однозначно восстанавливается по Д(/) с учетом равенства #о/ + #1/ = 2П.

Приведем некоторые простые свойства А/. Во-первых, эта величина не меняется при невырожденных аффинных преобразованиях ¥%. Во-вторых, при добавлении константы А/ меняет знак:

Д

Лемма 3. Пусть С: ¥% —> 1^2 — линейный функционал на ¥%, отличный от константы. Тогда АН = 0.

Доказательство. Аффинной заменой можно привести I к виду 1(х) = х\. Для такого функционала утверждение очевидно.

Очевидна следующая лемма.

Лемма 4. Пусть ^^2—^2 — линейный функционал на ¥%, отличный от константы. Тогда А/ = А/|((Ж)=0 + А/|((Ж)=1.

Из формулы (9) сразу следует

Лемма 5. Пусть /(ж, у) = д(х) + 1г(у). Тогда А/ = Ад  А/г.

Хорошо известно, что эти свойства, наряду с теоремой Диксона (см. [4]), позволяют построить полиномиальный алгоритм подсчета А/ (а, следовательно, и фо/) Для квадратичных функций (degf = 2).

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

см

Используя лемму 5, легко выписать в явном виде Дс^:

Доказательство теоремы Диксона конструктивно и по нему непосредственно строится полиномиальный алгоритм приведения к канонической форме. Итак, справедливо

"Утверждение 4. Существует полиномиальный алгоритм определения #о/ при / = 2.

Теорема 4. Существует полиномиальный алгоритм, который по полиному /, deg / = 2, и слову IV вычисляет фи,].

Доказательство. Нужно применить утверждение 4 и рассуждение, приведенное в доказательстве утверждения 3. Вхождения IV в Т(/) параметризуются решениями совокупности < (п — |гу|)|гу| систем (6), которые, как указано в доказательстве утверждения 3, находятся во взаимно однозначном соответствии с нулями некоторой квадратичной функции.

Замечание 1. Используя теорему 4 и метод двоичного поиска, описанный в доказательстве теоремы 3, м.ожно построить полиномиальный алгоритм, который по к, гу, /, / = 2, строит к-е вхождение слова IV

Задача определения Д/ для / € Т(3, п) алгоритмически трудна. Уже определение знака Д/ в этом случае оказывается полной в классе РР [8]. Класс РР — максимальный класс введенной Феннером, Фортнау и Курцем [7] иерархии перечислительной сложности. Полноту здесь нужно понимать как полноту относительно полиномиальных сводимостей между частично определенными предикатами.

Обозначим через ¿>(гу) задачу вычисления по полиному степени 3 кратности вхождения слова IV в таблицу значений этого полинома. Будем называть задачу трудной, если к ней сводится по Тьюрингу класс РР, и простой, если для задачи есть полиномиальный алгоритм. Из вышесказанного следует, что ¿>(0), 5(1) — трудные задачи.

если в= 0

иначе.

в Т(Л.

Заметим, что трудность или простота задач ¿>(ад), ¿>(ад + 1) и ¿>(гу 1) (гу-1 — слово, записанное в обратном порядке) совпадают. Действительно,

#ш/ = #ш+1

где И — обращающее лексикографический порядок преобразование (8).

Теорема 5. Существует полиномиальный алгоритм, который по полиному / степени 3 вычисляет #01/ + #ю/-

Доказательство. Нам нужно посчитать, сколько раз меняется значение полинома при переходах вида

IV1 = гиО 1 — • 1 ^ гу2 = гу10 0, к = 0,..., п — 1.

А: А:

Разность значений полинома в точках г«х и гу2 является полиномом второй степени от IV. Действительно, после подстановки констант мономы третьей степени зависят только от переменных IV и входят одинаковым образом в /(г«1) и /(ад2).

Для завершения доказательства осталось применить утверждение 4.

Теперь заметим, что #01/ = #ю/ +£-(/), где Е{/) — некоторая величина (краевой эффект), определяемая за полиномиальное время по начальному и конечному куску Т(/) длины, равной сумме длин слов, входящих в указанное равенство (в данном случае можно сказать точнее, но это несущественно). Для равенств с точностью до таких «малых эффективных» добавок будем использовать знак Таким образом,

#01/~#ю/.

Поэтому ¿>(01) (и ¿>(10)) — легкие задачи.

С другой стороны, фо ~ #оо + #01, поэтому 5(00) — трудная.

Полная классификация трудных и простых задач 5(IV) не построена. Неизвестно также, все ли задачи ¿>(ад) либо простые, либо трудные (даже по модулю разумных сложностных гипотез). Мы приведем некоторые предварительные наблюдения.

Во-первых, если IV > 3, то Я(ю) — простая (нужно писать 0, не читая входа).

Во-вторых, имеется довольно сильное достаточное условие трудности задачи £(ю). Пусть / € ^”(3, к) таков, что IV содержится в Т(/). Обозначим

« = #ш/, & = #ш(/ + 1), с = #ш/, с1 = #ш(/+1), а0 = #ш/, Ъ0 = #ш(/ + 1), где

/(Ж0,Ж1,...,ЖП) = /(жь...,жп),

/(ж0, х1,..., хп) = х0 + /(жь ..., хп).

Назовем полином / подходящим, для ги, если

а — ао ф Ь — Ьо-

Лемма 6. Если для IV существует подходящий полином,, то задача 5 (гу) — трудна.

Доказательство. Для произвольного полинома д(щ,.. . ,«,,,) рассмотрим полином

{9 Ш /)

Подсчитывая вхождения IV в пары соседних блоков длины 2к, вычитая пересечения и учитывая равенства #0/ ~ #00/+#01/ и #1/ ~ #ю/+#п/, получаем

#ш(<7 Ш /) ~ #оод ^#119 “Ь с#01д + <¿#10д — аофод — Ьо#1д ~

~

Если мы имеем оракул для Б(ю) и выполнено (16), то мы получаем для чисел #оод и #11 д систему из двух линейных уравнений с правыми частями, которые могут быть вычислены за полиномиальное время при обращении к оракулу Б{ги) (второе уравнение имеет вид #оод + #п<7 ~ 2П — #01 д — #юд). Таким образом мы можем найти #оод, что и доказывает трудность 5 (IV).

Простой и удобный в применении частный случай (16) формулируется так: IV входит в Т(/), но не входит в Г(/ + 1).

Приведем некоторые вычисления с использованием леммы 6. Для начала рассмотрим задачи 5(0Г). Они все трудные. Действительно, возьмем такое число к, что

2к~3 <г <7 - 2к~3.

Тогда полином /(жьжг,    тхк) = Х1Х2Х3 будет подходящим для 0Г. Действительно, первое неравенство в (19) гарантирует, что #о*-/+1 = 0, а второе гарантирует, что #сг/ > 0.

Задача ¿>(001) также трудная, потому что

#001 (Ж1 + 1)Х2 = #001(ООЮ) = 1 > 0,

#001 ((^1 + 1)Х2 + 1) = #001(11011101) = 0.

Отсюда можно заключить, что все задачи ¿>(гу), |ад| =3, — трудные. Из равенства #01 ~ #оо1 + #Ю1 заключаем трудность 5(101). Остальные слова

длины 3, в которые входят и 0, и 1 (для О3 и I3 трудность уже установлена), эквивалентны рассмотренным в силу (13): ¿>(010) равносильна ¿>(101), а ¿>(100), <5(011), <5(110) равносильны <5(001).

Рассмотрим еще слова длины 4. Для О4 и I4 трудность уже установлена. Полином с таблицей значений 00101111 (любой полином от трех переменных имеет степень не выше 3!) удовлетворяет условиям

#ш

для всех подслов длины 4, т.е. для w € {(0010), (0101), (1011), (0111), (1111)}. Отсюда получаем трудность задач <5(w) для всех слов длины 4, за исключением двух эквивалентных пар (1100, 0011) и (0110, 1001). Подходящим для 0110 будет полином с таблицей значений 11000110, так как

#опо

Для слова 1100 удобно рассмотреть другой вариант применения условия (16): для полинома с таблицей значений 0612 во введенных выше обозначениях получаем а = 1, а о = 0, Ъ = Ъц = 0.

Разобранные примеры позволяют предположить справедливость гипотезы: если для слова w длины больше 2 нет подходящего полинома, то deg tv > 3.

Литература

[1] Вялый М.H., Леонтьев В.К., Осетров М.В. Монотонные булевы полиномы // Дискретный анализ и исследование операций. Серия 1, том 9, N 4, 2002. С. 41-49.

[2] Леонтьев В.К. О некоторых задачах, связанных с булевыми полиномами // ЖВМиМФ, Т. 39, N 6, 1999. С. 1045-1054.

[3] Леонтьев В. К., Морено О. О нулях булевых полиномов // ЖВМиМФ, т. 38, N 9, 1998. С. 1606-1613. *

[4] Р. Лпдл, X. Нпдерейтер. Конечные поля. М.: Мир, 1989.

[5] Мак-Вильямс Ф.Дж., Слоан Н. Дж. А. Теория кодов, исправляющих ошибки. М.: Связь. 1979.

[6] EherenfeuchtA., KarpinskiM. The computational complexity of (XOR,AND)-counting problems. Preprint. Bohn: Iniv. Bohn. 1989.

[7] FennerS., FortnowL., IvurtzS. Gap-definable counting classes // J. of Comp, and Sys. Sei. 1994. V. 48. P. 116-148.

[8] VyalyiM. A comparison of zeroes and ones of a boolean polynomial. 2001. LANL eprint: cs.CC/0111052.