Схемы из функциональных элементов
Теорема 13. Существует схема умножения двух -разрядных чисел размера и глубины .
Начнем с такого замечания. Вычисляя произведение двух комплексных чисел
обычным способом, мы делаем четыре умножения. Но можно обойтись и тремя с помощью такого трюка: вычислить , и , а потом найти как разность .Аналогичный фокус можно проделать и для целых чисел. Разобьем -битовое число на две -битовые части, то есть представим его в виде . Теперь запишем произведение двух таких чисел:
Теперь видно, что достаточно найти три произведения , и , чтобы определить все три слагаемых в правой части равенства. Получается, что умножение двух -разрядных чисел сводится к трем умножениям -разрядных и к нескольким сложениям и вычитаниям. (На самом деле при умножении на сомножители могут быть -разрядными, но это не страшно, так как обработка лишнего разряда сводится к нескольким сложениям.)Для размера схемы, таким образом, получается рекурсивная оценка
из которой следует, что . В самом деле, для умножения -разрядных чисел требуется дерево рекурсивных вызовов глубины и степени ветвления . Заметим, что размер схемы в вершине пропорционален числу складываемых битов. При переходе от одного уровня к следующему (более близкому к корню) размер слагаемых растет вдвое, а число вершин уменьшается втрое, поэтому общее число элементов на этом уровне уменьшается в полтора раза. Таким образом, при движении по уровням от листьев к корню получается убывающая геометрическая прогрессия со знаменателем , сумма которой всего лишь втрое превосходит ее первый член. Остается заметить, что число листьев равно .Оценка глубины также очевидна: на каждом уровне мы имеем схему сложения глубины , а число уровней есть .
На этом мы завершаем знакомство со схемами из функциональных элементов, выполняющими арифметические операции. О них можно прочесть в главе 29 учебника Кормена, Лейзерсона и Ривеста [18] и в книге Ахо, Хопкрофта и Ульмана [1].
Рассмотрим теперь функцию "голосования"(majority).Она имеет нечетное число аргументов, и значение ее равно или в зависимости от того, какое из двух значений чаще встречается среди входов.
Теорема 14. Существует схема размера и глубины , вычисляющая функцию голосования.
На самом деле можно даже вычислить общее число единиц среди входов. Это делается рекурсивно: считаем отдельно для каждой половины, потом складываем. Получается логарифмическое число уровней. На верхнем уровне надо складывать числа размера , на следующем— размера и так до самого низа, где складываются однобитовые числа (то есть биты входа). Какой средний размер складываемых чисел? Половина вершин в дереве приходится на нижний уровень (числа длины ), четверть — на следующий (числа длины ) и т. д. Вспоминая, что ряд сходится, видим, что средний размер складываемых чисел есть и общий размер схемы есть . А общая глубина есть , так как на каждом из уровней стоит схема глубины .
Заметим, что хотя функция голосования монотонна, построенная схема ее вычисления содержит немонотонные элементы (поскольку операция сложения не монотонна). Мы уже говорили, что всякую монотонную функцию можно составить из конъюнкций и дизъюнкций. Для функции голосования есть очевидный способ это сделать: написать дизъюнкцию всех конъюнкций размера (напомним, что число входов предполагается нечетным). Однако при этом получится схема экспоненциального по размера.
Теорема 15. Существует схема размера и глубины , составленная только из элементов И и ИЛИ (с двумя входами), вычисляющая функцию голосования.
Для начала заметим, что ограничение на размер является следствием ограничения на глубину, так как элементы И и ИЛИ имеют только два входа и число элементов в схеме глубины есть .
Схема будет строиться из элементов большинства с тремя входами. (Каждый из них можно собрать из конъюнкций и дизъюнкций по формуле .) Выход схемы будет большинством из трех значений, каждое из которых есть большинство из трех значений и т. д. (рис. 2.3).
Продолжая эту конструкцию на уровнях, мы получим схему с входами. (Отметим, что эта схема не будет вычислять большинство среди своих входов — по той же причине, по которой результат непрямого голосования может отличаться от мнения большинства.) Но мы сделаем вот какую странную вещь: возьмем равным при достаточно большом коэффициенте пропорциональности (при этом число входов такой схемы будет полиномиально зависеть от ) и напишем на входах случайно выбранные переменные из данного нам набора . (Переменные, записываемые на разных входах, выбираются независимо.) Оказывается, что с ненулевой вероятностью эта схема будет вычислять функцию большинства среди , если константа достаточно велика. Следовательно, искомая схема существует.
Обратите внимание: нам удастся доказать существование интересующей нас схемы, не предъявив ее явно. (Такое использование вероятностных методов в комбинаторных рассуждениях часто бывает полезно.)
Итак, почему же схема с положительной вероятностью вычисляет функцию большинства? Это доказывается так: рассмотрим какой-то один набор значений на входах и докажем, что на этом конкретном наборе случайная схема выдает правильный ответ с вероятностью, очень близкой к единице (равной при очень малом ).
Если число настолько мало, что остается меньшим единицы даже после умножения на число возможных входов ( ), то получаем требуемое (каждое из событий имеет вероятность не меньше , значит их пересечение имеет вероятность не меньше ).
Итак, осталось оценить вероятность того, что случайная схема даст правильный ответ на данном входе. Пусть доля единиц среди всех входов равна . Тогда на каждый входной провод схемы подается единица с вероятностью и нуль с вероятностью (выбор случайной переменной дает единицу с вероятностью ), причем сигналы на всех входах независимы.
Если на трех входах элемента -большинства сигналы независимы, и вероятность появления единицы на каждом входе есть , то вероятность появления единицы на выходе есть . На следующих уровнях вероятность появления единицы будет равна График функции на отрезке (рис. 2.4) показывает, что при итерациях функции дисбаланс (отклонение от середины) нарастает и последовательность стремится к краю отрезка. Надо только оценить число шагов.
Если вначале единицы составляют большинство из аргументов (напомним, нечетно), то их как минимум , так что . Таким образом, начальный дисбаланс составляет как минимум . А в конце нам нужно приблизиться к краю отрезка на расстояние .
Итак, нам осталось доказать такую лемму (относящуюся скорее к математическому анализу):