Опубликован: 24.04.2007 | Доступ: свободный | Студентов: 720 / 35 | Оценка: 4.60 / 4.30 | Длительность: 25:56:00
Специальности: Программист
Лекция 2:

Схемы из функциональных элементов

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >

Лемма. Пусть последовательность x_k\hm\in[0,1] задана рекуррентной формулой x_{k+1}=\varphi(x_k), где

\varphi(x)=3x^2-2x^3.
Пусть x_0\ge1/2+1/(2n). Тогда последовательность x_k монотонно возрастает и приближается к 1 на расстояние 2^{-n} за O(\log n) шагов. [Симметричное утверждение верно и при x_0\le 1/2-1/(2n).]

Идея доказательства: посмотрим на функцию вблизи точки 1/2 и у краев отрезка. В точке 1/2 производная больше 1, поэтому удаление от 1/2 растет как геометрическая прогрессия, и точка перейдет какую-то фиксированную границу (например, 0{,}51 ) не позднее чем за O(\log n) шагов. Затем потребуется O(1) шагов, чтобы дойти, скажем, до 0{,}99. В единице первая производная функции равна нулю, поэтому расстояние до единицы каждый раз примерно возводится в квадрат, и потому для достижения погрешности 2^{-n} потребуется O(\log n) шагов (как в методе Ньютона отыскания корня). Всего получается O(\log n)+O(1)+O(\log n) шагов, что и требовалось.

На самом деле справедливо гораздо более сильное утверждение: существует схема размера O(n\log n) и глубины O(\log n), состоящая только из элементов И и ИЛИ, которая имеет n входов и n выходов и осуществляет сортировку последовательности n нулей и единиц (это означает, что на выходе столько же единиц, сколько на входе, причем выходная последовательность всегда невозрастающая). Ясно, что средний бит выхода в такой ситуации реализует функцию большинства.

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

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

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

Будем называть размером формулы число логических связок в ней. Мы предполагаем, что формула использует конъюнкции, дизъюнкции и отрицания, и в схемах будем использовать такие же элементы. Напомним, что размером схемы мы называли число элементов, а сложностью булевой функции — минимальный размер схемы, ее вычисляющей. Сложность функции h обозначалась \size(h) (точнее \size_B(h), где B — набор разрешенных функциональных элементов, но сейчас мы договорились использовать конъюнкции, дизъюнкции и отрицания и опускаем индекс B ).

Минимальный размер формулы, выражающей функцию h, будем обозначать \fsize(h). Очевидно, \size(h)\hm\le\fsize(h). Более интересно, однако, следующее утверждение, связывающее размер схемы с глубиной формулы. Обозначим через \depth(h) минимальную глубину схемы, вычисляющей функцию h.

Теорема 16. Имеют место оценки \fsize(h)\le c_1^{\depth(h)} и \depth(h)\le c_2\log\fsize(h) (для некоторых констант c_1 и c_2 и для всех h ). Другими словами, меры сложности \depth и \log\fsize отличаются не более чем в константу раз.

Первая оценка очевидна: если мы скопируем повторяющиеся фрагменты схемы, чтобы развернуть ее в дерево, то глубина не изменится. Если она равна k, то в полученном дереве будет не больше 2^k-1 элементов и соответствующая формула имеет размер не более {2^k-1}. (Напомним, что элементами являются конъюнкции, дизъюнкции и отрицания, и потому ветвление не больше 2.)

То же самое можно сказать индуктивно. Пусть глубина схемы равна k. Выход схемы является выходом некоторого элемента. Тогда на его входы подаются булевы функции глубины не больше k-1. По предположению индукции их можно записать формулами размера 2^{k-1}-1. Таких формул максимум две, так что общий размер не превосходит 2(2^{k-1}-1)+1\hm=2^k-1.

Вторая оценка сложнее. Если мы будем преобразовывать формулу в схему естественным образом (введя вспомогательную переменную для каждой подформулы), то глубина получившейся схемы может быть близка к размеру формулы, а не к его логарифму. Например, если формула имеет вид (\ldots((p_1\land p_2)\land p_3)\land\dots
p_n), то у нас получится цепочка элементов И, у которых каждый следующий подвешен к левому входу предыдущего, и глубина равна {n-1}. Конечно, если использовать ассоциативность конъюнкции, скобки можно переставить и получить более сбалансированное дерево глубины примерно \log n, как и требуется. Но как выполнить такое преобразование в случае произвольной формулы?

Обозначим данную нам формулу через F. Выберем у нее некоторую подформулу G (как именно, мы объясним позже). Рассмотрим формулу F_0, которая получится, если вместо G подставить 0 (ложь), а также формулу F_1, которая получится, если подставить 1. Легко понять, что F равносильна формуле ((F_0 \land\lnot G)\lor (F_1\land G)). Если теперь удастся заменить формулы F_0, F_1, G схемами глубины не больше k, то для F получится схема глубины не больше k+3.

Такое преобразование полезно, если все три формулы F_1, F_0, G имеют заметно меньший размер, чем исходная формула F.

Лемма. У любой формулы размера n (при достаточно больших n ) есть подформула размера от n/4 до 3n/4.

Доказательство. Каждая формула есть конъюнкция двух подформул, дизъюнкция двух подформул или отрицание подформулы. Начав со всей формулы, будем переходить к ее подформулам, на каждом шаге выбирая из двух подформул наибольшую. Тогда на каждом шаге размер убывает не более чем в два раза, и потому мы не можем миновать промежуток [n/4, 3n/4], концы которого отличаются втрое. (На самом деле тут есть небольшая неточность: размер формулы может убывать чуть быстрее, чем вдвое, так как размер формулы на единицу больше суммы размеров частей, но у нас есть запас, поскольку концы промежутка отличаются втрое, а не вдвое.) Лемма доказана.

Выбирая подформулу G с помощью этой леммы, мы гарантируем, что размер всех трех формул F_0,F_1,G не превосходит 3/4 размера исходной формулы (подстановка нуля или единицы может только уменьшить размер формулы — некоторые части можно будет выбросить).

Применим ко всем трем формулам F_0, F_1 и G тот же прием, выделим в них подформулы среднего размера и так далее, пока мы не спустимся до формул малого размера, которые можно записать в виде схем как угодно. В итоге получится дерево с логарифмическим числом уровней, на каждом из которых стоят схемы глубины 3, а в листьях находятся схемы глубины O(1).

Другими словами, индукцией по размеру формулы, выражающей некоторую функцию h, легко получить оценку \depth(h)=O(\log\fsize(h)).

16. Определим глубину формулы как максимальное число вложенных пар скобок; для единообразия будем окружать отрицание скобками и писать (\lnot A) вместо \lnot A. Покажите, что при этом не получится ничего нового: минимальная глубина формулы, записывающей некоторую функцию f, совпадает с минимальной глубиной схемы, вычисляющей f.

Определение формульной сложности \fsize(h) зависит от выбора базиса. Оказывается, что здесь (в отличие от схемной сложности) выбор базиса может изменить \fsize(h) более чем в константу раз.

17. Объясните, почему доказательство теоремы 7 не переносится на случай формул.

Так происходит с функцией {p_1\oplus p_2\oplus\ldots\oplus p_n} (знак \oplus обозначает сложение по модулю 2 ). Эта функция имеет формульную сложность O(n), если сложение по модулю 2 входит в базис. Однако в базисе И, ИЛИ, НЕ она имеет большую сложность, как доказала Б.А.Субботовская. Идея доказательства такова: если заменить случайно выбранную переменную в формуле с конъюнкциями и дизъюнкциями на случайно выбранное значение 0 или 1, то формула упростится (не только эта переменная пропадет, но с некоторой вероятностью пропадут и другие). Если делать так многократно, то от формулы останется небольшая часть — с другой стороны, эта часть все равно должна реализовывать сложение оставшихся аргументов по модулю 2.

18. Докажите, что функция большинства может быть вычислена не только схемой, но и формулой полиномиального размера, содержащей только связки И и ИЛИ.

19. Докажите, что значения \fsize_1(h) и \fsize_2(h) для одной булевой функции h и различных полных базисов полиномиально связаны: существует полином P (зависящий от выбора базисов), для которого \fsize_2 (h) \le P(\fsize_1(h)) при всех h. (Указание: использовать теорему 16.)

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >