Алексеев В.Б. Лекции по дискретной математике. ВМК, 2004. Электронный ресурс (1083731), страница 7
Текст из файла (страница 7)
Определение 7. Будем говорить, что схема реализует систему функций, реализуемых в ее выходах.
Определение 8. Сложностью схемы из функциональных элементов называется число функциональных элементов в схеме.
В дальнейшем по умолчанию будем подразумевать под базисом функциональных элементов систему . Так как все эти функции симметричны относительно своих переменных, то дуги, входящие в каждую вершину, можно не упорядочивать.
Пример. Полусумматор. Пусть v и v1 — выходы на рисунке, ;
. Сложность (число элементов) полусумматора равна 4.
В дальнейшем при построении схем ячейку полусумматора будем обозначать просто
Пусть есть 2 n-разрядных числа, и требуется найти их сумму (в дальнейших обозначениях xi, yi — разряды чисел, а qi — единицы переноса).
При i = 1, 2, …, n – 1 задача решается системой функций
Таким образом, ячейку сумматора можно построить следующим образом:
где fv= (x y) q, fv = xy (x y) · q = xy (x y) · q = m (x, y, q). Ячейку сумматора будем обозначать 1 и в дальнейшем в схемах подставлять вместо ячейки сумматора символ 1 с тремя входами (x, y, z) и двумя выходами (z, q).
Заметим, что сложность схемы, реализующей ячейку сумматора равна L (1) = 9. Очевидно, zn = xn yn, qn – 1 = xnyn, z0 = q0.
§23. Сумматор. Верхняя оценка сложности сумматора.
Вычитатель
Определение 1. Сумматором Sn порядка n называется схема с 2n входами x1, x2, …, xn, y1, y2, …, yn и n + 1 выходом z0, z1, z2, …, zn такая, что .
Теорема 1. Существует схемный сумматор порядка n в базисе {, &, } с числом элементов 9n – 5.
Доказательство. Построим искомый схемный сумматор. Для этого возьмём одну ячейку полусумматора, содержащую четыре элемента, и n – 1 ячейку сумматора, каждая из которых содержит девять элементов. Построим из этих частей сумматор.
Вычислим сложность построенной схемы: L (Sn) = 9L (1) + L () =
= 9(n – 1) + 4 = 9n – 5. Теорема доказана.
Определение 2. Вычитателем Wn порядка n называется схема с 2n входами x1, x2, …, xn, y1, y2, …, yn и n выходами z1, z2, …, zn такая, что при
.
Теорема 2. Существует схемный вычитатель порядка n в базисе {, &, } с числом элементов 11n – 5.
Доказательство. Заметим предварительно, что
Действительно,
Тогда вычитатель реализуется схемой
и его можно построить, используя 2n отрицаний и 1 сумматор порядка n. При этом L (Wn) = 2n + L (Sn) = 2n + (9n – 5) = 11n – 5. Так как , то
, и выход вычитателя определен. Теорема доказана.
§24. Метод Карацубы построения схемы для умножения, верхняя оценка её сложности
Определение 1. Умножителем Mn порядка n называется схема с 2n входами x1, x2, …, xn, y1, y2, …, yn и 2n выходами z1, …, z2n такая, что . При этом
.
Определение 2. Через M (n) обозначим наименьшую сложность умножителя порядка n в базисе {, &, }.
Утверждение. Существует схема из функциональных элементов для умножения n-разрядного числа X на 1-разрядное число y с числом элементов n.
Доказательство. Действительно, если X = |(x1, x2, …, xn)| и Xy =
= Z = |(z1, z2, …, zn)|, то zi = xiy для всех i = 1, 2, …, n. Следовательно, для реализации такой схемы понадобится ровно n элементов, реализующих конъюнкцию. Утверждение доказано.
При умножении двух n-разрядных чисел X и Y «в столбик» можно n раз умножить X на 1-разрядное число (всего n2 конъюнкций) и затем n – 1 раз сложить числа длиной не более 2n. Для реализации такой схемы необходим также n – 1 сумматор порядка 2n. Согласно теореме 1, сложность сумматора порядка 2n равна L (S2n) = 9 · 2n – 5 = 18n – 5, и сложность подобного умножителя составит n2 + (n – 1) · (18n – 5) =
= 19n2 – 23n + 5. Такой алгоритм (схема) имеет сложность по порядку n2. Следующая теорема показывает, что такой алгоритм умножения «в столбик» не оптимален по порядку.
Лемма 1. Существует такая константа C1 > 0, что
M (n + 1) M (n) + C1 n
для всех n.
Доказательство. Пусть требуется перемножить два (n + 1)-раз-рядных числа и
. Тогда
Поэтому для вычисления достаточно использовать умножитель Mn со сложностью M (n) для вычисления XY, 2n элементов конъюнкции для вычисления x0Y и y0X, 1 элемент конъюнкции для вычисления x0y0 и 3 сумматора порядка не более 2n + 2, так как
. Отметим, что числа x0y0, x0Y и y0X надо подавать на сумматоры со сдвигом, одновременно подавая на младшие разряды 0. При этом 0 можно предварительно получить подсхемой с 2 элементами, реализующей
. Так как сложность каждого сумматора можно сделать не более 9(2n + 2), а сложность Mn равна M (n), то сложность полученной схемы будет не больше, чем M (n) + C1n для некоторой константы C1. Лемма доказана.
Лемма 2 (основная) [Карацуба А. А.]. Существует константа C2 такая, что
M (2n) 3M (n) + C2n
для всех n.
Доказательство. Пусть нужно перемножить два 2n-разрядных числа и
. Разобьём их на части, содержащие по n разрядов:
Тогда = X1·2n + X2,
= Y1·2n + Y2 и
= X1Y1 · 22n + (X1Y2 + X2Y1) · 2n + X2Y2 =
= X1Y1 · 22n + [(X1 + X2)(Y1 + Y2) – X1Y1 – X2Y2] · 2n + X2Y2.
Так как X1Y2 + X2Y1 0, то при вычитании в квадратной скобке не возникнет отрицательных чисел. Таким образом, схему для умножения можно построить, используя два умножителя Mn с числом элементов M (n) в каждом для вычисления X1Y1 и X2Y2, умножитель Mn+1 с числом элементов M (n + 1) для вычисления (X1 + X2)(Y1 + Y2), 4 сумматора порядка не более 4n (так как
) и два вычитателя порядка 2n + 2. В некоторых сумматорах опять на младшие разряды надо подавать 0, который реализуем подсхемой с 2 элементами:
, где x — любая входная переменная. Для построения схемы M2n с учётом леммы 1 получим для некоторых констант C и C2:
M (2n) 2 M (n) + M (n + 1) + Cn 3 M (n) + C1n + Cn = 3 M (n) + C2n.
Лемма доказана.
Лемма 3. Существует такая константа C3 > 0, что для любого натурального k верно
M (2k) C33k.
Доказательство. Положим . Тогда из леммы 2 имеем
и
для некоторой константы C3, поскольку сумма в квадратных скобках не превосходит сумму 2 бесконечно убывающей геометрической прогрессии с первым членом и знаменателем
. Таким образом,
и M (2k) C3 3k. Лемма доказана.
Теорема 3. Существует схемный умножитель в базисе {, &, } с числом элементов
Доказательство. Пусть n — любое натуральное число и n>1. Тогда существует натуральное k такое, что 2k–1 < n 2k. Для умножения n-разрядных чисел будем использовать схему с числом элементов M (2k), подавая на старшие 2k – n разрядов обоих сомножителей 0, предварительно реализованный подсхемой из 2 элементов. Тогда имеем, исходя из леммы 3
для некоторой константы C. Теорема доказана.
Замечание. Существует практически применимый метод Шёнхаге-Штрассена умножения с оценкой сложности O (n log n · log log n).
§25. Дешифратор. Асимптотика сложности дешифратора. Верхняя оценка сложности реализации произвольной функции алгебры логики
Определение. Дешифратором Qn порядка n называется схема из функциональных элементов с n входами x1, x2, …, xn и 2n выходами такая, что если |x1x2…xn| = i, то zi = 1 и zj = 0 при i j:
Заметим, что если i = (i1, i2, …, in)2, то .
Лемма 4. Существует дешифратор Qn с числом элементов, не превосходящим n2n + 1.
Доказательство. Для реализации каждой zi достаточно взять ровно n–1 конъюнкций и не более n отрицаний, то есть всего менее, чем 2n функциональных элементов. Всего различных конъюнкций ровно 2n, и сложность дешифратора не превосходит n2n + 1. Лемма доказана.
Теорема 4. Сложность минимального схемного дешифратора порядка n не меньше, чем 2n и асимптотически не больше, чем .
Доказательство. 1) Поскольку у дешифратора Qn ровно 2n выходов, на которых реализуются различные функции, не равные входным переменным, сложность минимального дешифратора не меньше, чем 2n.
2) Докажем существование дешифратора со сложностью . Разобьём набор входных переменных x = (x1, …, xn) на поднаборы x = (x1, …, xk) и x = (xk + 1, …, xn), где k — некоторый параметр и 1 k n – 1. Пусть Q и Q —функциональные дешифраторы порядка k и n – k от базовых переменных x и x, а и — соответствующие им схемные дешифраторы, построенные по лемме. Легко видеть, что любую конъюнкцию Qn [i], 1 i 2n, можно представить в виде Qn [i] = Q [j]·Q [l], где i = 2n – k(j – 1) + l и 1 j 2k, 1 l 2n – k. Дешифратор порядка n от базовых переменных x содержит дешифраторы и в качестве подсхем и реализует каждую функцию алгебры логики Qn [i], 1 i 2n, с помощью одного функционального элемента &, входы которого присоединены к выходам и в соответствии с формулой Qn [i] = Q [j]·Q [l]. Из построения следует, что L () = 2n + L () + L () 2n + k·2k + 1 + (n – k)2n – k + 1, и поэтому при
получим:
. Теорема доказана.
Следствие. Для любой функции алгебры логики f(x1,…,xn) существует реализация её схемой из функциональных элементов в базисе {,&, } со сложностью, не превосходящей
.
Доказательство. Если f 0, то реализуем . Если f 0, то