- •Глава 1. Реализация конечных функциональных преобразователей
- •Постановка проблемы
- •Булевы функции
- •Свойства булевых функций
- •Нормальные формы представления булевых функций
- •Минимизация булевых функций
- •Функциональная полнота. Теорема Поста
- •1.8 Формы представления булевых функций
- •1.9 Булевы алгебры
1.
Глава 1. Реализация конечных функциональных преобразователей
Целью главы является ознакомление с систематическим подходом к построению комбинационных схем - преобразователей, реализующих функциональное отображение конечных множеств, и математическими основами этого подхода: теорией двоичных (булевых) функций и ее обобщением - булевой алгеброй. В результате изучения материала этой главы читатель должен освоить:
-
основы теории булевых функций, свойства и методы преобразования таких функций;
-
теорию базисов булевых функций и методы представления функций в различных базисах;
-
простейшие методы минимизации булевых функций;
-
методы представления булевых функций.
Содержание главы 1:
1.1 Постановка проблемы
1.2 Булевы функции
-
Свойства булевых функций
-
Нормальные формы представления булевых функций
Преобразование в нормальную форму
1.5 Реализация булевых функций
-
Минимизация булевых функций
-
Функциональная полнота
Алгебра Жегалкина и линейные функции
Замкнутые классы булевых функций
Теорема Поста
-
Формы представления булевых функций
Семантические деревья
Бинарные диаграммы решений (Binary Decision Diagrams)
1.9 Булевы алгебры
Задачи
ЛИТЕРАТУРА
-
Постановка проблемы
В данной главе рассматриваются проблемы построения преобразователей информации. Пусть А - некоторое множество элементов информации, представленных тем или иным образом, В - другое множество элементов информации, а Ф - функция преобразования. Преобразователь информации можно представить себе схематически как устройство, реализующее отображение Ф:AB одного множества на другое (рис.1.1, а). Мы рассмотрим систематические методы построения таких преобразователей. Трудно предложить какое-то решение в общем случае, когда множества А и В имеют произвольную природу, а о самом отображении Ф ничего не известно. Однако, если множества А и В являются конечными (т.е. преобразователь, который мы хотим построить, является “конечным функциональным преобразователем”), существует систематический метод решения этой проблемы, состоящий в том, что элементы множеств А и В предварительно кодируют двоичными кодами и строят преобразование одного множества двоичных векторов в другое (рис.1.1, б).
Двоичное кодирование состоит просто во взаимно однозначном сопоставлении всем элементам конечного множества некоторых двоичных векторов одной и той же длины. При таком подходе проблема реализации преобразователя Ф сводится к построению трех преобразователей: кодировщика К:АХ, собственно функционального преобразователя F:ХУ и декодировщика D:YB, причем эти отображения должны быть выбраны так, что КFD=Ф (рис.1.1, б). Рассмотрим проблемы построения этих трех преобразователей поочередно.

Рис 1.1. Реализация конечного функционального преобразователя
Число двоичных векторов длины n равно 2n, и если все элементы множества S закодировать двоичными векторами одной и той же длины n, то для однозначности кодирования n должно быть не меньше, чем log2|S|. Пусть m и n - длины двоичных векторов для кодирования соответственно множеств А и В входных и выходных информационных элементов конечного функционального преобразователя Ф. Тогда кодирование - это построение некоторого отображения К:А{0, 1}m, декодирование - построение отображения D:{0, 1}nB, а функциональное отображение F сопоставляет каждому вектору из :{0, 1}m некоторый вектор из {0, 1}n, причем так, чтобы КFD=Ф.
Пример 1.1. Пусть множество А={a1, a2, a3, a4, a5}, a множество B={b1, b2, b3 }, и отображение Ф задается таблицей 1.1.
Тaблица 1.1
Ф:AB
-
А
В
a1
b2
a2
b3
a3
b2
a4
b1
a5
b2
Понятно, что в данном примере m должно быть не меньше 3, n должно быть не меньше 2. Мы можем выбрать произвольно функции кодирования и декодирования (например, Таблицы 1.2 и 1.4). Отображение F строим таким образом, чтобы соотношение КFD=Ф выполнялось:

Устройство кодирования должно преобразовать элементы информации множества А заданной природы в двоичные вектора (представленные тем или иным удобным нам способом), причем преобразование это должно быть взаимно однозначно. Аналогично, устройство декодирования должно преобразовать двоичные вектора (представленные тем или иным способом) в элементы информации множества В. Проблема построения конечного функционального преобразователя теперь сводится к реализации произвольного преобразователя F:{0, 1}m{0, 1}n, который может быть задан, например, таблично, поскольку исходное множество А конечно.
Проблема построения произвольного преобразователя F:{0, 1}m{0, 1}n имеет более четкую математическую формулировку, однако решить ее непросто. Для упрощения решения этой проблемы удобен следующий простой прием: вместо одной функции F:{0, 1}m{0, 1}n построить n функций fi:{0,1}m{0,1} так, что реализация совокупности этих более простых функций даст искомый преобразователь F. Этот прием представлен на рис.1.1, в). На рис. 1.1, г) функции fi выделены явно.
Определение 1.1 Функции вида f:{0, 1}m{0, 1}, сопоставляющие двоичным векторам двоичные значения, называются двоичными (или булевыми) функциями.
Если мы сумеем реализовывать любые двоичные функции, в проблеме построения конечных функциональных преобразователей останутся нерешенными только проблемы кодирования и декодирования, которые должны решаться каждый раз по своему при каждом специфическом представлении входной и выходной информации.
