Вы находитесь на странице: 1из 19

1.

Понятие булевых функций


Булевыми функциями называются функции f(x1,x2, . . . xn), которые так же, как и их
аргументы, могут принимать два значения - 0 и 1.
Функция от n аргументов определена на 2n наборах или точках. Иногда это множество
наборов называют булевым пространством, а каждый элемент этого пространства – булевым
вектором.
Например:
•B = { 0,1}
•B2 = {0,1} × {0,1} = {00, 01, 10, 11}
Булевы функции: f(x) : Bn → B;
B = {0,1};
X= {x1, x2, … xn} ∈ Bn; xj ∈ B;
x1, … xn – переменные, x1, x1, x2 , x2 . . . – литералы.
Функция f отображается на каждую вершину Bn нулем или единицей.
Onset of f is {x|f(x)=1} = f-1(1) = f1.
Ofset of f is {x|f(x) = 0} =f-1(0) = f0.
Если f1 =Bn – тавтология (tautology), т.е. f ≡ 1.
Если f0 =Bn (т.е. f1=∅)– (not satisfyable), т.е. f ≡ 0.
Литерал – это есть переменная или ее отрицание.
Например, литерал x1 представляет логическую функцию f = {x|x1=1}.
Литерал x1 представляет логическую функцию g = {x|x1=0}.
Если g(x) = f(x) на всех вершинах Bn, то g(x) и f(x) эквивалентны.

Функция называется полностью определенной, если на любом наборе известно ее значение.


Если же на некоторых наборах значения функции не определены, то функция называется
неполностью определенной или частичной.
Всего существует 2 в степени 2n различных функций от n переменных, включая константы
нуля и единицы и тривиальные функции.

Способы представления булевых функций


1. Таблица (Truth table)
2. Аналитическое представление (в виде формул) - SOP, POS, Boolean
formula.
3. BDD.
4. Булева сеть.
5. Схема.
Табличный способ задания
Для задания функции используется таблица, содержащая 2n строк. Каждой строке
соответствует набор аргументов и значение функции на данном наборе (в правом столбце).
Наборы упорядочены в порядке возрастания.

x1x2 . . . xn f(x1,x2, . . . xn)


00 ...00 0
00 ...01 1
. .
. .
. .

11 ...11 1

1
Аналитическое задание функции
Разложение Шеннона
Теорема о разложении:
Разложением Шеннона функции f(x1,x2, . . . ,xn) по одной переменной x1 называется
представление ее в виде
f(x1,x2, . . . ,xn) = x1 f(0,x2, . . . ,xn) ∨x1 f(1,x2, . . . ,xn)
Доказывается эта теорема путем подстановки значений аргументов xi=0 и xi=1.
Разложение по всем переменным:
f(x1,x2, . . . ,xn)= x1x2 . . . xn f(0,0,. . . ,0) ∨ x1x2 . . . xn f(0,0, . . . ,1) ∨. . . ∨x1x2 . . . xn f(1,1,. . . ,1)

Нормальные формы представления функции


Любая функция может быть представлена как дизъюнкция термов-произведений,
каждый из которых представляет собой конъюнкцию всех переменных (с отрицаниями или без
них) и значений этой функции на соответствующем конкретном наборе значений переменных.
σ σ
Обозначим для σ∈ {0,1}, x =x при σ = 0 и x =x при σ = 1. Тогда окончательная форма
представления любой функции будет иметь вид:
σ σ σ
f(x1,x2, . . . ,xn) = ∨f(σ 1, σ 2,. . . σ n)=1( x1 1 x2 2 . . . xn n). (1)
Taк как значения функции на каждом конкретном наборе или 0 или 1, то в формуле
останутся только такие термы, которые соответствуют наборам переменных, на которых
функция равна единице.
Такая форма представления называется совершенной дизъюнктивной формой (СДНФ).
f(x1, . . . xn) = K1 ∨ K2 ∨. . . ∨ Km, m≥ 1, где каждый терм Ki (конъюнкт) представляет собой
конъюнкцию взятых с отрицаниями или в прямом виде переменных функции. Количество букв
во всех конъюнкциях равно n. Иногда Ki называют конституентой единицы или минтермом
(значение функции определяется минимальным значением первичных термов). Если некоторые
конъюнкции содержат число букв (литералов) меньшее, чем n, то это дизъюнктивная
нормальная форма (ДНФ).
Представление булевых функций в СДНФ единственно.
Перейдем к конъюнктивной нормальной форме.
σ
Xi - первичный терм. Из определения первичных термов вытекает: xi1=xi0 = xi , a xi0=xi1=xi.
Применим формулы Де Моргана к выражению (1). Получим:

f(x1,x2, . . . ,xn) = ∨f(σ 1, σ 2,. . . σ n)=1 x1 1 x2 2 . . . xn n = & f(σ 1, σ 2,. . . σ n)=1 (x1 1∨x2
σ σ σ σ σ2 σ
∨. . . ∨xn n) или
σ σ σ
f(x1,x2, . . . ,xn) =& f(σ 1, σ 2,. . . σ n)=1 (x1 1∨x2 2 ∨. . .∨xn n).
σ1 σ2 σ
f(x1,x2, . . . ,xn) = & f(σ 1, σ 2,. . . σ n)=0 (x1 ∨x2 ∨. . . ∨xn n).
Представление функции в виде
f(x1,x2, . . . ,xn) = D1 ⋅ D2 ⋅ . . . ⋅ Dk , k≥1, называется совершенной конъюнктивной
нормальной формой (СКНФ). Все дизъюнктивные термы содержат n литералов. Они
называются конституентой нуля или макстермом (значение функции определяется
максимальным значением первичных термов). Если некоторые конъюнкции содержат число
литералов меньшее, чем n, то это конъюнктивная нормальная форма (КНФ).

Семантические деревья
Семантическое дерево – это двоичное дерево, корень которого помечен двоичной функцией
от n переменных, из каждого узла идут по два ребра, соответствующих двум значениям
очередной переменной, а 2n листьев помечены соответствующими значениями функции.

2
Диаграммы двоичных решений
Диаграммы двоичных решений (Binary Decision Diagrams, BDD) – это граф, являющийся
модификацией семантического дерева. Фактически, это одно и то же. В BDD узлы с одним и
тем же значением функции объединены. Если на каждом уровне BDD все вершины имеют одну
и ту же метку (одинаковые переменные, то такая BDD называется упорядоченной (Ordered
BDD)). BDD используются как компактная форма представления булевой функции. Такое
представление полезно в тех случаях, когда нужно многократно вычислять значения функции
при различных наборах аргументов.
Пример: пусть задана функция следующей таблицей (Таб.1). Рассмотрим основные формы
представления этой функции.
Таб.1
x1x2x3 f(x1,x2,x3)
000 1
001 1
010 1
011 0
100 0
101 0
110 1
111 0

1. СДНФ
y = x1x2x3 ∨x1x2x3 ∨x1x2x3 ∨x1x2x3;
2. СКНФ
y = (x1∨x2∨x3)⋅ (x1∨x2∨x3)⋅ (x1∨x2∨x3)⋅ (x1∨x2∨x3);
3. Семантическое дерево.
Семантическое дерево (Рис.1)
Корень дерева отметим переменной x1.
Вершины следующего яруса будут отмечены переменной x2, вершины следующего яруса –
переменной x3, a вершины нижнего яруса – значениями функции.

Root node x
f(x1,x2,x3) f(x1,x2x3) = x1x2∨x1x2x3 ∨x1x2x3
1

0 1
~(x2x3) x2 ~x3
x2 x2

0 1 0 1

~x3 x3 ~x3
1 x3 0

0 1 0 1

1 0 1 0

Рис.1

4. BDD.
Алгоритм построения BDD из семантического дерева состоит в следующем:

3
1. Удаление дублирующих значений функции.
2. Выбрасывание дублирующих тестовых узлов. Если два различных промежуточных
узла в диаграмме являются корнями структурно-идентичных поддиаграмм, то заменяем
их одним эквивалентным.
3. Выбрасывание избыточных тестовых узлов. Если оба исходящих из некоторого узла
t ребра указывают на один и тот же следующий узел, например, u, то узел t можно
отбросить, связав все входящие в t ребра с узлом u.
На рис.2 представлена упрощенная BDD (ROBDD).

x1
0 1

x2 x2 Y=~x1~x2 ∨~x1x2~x3 ∨x1x2~x3


1 1
0 0
x3
0 1

1 0

Рис.2

BDD представления функции существенно зависит от порядка переменных. На рис.3


представлена диаграмма для другого порядка переменных. Это минимальная BDD (ROBDD –
Reduced OBDD).

x2

0 y = ~x2~ x1 ∨x2 ~x3


1
x1

x3 1
0
1 0

0 1

Рис.3.
Представление функции в виде BDD полезно в тех случаях, когда нужно многократно
вычислять значения функции при различных наборах значений ее аргументов.
Например, на языке C, вместо хранения громоздкой таблицы истинности можно
вычислить оператор:
f=x2?(x3? 0:1):(x1? 0:1)

Многие функции могут быть представлены более компактно, чем SOP (DNF).
Рассмотрим разложение Шеннона функции по аргументу xi:
f(x1,x2, . . . xn) = ~xif ~xi(x1,x2 . . .xi-1, xi+1 . . .xn) ∨xi fxi (x1,x2 . . .xi-1, xi+1 . . .xn).
Функции f ~xi и f xi называются кофактором функции f по переменным ~xi и xi или
коэффициентами разложения Шеннона.

4
BDD представляет собой сжатое дерево разложения функции по n аргументам.

V
0 1

f~V fV
Рис.4
Листовые вершины дерева помечаются константами 0 и 1.

Пример1.
Задана функция в виде таблицы:

x1x2x3 f(x1,x2,x3)
000 1
001 1
010 0
011 1
100 0
101 1
110 0
111 0

BDD данной функции представлено на рис.5.


x
f(x1,x2,x3)
1
0 1

x2x3 ~x2 x3
x2 x2

0 1 0 1

1 x3 x3 x3 x3 0

0 1 0 1

0 1
Рис.5.
Построим схему на мультиплексорах.

5
MUX
x1

0 1
x2x3 ~x2x3
MUX MUX
x2 x2

0 1 0 1
x3
MUX
x3

0 1
Рис.6

root f = ab +~ac +b~c~d.


node a
a +bc~d.ab+a’c+bc’d

b c+bd
c+bd c
b b
c
c+d
c c d+b d

d b
b
d

0 1 0 1

f = ab +~ac +b~c~d.
Каждой вершине v BDD соответствует тройная функция f =(v,g,h), где g=fV и h=f~V.
f = if v then g else h.
f
MUX
v
0 1

h g
Эта функция называется ITE-оператором (IF – THEN – ELSE).

6
С помощью этого оператора может быть представлена любая функция от двух
аргументов.
Все 16 функций от двух аргументов f и g представлены в таблице.
Цифры в графе Table слева направо соответствуют значениям функции на наборах
00, 01, 10 и 11 аргументов a и b.

Table Subset Expression Equivalent Form


0000 0 0 0
0001 AND(a, b) ab ite(a, b, 0)
0010 a> b a~b ite(a,~b, 0)
0011 a a a
0100 a<b ~ab ite(a, 0, b)
0101 b b b
0110 XOR(a, b) a⊕b ite(a,~b,b)
0111 OR(a, b) a+ b ite(a, 1, b)
1000 NOR(a, b) a+ b ite(a, 0,~b)
1001 XNOR(a, b) a⊕ b ite(a, b,~b)
1010 NOT(b) ~b ite(b, 0, 1)
1011 a≥ b a + ~b ite(a, 1, ~b)
1100 NOT(a) ~a ite(a, 0, 1)
1101 a≤ b ~a + b ite(a, b, 1)
1110 NAND(a, b) ab ite(a, ~b, 1)
1111 1 1 1

Представление функций в виде полиномов


Теорема Жегалкина. Любая переключательная функция f(x1,x2, . . . xn) может быть
представлена в виде полинома:
f(x1,x2, . . . xn)=а0 ⊕ а1x1 ⊕ a2x2 ⊕ . . . ⊕ anxn ⊕ an+1 x1x2 ⊕ . . . ⊕ aNx1x2. . . xn, где a0, . . . аN –
некоторые константы, равные нулю или единице.
Для доказательства нужно представить функцию в виде СДНФ. Затем заменить все
дизъюнкции на операции “сумма по модулю 2”, а переменные с инверсией xj на 1⊕xj.
Пусть задана функция таблицей 1. Представим эту функцию в виде СДНФ:
f(x1,x2,x3) = x1x2x3∨x1x2x3 ∨x1x2x3 ∨x1x2x3 =
(1⊕x1) (1⊕x2) (1⊕x3) ⊕(1⊕x1) (1⊕x2) x3 ⊕ (1⊕x1) x2 (1⊕x3) ( x1 x2 (1⊕x3) =
=1⊕ x1⊕ x1x2 ⊕ x2x3.
В полиномы Жегалкина входят только литералы без знака инверсии.
Аналогичным образом могут быть записаны полиномы Рида-Маллера, у которых
некоторые литералы могут быть со знаком инверсии (и тогда только с ним).
Aлгебра Жегалкина – это алгебра над множеством двух бинарных булевых функций −
И,(⊕) и константой 1.
x1 ⊕ x2 = x2 ⊕ x1;
x1(x2 ⊕ x3) = x1x2 ⊕ x1x3;
x⊕x=0; x⊕0 =x; x⊕1=x;

Функционально-полные системы булевых функций


Функционально-полным набором (или базисом), называется такое множество булевых
функций, суперпозицией которых могут быть выражены любые булевы функции.
Суперпозицией называется подстановка в качестве аргументов одной функции некоторoй
другoй функции.

7
Проблема определения базисов булевых функций была решена Постом. Постом было
выделено пять классов переключательных функций, каждый из которых является замкнутым,
т.е. применяя операции суперпозиции к любым функциям из заданного класса, получаем
функции из того же класса.
1. Сохраняющие ноль функции.
Функция f(x1,x2, . . . xn) сохраняет ноль, если f(0,0, . . . 0) =0. Примером функции,
сохраняющей ноль, является конъюнкция.
Всего таких функций от n аргументов 2 в степени 2n-1 .
2. Сохраняющие единицу функции.
Функция f(x1,x2, . . . xn) сохраняет единицу, если f(1,1, . . . 1) =1.
Всего таких функций от n аргументов 2 в степени 2n-1 .
3. Монотонные функции.
Функция f(x1, x2, . . . xn) является монотонной, если при возрастании набора аргументов ее
значение не убывает. Конъюнкция и дизъюнкция являются примерами монотонных функций.
4.Самодвойственные функции.
Функция f(x1,x2, . . . xn) называется самодвойственной, если для каждой пары
противоположных наборов она принимает противоположные значения, т.е. для любого набора
(σ 1,σ 2, . . . σ n), f(σ 1,σ 2, . . .σ n)=f(σ 1,σ 2, . . . σ n). Примером самодвойственной функции
является отрицание.
5. Линейные функции.
Функция называется линейной, если ее полином Жегалкина имеет следующий вид:
f(x1, x2, . . . xn) = a0 ⊕ a1x1 ⊕ a2x2 ⊕ . . . ⊕ anxn..
Доказательство того, что все эти классы замкнуты, основано на применении операций
суперпозиции и подстановки.
Теорема Поста:
Для того, чтобы множество N булевых функций было базисом, необходимо и достаточно,
чтобы:
1. N содержало бы по крайней мере одну функцию, не сохраняющую ноль.
2. N содержало бы по крайней мере одну функцию, не сохраняющую единицу.
3. N содержало бы по крайней мере одну немонотонную функцию.
4. N содержало бы по крайней мере одну несамодвойственную функцию.
5. N содержало бы по крайней мере одну нелинейную функцию.
Необходимость и достаточность этих условий очевидна.
Примеры функционально полных базисов функций:
И, ИЛИ, НЕ.
И-НЕ (функция штрих Шеффера);
ИЛИ-НЕ (функция стрелка Пирса);
И, ⊕, константа 1.
Минимальное количество функций в базисе – одна (базис И-НЕ или ИЛИ-НЕ).
Максимальное количество функций в минимальном базисе - четыре.

8
Переключательные функции двух аргументов

x1x2
00 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
01 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
10 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
11 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0

x1⋅ x2

x1⋅ x2
x1

x1⋅ x2
x2

x1⊕ x2
x1∨x2
x1∨x2
x1⊕ x2

x2

x1 ∨x2

x1

x1 ∨x2

x1⋅ x2
1
Константа нуля

Конъюнкция

И-НЕ
Равнозначность
Запрет по x2
Переменная x1

Запрет по x1

Сумма по mod2

Инверсия x2
Импликация от x2 к x1

Инверсия x1

Импликация от x1 к x2

Константа единицы
Дизъюнкция
ИЛИ-НЕ
Переменная x2

x x x x x x x x Сохраняющая нуль

x x x x x x x x Сохраняющая единицу

x x x x x Монотонная

x x x x Самодвойственная

x x x x x x x x Линейная

Минимизация булевых функций в классе дизъюнктивных нормальных


форм
(two level minimization)
Сложность схемы, реализующей булеву функцию, определяется сложностью ее
аналитической записи.
Так как одну и ту же функцию можно представить разными формулами, то задача выбора
наиболее простой формулы непосредственно ведет к получению наиболее простой схемы.
Минимальной формой булевой функции в некотором базисе можно считать такую, которая
содержит минимальное число суперпозиций функций базиса, допуская и скобки.
Однако построить эффективный алгоритм минимизации с получением минимальной
скобочной формы трудно.
Рассмотрим более простую задачу минимизации при которой ищется минимальная ДНФ
функции.
Минимизация булевой функции f(x1,x2, . . . xn) , заданной в виде ДНФ, производится
следующим образом:
1. Определяются все простые импликанты импликанты функции f;
2. Определяется кратчайшее покрытие eдиничных точек функции простыми
импликантами.
Импликантой P некоторой функции f называется конъюнкция (терм-произведение), которая
покрывает хотя бы одну единичную точку и, возможно, некоторые неопределенные точки этой
функции, и не покрывает нулей.
Импликанта называется простой, если из нее нельзя удалить ни одной буквы.

9
Теорема о простых импликантах: Минимальная форма функции fmin является дизъюнкцией
простых импликант функции f.
Эта теорема легко доказывается от противного.
Определение простых импликант с помощью карт Карно.

Неполностью определенные функции


F(f,d,r).
F(f,d,r): Bn → {0, 1, *}, где * - неопределенные значения F.
f(x)=1 в единичных точках функции F(x),
r(x) = 1 в нулевых точках F,
d(x) = 1 в неопределенных точках функции F.
Иначе можно записать следующим образом:
f(x) =1 ↔ F(x) =1;
r(x) = 1 ↔ F(x) = 0;
d(x) = 1 ↔ F(x) =*.

F(f,d,r) формирует расчление (разбиение) Bn,


т.е. f +d +r = Bn.
fd = fr =rd =∅ (попарно не пересекаются).

Программные методы минимизации.


Метод Квайна – Мак-Класки.
Алгоритм минимизации может использоваться для минимизиации неполностью
определенных функций.
Квайном и Мак-Класки была предложена следующая процедура получения простых
импликант.
1. Составить таблицу для всех единиц и неопределенных точек функции f, разбитых на
классы S0, S1, S2, . . . , Sn, где Si содержит все такие точки с i единицами в наборах и n-i
нулями. Элемент таблицы, соответствующий минтерму mi является двоичным
представлением i.
2. Сравнить каждый элемент в Si с каждым элементом Si+1 для всех i (0≤ i≤ n). Для пар,
отличающихся только в одном литерале xj, сформировать новые импликанты,
покрывающие обе точки. Эти импликанты неопределенные для xj, а остальные
переменные сохраняют те же значения, что и в паре комбинируемых строк. Новые
импликанты поместить в класс Si(, а термы, использованные для их образования
пометить знаком, например знаком √. Присвоить каждой новой импликанте метку 1,
если хотя бы один из термов, используемых для ее образования имеет метку 1. Если оба
терма имеют метку неопределенности (-), то эта же метка присваивается новой
импликанте.
3. Повторить шаг 2, используя Si’ и Si+1’ для образования Si“. Аналогично образовать Si“’
из Si“и Si+1“. Эта процедура продолжается до тех пор, пока дальнейшие комбинации
окажутся невозможными. При этом неопределенные переменные комбинируемых
термов сохраняют свою неопределенность и во вновь образованных импликантах.
4. Термы, не участвовавшие в процедуре (отсутствует знак (√), являются простыми
импликантами, если им не соответствует метка неопределенности.

10
Пример: Задана функция f(x1,x2,x3), принимающая значение, равное 1 на наборах 1, 2, 4, 6 и
неопределенное на наборе 7. Можно записать следующим образом: f(x1x2x3) = Σ (1,2,4,6),
d(x1x2x3) =Σ (7).
Составим таблицу:

Таб.2
X1 X2 X3 f
0 0 1 1
S1 0 1 0 1 √
1 0 0 1 √
S2 1 1 0 1 √
S3 1 1 1 - √
S1’ x 1 0
1 x 0
S2’ 1 1 x

Импликанты x1x2x3, x2 x3, x1x3, x1x2 являются простыми импликантами (сравнение классов
S1’и S2’ показывает, что новые импликанты не образуются).
После того, как все простые импликанты функции определены, наступает второй этап
минимизации – нахождение минимального подмножества простых импликант, покрывающих
все единицы функции. Это производится с помощью таблицы простых импликант функции
(таб.3). Каждому минтерму функции соответствует один столбец, а каждой импликанте − одна
строка. На пересечении столбца и строки ставится единица только в том случае, если данная
импликанта покрывает точку функции, соответствующую минтерму.
Таб.3
m1 m2 m4 m6
x1 x2 x3(P1) 1
x2 x3 (P2) 1 1
x1x3 (P3) 1 1
x1x2 (P4) 1

Введем некоторые определения:


1. Существенно простая импликанта. Простая импликанта Pi называется существенной
в отношении некоторой точки mj, если эта точка не покрывается больше никакой другой
импликантой.
2. Доминирующая строка. Строка Pi и соответствующая импликанта называется
доминирующей над некоторой другой строкой Pj, если она содержит единицы во всех
столбцах, что и строка Pj. Eсли строка Pi доминирует над Pj, то существует
минимальное покрытие, не содержащее Pj. Поэтому строку Pj, которая “перекрывается”
другими импликантами, можно исключить из таблицы.
3. Доминирующий столбец . Столбец mj доминирует над столбцом mi, если каждая
простая импликанта, покрывающая mj, покрывает также и mi. Поэтому столбец mi,
который “перекрывается” другими столбцами, можно исключить из таблицы.
Для нахождения кратчайшего покрытия выполняются следующие шаги:
1. Определяются все существенные импликанты.
2. Вычеркиваются все столбцы, которые покрываются этими импликантами, и все
строки, соответствующие данным импликантам. Строки, которые перекрываются
другими импликантами, также вычеркиваются.
3. Вычеркиваем все столбцы, которые перекрываются другими столбцами.
В результате получаем таблицу меньшей размерности, определяем сушественные
импликанты второго порядка и т.д.

11
4. Если все оставшиеся столбцы покрываются существенно простыми
импликантами второго порядка, то задача решена.
Однако исходная или упрощенная таблица могут не содержать существенных строк и
доминирующих строк и столбцов (циклические таблицы).
Если нет существенных строк и существенных столбцов, то используют метод
ветвления. Согласно этому методу, последовательно выбирают строки из подмножества
строк, например, строку Pi. Предполагают, что выбранная строка является существенной
и рекурсивно выполняют шаги 2, 3, 4. В этом случае получают субоптимальное решение
относительно строки Pi. Переходят к следующей строке, например, Pj. Получают новое
субоптимальное решение. Лучшее из всех субоптимальных решений считают
оптимальным.

Минимизация системы булевых функций


На практике у большинства комбинационных схем число выходов бывает больше одного.
Если комбинационная схема имеет N выходов, то ее поведение описывается системой из N
булевых функций. Задачу минимизации схемы с N выходами можно свести к решению N
независимых задач минимизации схем с одним выходом. Однако, с точки зрения всей схемы,
такая минимизация, как правило, не будет оптимальной.
Критерием оптимизации в классе ДНФ является число букв в конъюнктивных термах и число
термов – т.е. аналитические выражения всех N функций суммарно должны содержать
минимальное число букв.

Рассмотрим следующий пример: Заданы две функции f1 и f2 от 4-х аргументов с помощью


карт Карно. f f
1 2

x3x4 x3x4
x1x2 x1x2
00 00
01 01
11 11
10 00–1 01–1 1111– 10–1 10 001 01 11–1 101–

Рис. 1.4
Для определения многовыходных импликант найдем произведение функций f1 и f2 –
f1• f2 (рис.5). Oбозначим его через F.
f1•f2
x3x4
x3x4 x1x2 0 0 1 1
x1x2 0 0 1 1 0 1 1 0
0 1 1 0 00 1
00 1
01
01
11 — 1
11 — 1
10 1 1
10 — 1

Рис.1.5
Многовыходными импликантами являются импликанты x1x3 x4 и x2x3x4
F=x1x3x4 ∨x2x3x4. Импликанта x2x4 существенна для f1.
f1=x2x4 ∨F; f2 = F.
Раздельная минимизация заданных функций приводит к получению следующих выражений:
f1=x2 x4∨x1x2x3∨x2x4;
f2=x1x3x4∨x2x3x4;

12
Как видно из полученных выражений, раздельная минимизация дает более сложную схему.
Общее число входов при совместной реализации равно 12, при раздельной реализации – 18.
Минимизацию схем большого размера можно произвести, применяя формальный алгоритм
минимизации для случая многих выходов. Пусть задана система из k функций.
Для успешной минимизации требуется рассмотреть функции-произведения всех
минимизируемых функций.
m-произведением для набора из k функций называется функция, являющаяся произведением
m функций, где 2≤ m≤ k. В рассмотренном примере k=2 и есть только одна функция-
произведение f1⋅ f2. В общем случае существует 2k –k-1 таких функций.
Простая импликанта схемы со многими выходами для набора из k функций – это простая
импликанта одной из k функций или одной из функций-произведений.
Первый шаг минимизации в случае многих выходов состоит в нахождении всех
многовыходных простых импликант. После того, как простые импликанты найдены, мы
пытаемся упростить задачу, выбирая существенные среди них.
Особенной клеткой карты Карно некоторой функции называется клетка, которая покрывается
точно одной импликантой этой функции или одной из функций-произведений. Существенно
простой импликантой (essential prime implicant) является простая импликанта, покрывающая
особенную клетку. Существенно простые имликанты должны обязательно входить в
минимальную форму. После определения всех существенно простых импликант покрываемые
ими единицы в функциях-произведениях должны быть заменены на неопределенности. В
рассмотренном примере импликанта функции f1 x2x4 является существенно простой. В клетку
карты Карно функции f1⋅ f2 заносим прочерк.
Заключительный этап состоит в выборе минимального набора простых импликант, чтобы
покрыть оставшиеся единичные клетки всех k функций.

Пороговая логика
В 1943 году Уоррен Мак-Каллок и Уолтер Питтс предложили формальную модель нейрона
как переключательной функции в виде логической схемы, имеющей конечное число двоичных
входов и один двоичный выход.
Каждый вход xi имеет вес wi. Нейрон возбуждается, если суммарное взвешенное возбуждение
его входов не меньше некоторого порога срабатывания θ . Другими словами, выход нейрона
равен единице, если Σ wi*xi ≥ θ .
С изменением порога и весов входов изменяются также и логические функции, реализуемые
нейроном.
Рассмотрим формальный нейрон с двумя входами, изображенный на рис.1.6.
x1 w1
θ y
x2 w2

Рис.1.6
Суммарное возбуждение Σ для этой схемы рассчитывается так:
Σ = w1*x1 + w2* x2.
Пусть w1 =w2 =1, тогда Σ =x1 + x2. Если Σ =1, то эта схема реализует дизъюнкцию x1∨x2; при
Σ =2 схема реализует конъюнкцию x1⋅ x2.
Поставим обратную задачу: для заданного нейрона найти такие веса входов и порог его
срабатывания, что этот нейрон реализует заданную двоичную функцию, например,
конъюнкцию.

13
Очевидно, что для решения задачи для конкретного нейрона (рис.6), нужно решить систему
4-х неравенств:
Для набора 00 - Σ =w1*x1 + w2*x2 = 0 <θ ;
Для набора 01 - Σ =w1*x1 + w2*x2 = w2 <θ ;
Для набора 10 - Σ =w1*x1 + w2*x2 = w1 <θ ;
Для набора 11 - Σ =w1*x1 + w2*x2 = w1+w2 ≥ θ ;
Этой системе неравенств удовлетворяет решение θ =2, w1=w2=1.
Oбычно выбирают θ +Σ wi=min.
Рассмотрим еще одну задачу: найти веса входов и порог срабатывания нейрона для функции
“исключающее ИЛИ”. Получим
0<θ (для набора 00)
w2≥ θ (для набора 01)
w1≥ θ (для набора 10)
w1+w2 <θ (для набора 11).
Из второго и третьего неравенств следует, что w1+w2 ≥ 2θ . А это противоречит четвертому
неравенству.
В пороговой логике не существует элемента с двумя входами, реализующего функцию
“исключающее ИЛИ”.
Мажоритарные функции
Мажоритарные функции реализуются с помощью мажоритарного элемента. Задача
мажоритарного элемента произвести голосование и передать на выход величину,
соответствующую большинству из входных. Мажоритарный элемент может иметь только
нечетное число входов (как правило 3 или 5). Таблица функционирования 3-входового
мажоритарного элемента представлена Таб.6.
Таб.6
F1 F2 F3 F a1 a0
0 0 0 0 0 0
0 0 1 0 1 1
0 1 0 0 1 0
0 1 1 1 0 1
1 0 0 0 0 1
1 0 1 1 1 0
1 1 0 1 1 1
1 1 1 1 0 0

а1, а0 – старший и младший разряды двухразрядного кода, указывающего номер отказавшего


канала. Определим функции, реализуемые мажоритарным элементом.
F=F1F2 ∨F1F3 ∨F2F3;
a1 =F2⊕F3; a0 = F1⊕F3.
От мажоритарного элемента требуется особенно высокая надежность, так как его отказ
делает бесполезной всю схему резервирования.

Факторизованные формы или скобочные алгебраические формы.

Представление функции в виде CNF или DNF может содержать число термов, зависящее
экспоненциально от числа аргументов n. Эти же функции при представлении в виде
факторизованной формы могут содержать число термов, полиномиально зависящее от n.
Разложение на множители
Пример:
(ad+b’c)(c+d’(e+ac’))+(d+e)fg
Преимущества:
14
 Реализации на CMOS соответствует факторизованная форма
например:

f=ad+ae+bd+be+cd+ce f’=a’b’c’+d’e’ ⇒ f=(a+b+c)(d+e)


 Хорошая оценка сложности реализации

Недостатки: Не так много алгоритмов доступно для манипуляций, поэтому


приходится преобразовывать в SOP.

Определение:
Факторизованная форма может быть получена рекурсивно с помощью следующих
правил. Факторизованная форма есть произведение сумм, где
 произведение есть или единственный литерал или произведение
факторизованных форм.
 Сумма есть единственный литерал или сумма факторизованных форм.
Факторизованная форма есть скобочное алгебраическое выражение.
В сущности, факторизованная форма есть произведение суммы произведений …
или сумма произведений сумм . . .
Любая логическая функция может быть представлена в факторизованной форме и
любая факторизованная форма есть представление некоторой логической
функции.
Примеры факторизованных форм:
x
y’
abc’
a+b’c
((a’+b)cd+e)(a+b’)+e’
(a+b)’c - не является факторизованной формой, т.к. инверсия разрешена
только для литералов.
Три эквивалентных факторизованных формы:
ab+c(a+b) bc+a(b+c) ac+b(a+c), т.е. факторизованные формы не
уникальны.
Определение:
Цена факторизации (или качество фактора) выражения F=G1G2 + R
определяется следующим образом:
Fact_val(F,G2) = lits(F) – (lits(G1) + lits (G2) + lits(R)) =
= (|G1|)-1) lits(G2) + (|G2|-1)lits(G1), где |H| - число кубов в
SOP форме.
G1, G2, R – алгебраические выражения.
Пример:
Алгебраическое выражение

F = ae+af+ag+bce+bcf+bcg+bde+bdf+bdg
Может быть выражено в форме
F = (a+b(c+d))(e+f+g), которая требует 7 литералов (исходное выражение
содержит 24 литерала).
Если G1 = a + bc +bd, G2 = e + f + g , то R =0.
Fact_val(F,G2) = 2× 3 + 2× 5 = 16.
Факторизованная форма содержит на 17 литералов меньше, а не на 16, т.к. один
литерал выигрывается из-за факторизации G1.
Факторизованная форма является более компактной формой представления
функции, чем SOP.

15
Правда, каждая SOP является факторизованной формой, но не лучшей.
SOP относительно числа входов является экспоненциальной формой, а
факторизованная функция – полиномиальной.

Факторизованная форма используется для уменьшения площади и задержки


при синтезе многоуровневых схем.
Во многих случаях, например, при проектировании на базе сложных вентилей
CMOS логики, реализация функций прямо соответствует их факторизованной
форме представления.

Дерево факторизации (или булева сеть)


Каждая вершина дерева, включая корень, отмечается операцией & или V (+, X).
Листам дерева соответствуют литералы.
Пример: factoring tree of ((a’+b)cd+e)(a+b’)+e’

Пример:
Y= (x0 ⋅ ~x1) ∨(x1⋅ ~x2)

& &

x0 x1
¬
¬

x1
x2

16
Определение:
Размером факторизованной формы
F (обозначенный ρ (F )) является число литералов формы.
Пример:
ρ (( a+b)ca’) = 4 ρ ((a+b+cd)(a’+b’)) = 6
Факторизованная форма называется оптимальной, если не существует
другой формы данной функции, имеющей меньшее число литералов.

Факторизованная форма называется положительно однородной (унатной) по


переменной x,если x входит в выражение, а x’ – нет. Факторизованная форма
называется отрицательно унатной по x, если x’ входит в выражение, а x – нет.

Функция называется бинатной (двухсложной), по переменной x, если x входит в


выражение и в прямом и в инверсном виде..
Например, (a+b’)c+a’ положительно унатная по c, отрицательно унатная по b и
бинатная по а.

Кофактором (алгебраическим дополнением) факторизованной формы F по кубу C


является факторизованная форма FC, полученная последовательной
кофакторизацией C по каждому литералу в C.
Пример: F = (x+y’+z)(x’u+z’y’(v+u’)) и c = vz’. Тогда
Fz’ = (x+y’)(x’u+y’(v+u’))
Fz’ v = (x+y’)(x’u+y’)
Преобразования булевых выражений (сетей)
Основные методы:
 Структурные операции (изменение топологии)
- Алгебраические
- Булевы
 Упрощение вершин (изменение функций в вершинах) – don’t cares
- минимизация вершин.

Структурные операции

Задача реструктуризации: Задана начальная сеть, найти лучший вариант.


Example: f1 = abcd+abce+ab’cd’+ab’c’d’+a’c+cdf+abc’d’e’+ab’c’df’
f2 = bdg+b’dfg+b’d’g+bd’eg
minimizing,
f1 = bcd+bce+b’d’+a’c+cdf+abc’d’e’+ab’c’df’
f2 = bdg+dfg+b’d’g+d’eg
factoring,
f1 = c(b(d+e)+b’(d’+f)+a’)+ac’(bd’e’+b’df’)
f2 = g(d(b+f)+d’(b’+e))
decompose,
f1 = c(x+a’)+ac’x’
f2 = gx
x = d(b+f)+d’(b’+e)
Здесь две проблемы:
Найти хорошую общую подфункцию.

17
Произвести деление.

Базовые операции
1. Декомпозиция (единственная функция)
f = abc+abd+a’c’d’+b’c’d’ ⇒
f = xy+x’y’ x = ab; y = c+d
2. Выделение (множество функций) – еxtraction.
f = (az+bz’)cd+e g = (az+bz’)e’ h = cde

f = xy+e g = xe’ h = ye x = az+bz’ y = cd
3.Факторизация (последовательно-параллельная декомпозиция)

f = ac+ad+bc+bd+e ⇒
f = (a+b)(c+d)+e
4. Подстановка g = a+b f = a+bc

f = g(a+c)
5. Разрушение (устранение).- collapsing, elimination.
f = ga+g’b g = c+d

f = ac+ad+bc’d’ g = c+d

Во всех этих операциях большую роль играет операция деления.

Операция деление (Division)


Применение: факторизация, повторное замещение (resubstitution), извлечение
(exstruction).
Определение1:
Алгебраическое выражение есть дизъюнкция простых импликант – SOP.
Например: a⋅ b ∨a⋅ b⋅ c ∨c⋅ d – не является алгебраическим выражением;
ab ∨cd – алгебраическое выражение.
Определение 2:
Произведение двух алгебраических выражений f⋅ g = Σ ci⋅ dj , где {ci}=f, {dj}=g,
неизбыточно по отношению к набору простых импликант.
Алгебраическое произведение определено только, когда f и g не пересекаются (не
имеют общих входных переменных).
Булево произведение – наоборот.
(a∨b)⋅ (c∨d) = a⋅ c ∨a⋅ d ∨b⋅ c ∨b⋅ d – алгебраическое произведение.
(а ∨b)⋅ (a ∨d) = a ∨b⋅ c – булево произведение.
Определение 3:
g является булевым делителем f, если существуют h и r такие, что f = g⋅ h ∨ r,
g⋅ h ≠ 0.
Говорят, что g является фактором f, если r =0, т.е. f = g⋅ h.
h называется частным, а r называется остатком..
h и r могут не быть единственными.
Если g⋅ h является некоторым алгебраическим произведением, то h называется
алгебраическим частным и обозначается f // g.
f = g⋅ h ∨r .
В то же время h есть не единственное булево частное, обозначаемое f ÷ g.

18
Если h ≠ 0 и h может быть получено, используя алгебраическое деление,
тогда g есть алгебраический делитель f. В противном случае g является булeвым
делителем f.
Пример:
f = a⋅ d ∨a⋅ e ∨b⋅ c⋅ d ∨j;
g1 = a ∨b⋅ c;
g2 = a∨b;
Алгебраическое деление f//a = d ∨e;
Алгебраическое деление не единственно : f//a = e, f//a = d.
h1 = f//g1 = d; r1 = a⋅ e ∨j.
Булево деление –
h2 = f ÷ g2 = (a ∨c)⋅ d; r2 = a⋅ e ∨j.
Таким образом, f = (a ∨b)⋅ (a ∨c)⋅ d ∨a⋅ e ∨j.

19