Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алексеев-Дискретная математика-4

.pdf
Скачиваний:
94
Добавлен:
27.03.2015
Размер:
1.12 Mб
Скачать

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

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.