Алексеев-Дискретная математика-4
.pdfОбъединяем эти схемы в одну (у них общие входы), добавляем вход , и добавляем элементы, реализующие формулу в правой части теоремы о разложении. Это выглядит так:
1 |
1 |
& |
−1
0 |
& |
Здесь |
1 |
и 0 |
– |
схемы, вычисляющие соответственно функции |
||
( , … , |
|
, 1) и ( , … , |
, 0). |
|||
1 |
−1 |
|
1 |
−1 |
|
Обозначим через 2( ) наибольшее число элементов в схеме, построенной этим способом для функции от переменных. Очевидно, «худшая» функция
(с наибольшим числом элементов в схеме) от переменных – это та, у
которой ( 1, … , −1, 1) и ( 1, … , −1, 0) – «худшие» функции от − 1 переменной. Схема для функции от переменных состоит из двух схем для
функций от − 1 переменной и еще четырех элементов. Получаем рекуррентное уравнение
2 = 2 2 − 1 + 4.
У нас есть также начальное значение 2 1 = 2. Решая, находим
2 = 3 ∙ 2 − 4.
8.3. Сумматор
Построим схему, вычисляющую сумму двух целых неотрицательных чисел, представленных -разрядными двоичными записями.
Пусть −1 … 1 и −1 … 1 – двоичные записи двух слагаемых (старшие разряды, как обычно, слева). Сумма может иметь на один разряд больше, пусть +1 … 1 – двоичная запись суммы.
Мы рассматриваем обычный алгоритм сложения «столбиком». При этом могут возникать переносы из младших разрядов в старшие. Введем переменные , = 1, … , , описывающие переносы: = 1, если при сложении -тых разрядов слагаемых образуется перенос в следующий разряд, в противном случае = 0. Заметим, что – это старший разряд суммы:= +1. Очередной разряд суммы зависит от соответствующих разрядов
слагаемых и от того, был ли перенос из предыдущего разряда. От этих же аргументов зависит появление переноса в следующий разряд. Таблица этих двух функций и есть главная часть описания алгоритма сложения. Вот эта таблица:
|
|
|
−1 |
|
|
|
|
|
|
|
|
0 |
0 |
0 |
|
0 |
0 |
|
|
|
|
|
|
0 |
0 |
1 |
|
1 |
0 |
|
|
|
|
|
|
0 |
1 |
0 |
|
1 |
0 |
|
|
|
|
|
|
0 |
1 |
1 |
|
0 |
1 |
|
|
|
|
|
|
1 |
0 |
0 |
|
1 |
0 |
|
|
|
|
|
|
1 |
0 |
1 |
|
0 |
1 |
|
|
|
|
|
|
1 |
1 |
0 |
|
0 |
1 |
|
|
|
|
|
|
1 |
1 |
1 |
|
1 |
1 |
|
|
|
|
|
|
Теперь представим обе функции формулами. Можно, например, так:
= −1,= −1 −1.
Для вычисления суммы по модулю 2 используем приведенную выше схему, основанную на тождестве
= ( ) .
Вторую формулу слегка преобразуем с целью сэкономить одну операцию:
= ( ) |
. |
|||||
|
|
|
|
|
−1 |
|
(теперь |
|
функцию |
можно вычислить один раз, а результат |
|||
|
|
|
|
|
|
|
использовать дважды). Теперь можно построить схему, вычисляющую обе функции:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
& |
|
& |
|
|
|
|
|
|
|
& |
|
|
||
|
|
|
|
|
|||
|
|
|
|
|
|
& |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
−1 |
|
||
& |
|
|
Эта схема – блок, вычисляющий один разряд суммы и разряд переноса. |
||
Обозначим его , а на схеме будем изображать в виде прямоугольника: |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
−1 |
|
|
|
|
Блок 1 устроен несколько проще, так как отсутствует перенос из предыдущего разряда:
1 |
|
|
|
|
& |
1 |
|
|
& |
||
|
|
||
1 |
|
|
|
|
1 |
|
|
|
|
|
Из этих блоков собирается вся схема сумматора:
1 |
1 |
|
2 |
2 |
|
|
|
|
|
|
|
1 |
|
|
|
|
|||
|
|
|
|
|
2 |
|
|
|
+1 |
|
|
|
|
|
1 |
2 |
|
|
|
|
1 |
2 |
−1 |
|
8.4. Дополнительные сведения
Основы теории логических схем были заложены в работах одного из основоположников кибернетики К. Шеннона. В частности, он доказал нижнюю границу схемной сложности самых сложных функций, т.е. функции( ) (ее называют функцией Шеннона). Метод построения схем, асимптотически достигающий этой границы предложил О.Б. Лупанов (асимптотически – это значит, что отношение сложности схемы, построенной методом Лупанова, к нижней границе стремится к 1 при → ∞). Вместе эти результаты дают асимптотическое значение функции Шеннона:
= |
2 |
(1 + |
), где |
→ 0 при → ∞. |
|
||||
|
|
|
|
|
|
|
|
|
Подробности можно найти в учебнике Яблонский С.В. Введение в дискретную математику. — М.: Наука. — 1986.
Современное состояние исследований сложности булевых функций описано в книге
Jukna S. Boolean function complexity. – Springer-Verlag, 2012.