Россия |
Реализация булевых функций с помощью логических схем
Примеры схем
Сложение по модулю 2
Рассмотрим схему S+ на рис. 2.2.
В соответствии с определением вершины этой схемы реализуют следующие функции:
, , , .
Таким образом, схема S+ реализует (в вершине d ) функцию + сложения по модулю 2.
Из приведенного выше примера следует, что L(S+)=4 и L(+) <= 4.
Используя схему S+, нетрудно построить схему Sodd для реализации линейной функции-суммы n аргументов по модулю 2 odd(X1,X2,..., Xn)= X1 +X2 +... + Xn (см. рис. 2.3).
На этой схеме прямоугольники S+(1), S+(2), ... ,S+(n) содержат копии схемы S+. При этом входами S+(1) являются переменные x1 и x2, а входами S+(i+1) являются выход схемы S+(i) и переменная xi+1. По индукции легко показать, что вершина d в S+(i) реализует функцию (x1 + x2 + ... + xi+1). Таким образом, нами установлена
Теорема 2.2. Существует схема Sodd, реализующая функцию odd(X1,X2,..., Xn)= X1 +X2 +... + Xn со сложностью L(Sodd)= 4 (n-1).
Сумматор
Сумматором порядка n называют схему, вычисляющую результат сложения двух n -разрядных двоичных чисел и . Пусть ( здесь - соответствующие двоичные разряды этих чисел).
Сумматор должен вычислять набор из (n+1) -ой результирующей функции:
задающих соответствующие разряды суммы c.
Обозначим через pi бит переноса из (i-1) -го разряда в i -ый. Тогда нетрудно видеть, что при i =0
c0 = a0 + b0 и ,
а при 1 <= i <= n-1
ci= pi + ai + bi и .
Старший разряд c совпадает с последним переносом: cn=pn.
Рассмотрим теперь построенную выше схему S+ как схему, вычисляющую набор из двух функций: (в вершине a ) и x+y (в вершине d ). Используя два экземпляра этой схемы S+(1) и S+(2), можно легко реализовать схему одноразрядного сумматора SUM1 (см. рис. 2.4) , которая имеет три входа ai, b_ i и pi ( 1 <= i <= n-1 ) и вычисляет ci и pi+1.
Действительно, из построения следует, что в вершине p этой схемы вычисляется функция . Из представленной схемы видно, что сложность одноразрядного сумматора L(SUM1)= 9.
Теперь из S+ и одноразрядных сумматоров SUM1 соберем схему SUMn для n -разрядного сумматора.
Таким образом мы установили следующее утверждение.
Теорема 2.3.
Для каждого n >= 1 cуществует схема SUM, реализующая операцию суммирования двух n -разрядных двоичных чисел и имеющая сложность L(SUMn)= 9n -5.
Замечание Логические схемы интенсивно исследовались 50-х-70-х годах прошлого столетия. В частности, К. Шеннон и О.Б. Лупанов установили оценки сложности схем для булевых функций от n аргументов. Оказалось, что любую такую функцию можно реализовать со сложностью не большей (по порядку) 2n/n и что "почти все" они имеют не меньшую сложность. При этом до сих пор не известна ни одна последовательность "конкретных" функций fn, сложность которых по порядку превосходила бы линейную функцию.
Задачи
Задача 2.1. Докажите пункт (2) теоремы 2.1.
Задача 2.2. Докажите, что минимальная схема для сложения имеет сложность L(+) = 4.
Задача 2.3. Используя схему SUMn, постройте схему, реализующую операцию вычитания двух n -разрядных двоичных чисел: d =a - b (при условии, что a >= b ). Оцените сложность полученной схемы.
Задача 2.4. Определите глубину схем S+, Sodd, SUM1 и SUMn.
Задача 2.5. Два игрока независимо выбирают одно из четырех чисел от 0 до 3. Первый игрок выигрывает, если выбранные числа совпадают. Постройте схему, определяющую выигрыш 1-го игрока. Ее входы x1,x2 представляют число, выбранное 1-ым игроком, а y1,y2 - число, выбранное 2-ым игроком. Реализуемая функция F(x1,x2,y1,y2) равна 1 тогда и только тогда, когда x1=y1 и x2 =y2.
Задача 2.6. Постройте схему, определяющую результат голосования в комитете, состоящем из трех членов и председателя. В случае равенства голосов, голос председателя является решающим.
Задача 2.7. Пусть наборы аргументов булевой функции от трех аргументов упорядочены лексикографически, а ее значения задаются последовательностью 8 нулей и единиц. Постройте схемы, реализующие следующие функции.
- f1=(1111 1011),
- f2=(1001 1001),
- f3 =(0011 1001).