Схемы из функциональных элементов
Лемма. Пусть последовательность задана рекуррентной формулой , где
Пусть . Тогда последовательность монотонно возрастает и приближается к на расстояние за шагов. [Симметричное утверждение верно и при .]Идея доказательства: посмотрим на функцию вблизи точки и у краев отрезка. В точке производная больше , поэтому удаление от растет как геометрическая прогрессия, и точка перейдет какую-то фиксированную границу (например, ) не позднее чем за шагов. Затем потребуется шагов, чтобы дойти, скажем, до . В единице первая производная функции равна нулю, поэтому расстояние до единицы каждый раз примерно возводится в квадрат, и потому для достижения погрешности потребуется шагов (как в методе Ньютона отыскания корня). Всего получается шагов, что и требовалось.
На самом деле справедливо гораздо более сильное утверждение: существует схема размера и глубины , состоящая только из элементов И и ИЛИ, которая имеет входов и выходов и осуществляет сортировку последовательности нулей и единиц (это означает, что на выходе столько же единиц, сколько на входе, причем выходная последовательность всегда невозрастающая). Ясно, что средний бит выхода в такой ситуации реализует функцию большинства.
При кажущейся простоте формулировки единственная известная конструкция такой схемы (сортирующая сеть AKS, придуманная Айтаи, Комлошом и Сцемереди сравнительно недавно, в 1983 году) весьма сложна, и появление какой-то более простой конструкции было бы замечательным достижением.
Многие нетривиальные результаты теории алгоритмов можно переформулировать в терминах сложности каких-то булевых функций. Например, есть вероятностный алгоритм проверки простоты большого числа (применяемый в системах шифрования для проверки простоты чисел из нескольких тысяч цифр). Используя этот алгоритм, можно доказать такой факт: существует схема проверки простоты -битового числа (на вход подаются цифр, на выходе появляется единица, если число простое, и нуль, если число составное), размер которой ограничен полиномом от .
Вернемся к общим утверждениям о схемах и формулах. Мы уже говорили, что с точки зрения измерения размера схемы и формулы — это разные вещи (схемы экономичнее, так как в них одинаковые подформулы учитываются только один раз). Оказывается, что размер формулы можно связать с глубиной схемы.
Будем называть размером формулы число логических связок в ней. Мы предполагаем, что формула использует конъюнкции, дизъюнкции и отрицания, и в схемах будем использовать такие же элементы. Напомним, что размером схемы мы называли число элементов, а сложностью булевой функции — минимальный размер схемы, ее вычисляющей. Сложность функции обозначалась (точнее , где — набор разрешенных функциональных элементов, но сейчас мы договорились использовать конъюнкции, дизъюнкции и отрицания и опускаем индекс ).
Минимальный размер формулы, выражающей функцию , будем обозначать . Очевидно, . Более интересно, однако, следующее утверждение, связывающее размер схемы с глубиной формулы. Обозначим через минимальную глубину схемы, вычисляющей функцию .
Теорема 16. Имеют место оценки и (для некоторых констант и и для всех ). Другими словами, меры сложности и отличаются не более чем в константу раз.
Первая оценка очевидна: если мы скопируем повторяющиеся фрагменты схемы, чтобы развернуть ее в дерево, то глубина не изменится. Если она равна , то в полученном дереве будет не больше элементов и соответствующая формула имеет размер не более . (Напомним, что элементами являются конъюнкции, дизъюнкции и отрицания, и потому ветвление не больше .)
То же самое можно сказать индуктивно. Пусть глубина схемы равна . Выход схемы является выходом некоторого элемента. Тогда на его входы подаются булевы функции глубины не больше . По предположению индукции их можно записать формулами размера . Таких формул максимум две, так что общий размер не превосходит .
Вторая оценка сложнее. Если мы будем преобразовывать формулу в схему естественным образом (введя вспомогательную переменную для каждой подформулы), то глубина получившейся схемы может быть близка к размеру формулы, а не к его логарифму. Например, если формула имеет вид , то у нас получится цепочка элементов И, у которых каждый следующий подвешен к левому входу предыдущего, и глубина равна . Конечно, если использовать ассоциативность конъюнкции, скобки можно переставить и получить более сбалансированное дерево глубины примерно , как и требуется. Но как выполнить такое преобразование в случае произвольной формулы?
Обозначим данную нам формулу через . Выберем у нее некоторую подформулу (как именно, мы объясним позже). Рассмотрим формулу , которая получится, если вместо подставить (ложь), а также формулу , которая получится, если подставить . Легко понять, что равносильна формуле . Если теперь удастся заменить формулы схемами глубины не больше , то для получится схема глубины не больше .
Такое преобразование полезно, если все три формулы имеют заметно меньший размер, чем исходная формула .
Лемма. У любой формулы размера (при достаточно больших ) есть подформула размера от до .
Доказательство. Каждая формула есть конъюнкция двух подформул, дизъюнкция двух подформул или отрицание подформулы. Начав со всей формулы, будем переходить к ее подформулам, на каждом шаге выбирая из двух подформул наибольшую. Тогда на каждом шаге размер убывает не более чем в два раза, и потому мы не можем миновать промежуток , концы которого отличаются втрое. (На самом деле тут есть небольшая неточность: размер формулы может убывать чуть быстрее, чем вдвое, так как размер формулы на единицу больше суммы размеров частей, но у нас есть запас, поскольку концы промежутка отличаются втрое, а не вдвое.) Лемма доказана.
Выбирая подформулу с помощью этой леммы, мы гарантируем, что размер всех трех формул не превосходит размера исходной формулы (подстановка нуля или единицы может только уменьшить размер формулы — некоторые части можно будет выбросить).
Применим ко всем трем формулам , и тот же прием, выделим в них подформулы среднего размера и так далее, пока мы не спустимся до формул малого размера, которые можно записать в виде схем как угодно. В итоге получится дерево с логарифмическим числом уровней, на каждом из которых стоят схемы глубины , а в листьях находятся схемы глубины .
Другими словами, индукцией по размеру формулы, выражающей некоторую функцию , легко получить оценку .
16. Определим глубину формулы как максимальное число вложенных пар скобок; для единообразия будем окружать отрицание скобками и писать вместо . Покажите, что при этом не получится ничего нового: минимальная глубина формулы, записывающей некоторую функцию , совпадает с минимальной глубиной схемы, вычисляющей .
Определение формульной сложности зависит от выбора базиса. Оказывается, что здесь (в отличие от схемной сложности) выбор базиса может изменить более чем в константу раз.
17. Объясните, почему доказательство теоремы 7 не переносится на случай формул.
Так происходит с функцией (знак обозначает сложение по модулю ). Эта функция имеет формульную сложность , если сложение по модулю входит в базис. Однако в базисе И, ИЛИ, НЕ она имеет большую сложность, как доказала Б.А.Субботовская. Идея доказательства такова: если заменить случайно выбранную переменную в формуле с конъюнкциями и дизъюнкциями на случайно выбранное значение или , то формула упростится (не только эта переменная пропадет, но с некоторой вероятностью пропадут и другие). Если делать так многократно, то от формулы останется небольшая часть — с другой стороны, эта часть все равно должна реализовывать сложение оставшихся аргументов по модулю .
18. Докажите, что функция большинства может быть вычислена не только схемой, но и формулой полиномиального размера, содержащей только связки И и ИЛИ.
19. Докажите, что значения и для одной булевой функции и различных полных базисов полиномиально связаны: существует полином (зависящий от выбора базисов), для которого при всех . (Указание: использовать теорему 16.)