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

advertisement
Белорусско-Российский университет
Булевы Функции
http://www.ptca.narod.ru/lec
Могилев 2009
Булевы Функции





Основные понятия.
Аналитическое представление булевых функций.
Функционально полные системы будевых функций.
Минимизация булевых функций.
 Метод Квайна.
 Метод Квайна - Мак-Класки.
 Метод Блейка - Порецкого.
 Метод диаграмм Вейча.
 Минимизация коньюнктивных нормальных форм.
 Метод Петрика.
 Минимизация частично определенных булевых функций.
Минимизация систем булевых функций.
Основные понятия
"
Функция f, зависящая от n переменных x1, x2, ...., xn, называется булевой, или переключательной, если
функция f и любой из ее аргументов Xi, (i E 1..n) принимают значения только из множества {О, 1}.
Аргументы булевой функции также называются булевыми.
Произвольная булева функция задается одним из трех способов: матричным (табличным),
геометрическим и аналитическим.При матричном способе булева функция f (х1, ...,хn)
задается таблицей истинности (табл. 1.1 и 1.2), в левой части которой представлены все
возможные двоичные наборы длины n, а в правой указывается значение функции на этих
наборах.
Таблица 1.1
х1х2х3
000
001
010
011
100
101
110
111
0
1
0
0
1
1
0
1
Таблица 1.2
Номер
набора
0
1
2
3
4
5
6
7
0
1
0
0
1
1
0
1
Под двоичным набором y = < y1, y2,...,yn> yi E {0, 1} понимается совокупность значений
аргументов х1, х2, ..., xn булевой функции f. Двоичный набор имеет длину n, если он
представлен n цифрами из множества {0,1}. В табл. 1.1 передставлены все двоичные наборы
длины 3.
Иногда двоичные наборы в таблице истинности булевой функции удобно представлять
номерами наборов. Запишем аргументы х1, х2, ..., xn в порядке возрастания их индексов.
Тогда любой двоичный набор y = < y1, y2,...,yn> yi E {0, 1} можно рассматривать как целое
двоичное число N:
N=y1*2n-1+y2*2n-2+...+yn
называемое номером набора y. Например, двоичные наборы 101 и 111 имеют номера 5 и 7
соответственно. Очевидно, любая булева функция может быть задана таблицей истинности,
в которой двоичные наборы заменены своими номерами (табл. 1.2).
Булевы функции, зависящие от большого числа переменных, задавать таблицей истинности
неудобно в силу ее громоздкости. Например, таблица истинности булевой функции 8
переменных будет содержать 28 = 256 строк. Поэтому для задания функций многих
переменных удобно использовать модификацию таблицы истинности.
Рассмотрим способ построения такой таблицы истинности для функции n переменных.
Множество из n переменных функции разбивается на два подмножества: х 1, х2, ..., хj-1 и хj,
хj+1, ..., хn. Переменными x1, x2, ..., xn отмечают строки таблицы истинности, задавая в каждой
строке значение соответствующего двоичного набора длины j-1. Переменными xj, xj+i, ..., xn
отмечают ее столбцы, задавая в каждом столбце значения соответствующего двоичного
набора длины n-j+1. Значение функции записывается в клетке на пересечении
соответствующей строки и столбца (табл. 1.3).
Таблица 1.3
x1,x2,...xj-1
xj, xj+1, ...,xn
00...0
0...1
...
00...0
...
00...1
...
...
...
...
...
11...1
...
11...1
При геометрическом способе булева функция f (х1, ..., хn) задается с помощью n-мерного
куба. В геометрическом смысле каждый двоичный набор у = <y1, y2,...,yn> yi E {0,1} есть nмерный вектор, определяющий точку n-мерпого пространства. Исходя из этого, все
множество наборов, на которых определена функция n переменных, представляется
вершинами n-мерного куба. Отмечая точками вершины куба, в которых функция принимает
единичное (либо нулевое) значение, получим геометрическое представление функции.
Например, булева функция, заданная табл. 1.1, геометрически представляется 3-мерным
кубом (рис. 1).
При аналитическом способе булева функция задается формулами, т. е. аналитическими
выражениями, построенными на основе операций булевой алгебры. Аналитический способ
задания булевых функций занимает особое место в проектировании цифровых автоматов.
Фактически, все преобразования над булевыми функциями, необходимые для построения
цифровых автоматов, ведутся на аналитическом уровне.
Рассмотрим области определения булевых функций. Как уже отмечалось, между двоичными
наборами и двоичными числами существует взаимно однозначное соответствие.
Следовательно, существует 2n различных наборов двоичных переменных.
Таким образом, областью определения булевой функции n переменных при матричном
способе задания является множество всех возможных двоичных наборов длины n, а при
геометрическом способе задания - множество всех вершин n-мерного единичного куба.
Булеву функцию, определенную на всех своих наборах, называют полностью определенной.
В табл. 1.1, 1.2 приведены примеры полностью определенных булевых функций.
Булеву функцию n переменных называют неполностью определенной или частичной, если
она определена не на всех двоичных наборах длины n. Неполностью определенная булева
функция не попадает под определение, данное в начале , но при произвольном
доопределении (на всех наборах, на которых она не определена) это несоответствие
снимается.
Легко убедиться, что если булева функция f не определена на m наборах аргументов, то
путем ее доопределения можно получить 2m различных полностью определенных функций.
В табл. 1.5 приведен пример неполностью определенной булевой функции трех переменных.
Таблица 1.5
х1х2х3
F
000
001
010
011
100
101
110
111
0
1
0
1
1
-
Существует не более чем 22^n различных булевых функций n переменных. К этому выводу
легко прийти, пользуясь простыми комбинаторными рассуждениями, и вспомнив, что на
каждом из 2n наборов функции могут принимать два значения.
Функции двух переменных представлены в табл. 1.6.
Наиболее часто употребляются следующие:
Таблица 1.6
х1х2
00
01
10
11
f0
0
0
0
0
f1
0
0
0
1
f2
0
0
1
0
f3
0
0
1
1
f4
0
1
0
0
f5
0
1
0
1
f6
0
1
1
0
f7
0
1
1
1
f8
1
0
0
0
f9
1
0
0
1
f10
1
0
1
0
f11
1
0
1
1
f12
1
1
0
0
f13
1
1
0
1
f14
1
1
1
0
f15
1
1
1
1
f0 (x1, x2) = 0 - тождественный ноль (константа 0);
f1 (x1, x2) = x1 * x2 - конъюнкция. Вместо знака "*" иногда употребляется знак & или /\. Эту
функцию часто называют логическим произведением или логическим умножением;
f3 (x1, х2) = x1 - повторение x1;
f5 (x1, x2) = x2 - повторение х2;
f6 (x1, x2) = х1 x2 - сложение по модулю 2 или сумма mod 2 (далее +);
f7 (х1, х2) = x1 V x2 - дизъюнкция (логическое ИЛИ);
f8 (x1, x2) = x1 | х2 - функция Вебба (стрелка Пирса);
f9 (х1, х2) = x1 ~ x2 - эквивалентность;
f13(x1, x2) = x1 —> x2 - импликация;
f14(x1, x2) = x1\x2 - штрих Шеффера;
f15(x1, x2) = 1-тождественная единица (константа 1).
Рассмотренные простейшие булевы функции позволяют строить новые булевы функции с
помощью обобщенной операции, называемой операцией суперпозиции. Фактически
операция суперпозиции заключается в подстановке вместо аргументов других булевых
функций (в частности аргументов). Например, из функции f1 (x1, x2) с помощью
подстановки f3 (х4, x8), f2 = x3 вместо аргументов х1 и х2 соответственно получаем
функцию f1 (f3 (x4, x8), x3). Последняя от переменных х1, и х2 уже не зависит.
Отметим, что реально элементарной функции соответствует реализующий ее элемент, а
суперпозиции булевых функций соответ-ствует соединение элементов
Операция суперпозиции позволяет увидеть качественный переход от n = 1 к n = 2.
Действительно, суперпозиция функций одного аргумента порождает функции одного
аргумента. Суперпозиция функций двух аргументов дает возможность строить функции
любого числа аргументов (в приведенном примере построена функция трех переменных).
Суперпозиция булевых функций представляется в виде логических формул. Однако следует
отметить:



одна и та же функция может быть представлена разными формулами;
каждой формуле соответствует своя суперпозиция и, следова-тельно, своя схема
соединений элементов;
между формулами представления булевых функций и схемами, их реализующими,
существует взаимооднозначное соответствие.
Очевидно, среди схем, реализующих данную функцию, есть наи-более простая. Поиск
логической формулы, соответствующей этой схеме, представляет большой практический
интерес, а преобразование формул булевых функций основано на использовании соотношений булевой алгебры.
Для булевой алгебры определены одна одноместная (унарная) операция "отрицание", две
двухместные (бинарные) операции конъюнкция и дизъюнкция (обозначаются "*" (прим.
далее "*" упускается), "v" соответственно).
В этой алгебре справедливы три аксиомы:



закон коммутативности - х v у = у V х, ху = ух;
закон ассоциативности - (х v у) v z = х v(y v z), (х y) z = х(у z);
закон дистрибутивности - х (у v x) = ху v хz, х v y * z = (х v y)(х v z).
Под бинарной операцией на множестве А, в общем случае пони-мают отображение
декартового произведения множеств (A Х А) в множество А. Иными словами, результат
применения бинарной операции к любой упорядоченной паре элементов из А есть также
элемент из множества А.
Под унарной операцией на множестве А понимают выделение (фиксацию) какого-либо
элемента множества А.
Преобразование формул булевых функций применением только аксиом булевой алгебры
малоэффективно. Для упрощения формул используется целый ряд соотношений.
Теоремы де Моргана
Алгебра Жегалкина
В ряде случаев, преобразования над формулами булевых функ-ций удобно призводить в
алгебре Жегалкина.
Алгебра Жегалкина включает две двухместные операции: конъюнкцию и сложение по
модулю 2 (*, (прим. далее + ) ), а также константу 1. Здесь имеют место те же законы:



х + y = y + х, х у = у х (закон коммутативности);
х + (у + z) = (х + у) + z, х(у z) = (х у)z (закон ассоциативности);
x (y + z) = x y + x z (закон дистрибутивности).
Для упрощения формул могут быть использованы следующие соотношения:
х + 0 = х;
х 1 = х;
х 0 = 0;
х + х = 0;
х х = х.
Из коммутативности и ассоциативности дизъюнкции следует, что дизъюнкция нескольких
переменных может выполняться последовательно, причем порядок взятия дизъюнкции не
влияет на результат."
Аналитическое представление булевых функций.
"Выше упомяналось осуществовании аналитических форм представления булефых функций,
были приведены простейшие примеры. Здесь рассмотрим универсальные (канонические)
формы представления, дающие возможность получить аналитическую форму
непосредственно по таблице истинности для произвольной булевой функции. Эта форма в
дальнейшем может быть упрощена. Поскольку между множеством аналитических
представлений и множеством схем, реализующих булеву функцию, существует взаимнооднозначное соответствие, отыскание канонической фоорм представления булевой функции
является начальным этапом синтеза схемы, ее реализующей. Наиболее широкое
распостранение получила совершенная дизъюнктивная нормальная форма (СДНФ).
Прежде чем пререйти к её изучению, приведем определение конституенты еденицы понятия, которым будем широко пользоватся в дальнейшем.
Конституента 1 - функция f(x1, x2, ... xn) принимающая значение 1 только на единственном наборе.
Конституента 1 записывается как логическое произведение n различных булевых
переменных, некоторые из них могут быть с отрицаниями. Например, х1/х2/х3х4 элементарное логическое произведение, являющееся конституентой еденицы переменных
х1,х2,х3,х4 принимает значение 1 на единственном наборе 1001. Понятно, что на остальных 15
наборах эта конституента единицы равна нулю.
Ели вспомнить, что дизъюнкция равна 1, когда хотя бы одна из переменных принимает
значение 1, то можно легко выразить любую булеву функцию как дизъюнкцию конституент
единицы, соответствующих тем наборам, на которых функция равна 1. В более общем виде
это можно записать следующим образом:
Эта форма и есть СДНФ. Заметим, что наборы, на которых функция f принимает значение 1,
часто называются единичными, остальные - нулевыми наборами. Выписывать в СДНФ имеет
смысл толькр конституенты единицы, соответствующие единичным наборам.
ПРИМЕР :
Таблица 2.1
х1х2х3
F1 F2
000
0 0
001
1 0
010
1 0
011
0 1
100
0 0
101
0 1
110
0 1
111
1 1
F1=/x1/x2x3 v /x1x2/x3 v x1x2x3
F2=/x1x2x3 v x1/x2x3 v x1x2/x3 v x1x2x3
Другая известная форма носит название совершенной конъюнктивной нормальной
формы (СКНФ). Она строится аналогично СДНФ.
Конституента 0 - функция f(x1, x2, ... xn) принимающая значение 0 только на единственном наборе.
Конституента нуля записывается в виде элементарной дизъюнкции всех переменных.
Каждому набору соответствует своя конституента 0. Например, набору 0110 переменных
х1х2х3х4 соответствует конституента нуля х1 v /х2 v /х3 v х4. СКНФ представляется как
конъюнкция конституент нуля, соответствующих нулевым наборам функции."
ПРИМЕР. Для рассмотренных функций в табл. 2.1 построим СКНФ:
F1=(x1 v x2 v x3) (x1 v /x2 v /x3) (/x1 v x2 v x3) (/x1 v x2 v /x3) (/x1 v /x2 v x3)
F2=(x1 v x2 v x3) (x1 v x2 v /x3) (x1 v /x2 v x3) (/x1 v x2 v x3)
Функционально полные системы булевых функций.
"Любая булева функция может быть представлена аналитически одной из выше
рассмотренных нормальных форм. Последние используют ограниченное число
элементарных булевых функций. Например, для СДНФ такими функциями являются
"конъюнкция", "дизъюнкция" и "отрицание". Следовательно, существуют системы булевых
функций, с помощью которых можно аналитически представить любую сколь угодно
сложную булеву функцию. Проектирование цифровых автоматов основано на знании таких
систем булевых функций. Последнее особенно важно для разработки комплектов
интегральных микросхем, из которых можно построить призвольный цифровой автомат.
Проблема функциональной полноты является центральной проблемой функциональных
построений в алгебре логики.
Функционально полной системой булевых функций (ФПСБФ) называется совокупность таких булефых
функций (f1, f2, ... fk), что произвольная булева функция f может быть записана в виде формулы через
функции этой совокупности.
Исходя оз определения СДНФ, СПНФ, СКНФ и ФПСБФ следует отнести системы: (/\, \/,
не),(/\, , не).
Это обуславливает целесообразность постановки задачи определения свойств, которыми
должны обладать функции, составляющие ФПСБФ.
Решение этой задачи основано на понятии замкнутого относительно операции суперпозиции
класса функций. Класс булевых функций, функционально замкнутый по операции
суперпозиции, есть множество функций, любая суперпозиция которых дает функцию, также
принадлежащую этому множеству. Среди функционально замкнутых классов выделяют
классы обычного типа, называемые предполными, которые обладают следующими
свойствами. Предполный класс S не совпадает с множеством Р2 всех возможных булевых
функций, однако, если в него включить любую, не входящую в S, булеву функцию, то новый
функционально замкнутый класс будет совпадать с множеством Р2. Проведенные
исследования показали, что преднолных классов пять, а для построения ФПСБФ необходимо
и достаточно, чтобы ее функции не содержались полностью ни в одном из пяти предполных
классов.
Перечислим предполные классы булевых функций:
1.
2.
3.
4.
5.
булевы функции, сохраняющие константу 0;
булевы функции, сохраняющие константу 1;
самодвойственные булевы функции;
линейные булевы функции;
монотонные булевы функции;
Табл 3.1
х1х2
00
01
10
11
f0
0
0
0
0
f1
0
0
0
1
f2
0
0
1
0
f3
0
0
1
1
f4
0
1
0
0
f5
0
1
0
1
f6
0
1
1
0
f7
0
1
1
1
f8
1
0
0
0
f9
1
0
0
1
f10
1
0
1
0
f11
1
0
1
1
f12
1
1
0
0
f13
1
1
0
1
f14
1
1
1
0
f15
1
1
1
1
К булевым функциям сохраняющим константу 0, относят такие булеы функции f(x 1,...,xn), для которых
справедливо соотношение f(0,...,0)=0.
Примерами булевых функций, сохраняющих константу 0, являются функции f0, f1,..., f7 (табл
3.1). Поскольку таблица истинности для функций, сохраняющих константу 0, в первой
строке значений функций содержит 0, то имеется ровно 22(^n)-1 таких функций.
К булевым функциям сохраняющим константу 1, относят такие булеы функции f(x 1,...,xn), для которых
справедливо соотношение f(1,...,1)=1.
Примерами булевых функций, сохраняющих константу 1, являются функции f1, f3, f5, f7, f9,
f11, f13, f15 (табл 3.1). Поскольку таблица истинности для функций, сохраняющих константу 1,
в последней строке значений функций содержит 1, то имеется ровно 22(^n)-1 таких функций.
Прежде чем ввести понятие класса самодвойстенных функций, дадим следующее
определение.
Булевы функции f1(x1,...,xn) и f2(x1,...,xn) называются двойственными друг другу, если выполняется
соотношение
f1(x1,...,xn)=/(f2(/x1,...,/xn))
Двойственными являются функции f0 и f15, f1 и f7, f2 и f11 и т.д. (табл 3.1).
К самодвойственным булевым функциям относят такие булеы функции, которые двойственны по
отнощению к самим себе, т.е. справедливо соотношение f(x1,...,xn)=/(f(/x1,...,/xn)). Если условия назвать
противоположными наборами, набор <y1,y2,...,yn> и набор </y1,/y2,...,/yn>, то определение
самодвойственных функций дадим следующее.
Булева функция называется самодвойственной, если на любых двух противоположных наборах она
принимает противоположные значения.
Самодвойственными являются функции f3, f5, f10, f12 (табл 3.1). Из определения
самодвойственной функции следует, что она полностью определяется своими значениями на
первой половине строк таблицы истинности. Поэтому число всех самодвойственных
булевых функций f(x1,...,xn) равно
К линейным булевым функциям относят такие булевы функции, которые представимы в виде
f(x1,...,xn)=с0 + c1x1 + ... + cnxn,
где ci E {0,1}, а + операция "сумма по mod 2".
Линейными являются булевы функции f0, f3, f5, f6, f9, f10, f12, f15, (табл 3.1), ибо
f0 = 0, f3 = x1, f5 = x2, f6 = x1 + x2, f9 = x1 + x2 + 1, f10 = /x2 = 1 + x2, f12 = /x1 = 1 + x1, f15 = 1.
Примечание + = .
Поскольку линейная функция однозначно определяется заданием коэффициентов с0,...,сn, то
число линейных функций равно 2(n+1).
Прежде чем ввести понятие класса монотонных булевых функций, дадим следующее
определение.
Двоичный набор Y = <y1,y2,...,yn> не меньше двоичного набора B = <b1,b2,...,bn> , если для каждой пары
(Yi,Bi) i = 1...n справедливо соотношение Yi >= Bi.
Так, набор 1011 >= 1010. Вместе с тем наборы 1011 и 0100 несравнимы в том смысле, что
для них не выполняется ни соотношение Y >= B, ни Y <= B.
Булева функция f(x1,...,xn) называется монотонной, если для любых двух наборов Y = <y1,y2,...,yn> и B =
<b1,b2,...,bn> таких, что Y >= B имеет место неравенство f(y1,...,yn)>=f(b1,...,bn).
Монотонными являются булевы функции f0, f1, f3, f5, f7, f15 (табл. 3.1). Вместе с тем функция
f2 из табл. 3.1 не является монотонной, так как f2(1,0) > f2(1,1), хотя набор <1,0> меньше, чем
набор <1,1>.
Приведем без доказательства две формулировки теоремы о функциональной полноте.
Теорема.
Для того чтобы система S булевых функций была функционально полной, необходимо и достаточно,
чтобы эта система содержала хотя бы одну булеву функцию, не сохраняющую константу 1, хотя бы одну
булеву функцию, не сохраняющую константу 0, хотя бы одну несамодвойственную булеву функцию,
хотя бы одну нелинейную булеву функцию и хотя бы одну немонотонную булеву функцию.
Система булевых функций является функционаьно полной тогда и только тогда, когда она целиком не
содержится ни в одном из предполных классов.
Рассмотрим примеры ФПСБФ. Для удобства изложения материала сведем элементарные
булевы функциидвух переменных и некоторые функции одной переменной в таблицу,
класифицируя каждую из них по признакам принадлежности к предполным классам.
Из таблицы видно, что каждая из функций f8 и f14 являются ФПСБФ. Иными словами,
используя, например, только булеву функцию f14 - "штрих Шеффера", можно записать в виде
формулы любую булеву функцию. f14 = х1 / х2 = /х1 v /х2. Признаком функциональной
полноты, очевидно, является наличие плюса в каждом столбце таблицы, хотя бы для одной
из составляющих систему булевых функций. К таким ФСПБФ, наиболее распостраненным в
практике построения цифровых автоматов, следует отнести:
Иногда удобно строить ФПСБФ при наличии констант, т.е. булевых функций "константа 0",
"константа 1". Как следует из таблицы, функция "константа 0" несамодвойственна и не
сохраняет 1; функция "константа 1" несамодвойственна и не сохраняет 0. Вместе с тем
константы являютя линейными и монотонными функциями. Отсюда непосредственно (на
основании теоремы о функциональной полноте) вытекает следующее: система булевых
функций является ослабленно функционально полной, если она содержит хотя бы одну
нелинейную и хотя бы одну нелинейную и хотя бы одну немонотонную булеву функцию.
Примерами ослабленых ФПСБФ могут служить следующие системы:
Введенное понятие двойственных булевых функций позволяет сформулировать принцып
двойственности, заключающийся в следующем: если формула U=c[f1,...,fs] реализует булеву
фунуцию f(x1,...,xn), то формула U*=c[f*1,...,f*n], полученная из U заменой функций f1,...,fs на
двойственные функции f*1,...,f*s, соответтвенно реализует функцию f*=f*(x1,...,xn),
двойственную функции f. Формулу U называют двойственной U. Для формул над
множеством {0, 1, /x, x1x2, x1 v x2} принцип двойственности может быть сформулирован так:
для получения формулы U* двойственной формуле U достаточно в формуле U всюду
заменить 0 на 1, 1 на 0, & на \/, \/ на &. "
Минимизация булевых функций.
При проэктировании цифровых автоматов широко используются методы минимизации
булевых функций, позволяющие получать рекомендации для построения экономичных схем
цифровых автоматов. Общая задача минммизации булевых функций может быть
сформулирована следующим образом: найти аналитическое выражение заданой булевой
функции в форме, содержащей минимально возможное число букв. Следует отметить, что в
общей постановке данная задача пока не решена, однако достаточно хорошо исследована в
классе дизъюнктивно - конъюнктивных форм.
Определение.
Элементарной конъюнкцией называется конъюнкция конечного числа различных между собой булевых
переменных, каждая из которых может иметь или не иметь отрицания.
Определение.
Дизъюнктивной нормальной формой (ДНФ) называется дизъюнкция элементарных конъюкций.
Определение.
Минимальной дизъюнктивной нормальной формой булевой функции называется ДНФ, содержащая
наименьшее число букв (по отношению ко всем другим ДНФ, представляющим заданную булеву
функцию).
Определение.
Булева функция g(x1,...,xn) называется импликантой булевой функции f(x1,...,xn), если для любого набора
переменных, на котором g=1, справедливо f=1.
Таблица 4.1
x3x2x1
000
001
010
011
100
101
110
111
f = /x1x2x3 v x1x2/x3 v x1x2x3 = g7;
g1 = x1x2x3;
g2 = x1x2/x3;
f g1
0 0
0 0
0 0
1 0
0 0
0 0
1 0
1 1
g2
0
0
0
0
0
0
1
0
g3
0
0
0
0
0
0
1
1
g4
0
0
0
1
0
0
0
0
g5
0
0
0
1
0
0
0
1
g6
0
0
0
1
0
0
1
0
g7
0
0
0
1
0
0
1
1
g3 = x1x2x3 v x1x2/x3 = x1x2 (x3 v x3) = x1x2;
g4 = /x1x2x3;
g5 = /x1x2x3 v x1x2x3 = x2x3;
g6 = /x1x2x3 v x1x2/x3;
Определение.
Импликанта g булевой функции f, являющаяся элементарной конъюнкцией, называется простой, если
никакая часть импликанты g не является импликантой функции f.
Из примера видно, что импликанты g3 = x1x2 и g5 = x2x3 являются простыми импликантами
функции f. Импликанты g1, g2, g4, g6 не являются простыми, так как их части являются
импликантами функции f, например g3 является частью g1. Приведем без доказательства два
утверждения, полезные при получении минимальной ДНФ.
1. Дизъюнкция любого числа импликант булевой функции f также является импликантой
этой функции.
2. Любая булева функция f эквивалентна дизъюнкции всех своих простых импликант.
Такая форма представления булевой функции называется сокращенной ДНФ.
Перебор всех возможных импликант для булевой функции f из рассмотренного примера дает
возможность убедиться, что простых импликант всего две: g3 и g5. Следовательно,
сокращенная ДНФ функции f имеет вид
f = g3 v g5 = x1x2 v x2x3.
Как видно из табл. 4.1, импликанты g3, g5 в совокупности покрывают своими единицами все
единицы функции f. Получение сокращенных ДНФ является первым этапом отыскания
минимальных форм булевых функций. Как уже отмечалось, в сокращенную ДНФ входят все
простые импликанты булевой функции. Иногда из сокращенной ДНФ можно убрать одну
или несколько простых импликант, не нарушая эквивалентности исходной функции. Такие
простые импликанты назовем лишними. Исключение лишних простых импликант из
сокращенных ДНФ - второй этап минимизации.
Определение.
Сокращенная ДНФ булевой функции называется тупиковой, если в ней отсутствуют лишние простые
импликанты.
Устранение лишних простых импликант из сокращенной ДНФ булевой функции не является
однозначным процессом, т. е. булева функция может иметь несколько тупиковых ДНФ.
Утверждение.
Тупиковые ДНФ булевой функции f, содержащие минимальное число букв, являются минимальными.
Минимальных ДНФ тоже может быть несколько.
Рассмотрим несколько методов минимизации. Все они практически различаются лишь на
первом этапе - этапе получения сокращенной ДНФ. Следует отметить, что, к сожалению,
поиск минимальной ДНФ всегда связан с некоторым перебором решений. Существуют
методы уменьшения этого перебора, однако он всегда остается."
Метод Квайна.
основывается на применении двух основных соотношений.
1. Соотношение склеивания
Ах V А/х = Ах V А/х V А,
где А - любое элементарное произведение.
2. Соотношение поглощения
А~х V А = А, ~х E {х; /x}.
Справедливость обоих соотношений легко проверяется. Суть метода заключается в
последовательном выполнении всех возможных склеиваний и затем всех поглощений, что
приводит к сокращенной ДНФ. Метод применим к совершенной ДНФ. Из соотношения
поглощения следует, что произвольное элементарное произведение поглощается любой его
частью.
Для доказательства достаточно показать, что произвольная простая импликанта р = x i1xi2 ...
xin может быть получена. В самом деле, применяя к р операцию развертывания (обратную
операции склеивания):
A = A (x v /x) = Ax v A/x
по всем недостающим переменным xi^(k+l), ..., Xi^n исходной функции f, получаем
совокупность S конституент единицы. При склеивании всех конституент из S получим
импликанту р. Последнее очевидно, поскольку операция склеивания обратна операции
развертывания. Множество S конституент обязательно присутствует в совершенной ДНФ
функции f поскольку р - ее импликанта.
Таблица 4.1.1
x4x3x2x1
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
f
0
1
0
1
0
1
0
1
0
0
0
0
0
0
1
1
Пример. Пусть имеется булева функция, заданная таблицей истинности (табл. 9.1.1). Ее
СДНФ имеет вид
f = /x1/x2/x3x4 v /x1/x2x3x4 v /x1x2/x3x4 v /x1x2x3x4 v x1x2x3/x4 v x1x2x3x4.
Для удобства изложения пометим каждую конституенту единицы из СДНФ функции f
каким-либо десятичным номером (произвольно). Выполняем склеивания. Конституента 1
склеивается только с конституентой 2 (по переменной x3) и с конституентой 3 (по
переменной х2), конституента 2 с конституентой 4 и т. д. В результате получаем
1 - 2: /x1/x2x4;
1 - 3: /x1/x3x4;
2 - 4: /x1x3x4;
3 - 4: /x1x2x4;
4 - 6: x2x3x4;
5 - 6: x1x2x3.
Заметим, что результатом склеивания является всегда элементарное произведение,
представляющее собой общую часть склеиваемых конституент Далее производим
склеивания получаемых элементарных произведений.
Склеиваются только те произведения, которые содержат одинаковые переменные. Имеет
место два случая склеивания:
/x1/x2x4 v /x1x2x4 = /x1/x2x4 v /x1x2x4 v /x1x4;
/x1/x3x4 v /x1x3x4 = /x1/x3x4 v /x1x3x4 v /x1x4,
с появлением одного и того же элементарного произведения /x1x4. Дальнейшие склеивания
невозможны. Произведя поглощения (из полученной ДНФ вычеркиваем все поглощаемые
элементарные произведения), получим сокращенную ДНФ:
x2x3x4 v x1x2x3 v /x1x4.
Переходим ко второму этапу. Для получения минимальной ДНФ необходимо убрать из
сокращенной ДНФ все лишние простые импликанты. Это делается с помощью специальной
импликантной матрицы Квайна. Строки такой матрицы отмечаются простыми импликантами
булевой функции, т. е. членами сокращенной ДНФ, а столбцы - конституентами единицы, т.
е. членами СДНФ булевой функции.
Пример (продолжение). Импликантная матрица имеет вид (табл. 4.1.2).
Таблица 4.1.2
Конституенты единицы
Простые
импликанты /x1/x2/x3x4 /x1/x2x3x4 /x1x2/x3x4 /x1x2x3x4 x1x2x3/x4 x1x2x3x4
/x1x4
x2x3x4
x1x2x3
X
X
X
X
X
X
Х
Х
Как уже отмечалось, простая импликанта поглощает некоторую конституенту единицы, если
является ее собственной частью. Соответствующая клетка импликантной матрицы на
пересечении строки (с рассматриваемой простой импликантой) и столбца (с конституентой
единицы) отмечается крестиком (табл. 9.1.2). Минимальные ДНФ строятся по импликантной
матрице следующим образом:
1. ищутся столбцы импликантной матрицы, имеющие только один крестик.
Соответствующие этим крестикам простые импликанты называются базисными и
составляют так называемое ядро булевой функции. Ядро обязательно входит в
минимальную ДНФ.
2. рассматриваются различные варианты выбора совокупности простых импликант,
которые накроют крестиками остальные столбцы импликантной матрицы, и
выбираются варианты с минимальным суммарным числом букв в такой совокупности
импликант.
Пример (продолжение). Ядром нашей функции являются импликанты x1x2x3; /x1x4.
Импликанта x2x3x4 - лишняя, так как ядро накрывает все столбцы импликантной матрицы.
Поэтому функция имеет единственную тупиковую и минимальную ДНФ:
f = x1x2x3 v /x1x4
Следует отметить, что число N крестиков в одной строке всегда является степенью 2. Более
того, читатель может легко убедиться в том, что
N = 2n-k
где k - число букв, содержащихся в простой импликанте.
Заметим также, что используя различные соотношения, можно расширить область
применения метода Квайна за пределы совершенной ДНФ."
Метод Квайна - Мак-Класки.
"Метод представляет собой формализованный на этапе нахождения простых импликант
метод Квайна. Формализация производится следующим образом:
1. Все конституанты единицы из СДНФ булевой функции f записываются их двоичными
номерами.
2. Все номера разбиваются на непересекающиеся группы. Признак образования i-й
группы: i единиц в каждом двоичном номере конституенты единицы.
3. Склеивание производят только между номерами соседних групп. Склеиваемые
номера отмечаются каким-либо знаком (зачеркиванием).
4. Склеивания производят всевозможные, как и в методе Квайна. Неотмеченные после
склеивания номера являются простыми импликантами.
Нахождение минимальных ДНФ далее производится по импликантной матрице, как и в
методе Квайна. Более подробно рассмотрим метод на примере решения следующей задачи:
минимизировать методом Квайна - Мак-Класки булеву функцию f, заданную таблицей
истинности 4.2.1.
Таблица 4.2.1
x4x3x2x1
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

f
0
1
0
1
0
1
0
1
0
0
0
0
0
0
1
1
В СДНФ функции f заменим все конституенты единицы их двоичными номерами:
f = 0001 v 0011 v 0101 v 0111 v 1110 v 1111.

Образуем группы двоичных номеров. Признаком образования i - й группы является i
единиц в двоичном номере конституенты единицы (табл. 4.2.2).
Таблица 4.2.1
Номер
группы
0
1
2
3
4

Двоичные номера
конституент единицы
—
0001
0011, 0101
0111, 1110
1111
Склеим номера из соседних групп табл. 4.2.1. Склеиваемые номера вычеркнем
(Прим. - выделяем цветом). Результаты склеивания занесем в табл. 4.2.2. Склеим
номера из соседних групп табл. 4.2.2. Склеиваться могут только номера, имеющие
звездочки в одинаковых позициях. Склеиваемые номера вычеркнем. Результаты
склеивания занесем в табл. 4.2.3.
Таблица 4.2.2
Номер
группы
1
2
3
Двоичные номера
конституент единицы
00*1, 0*01
0*11, 01*1
*111, 111*
Таблица 4.2.3
Номер
группы
1
Двоичные номера
конституент единицы
0**1

Имеем три простые импликанты: *111, 111*, 0**1.

Строим импликантную матрицу (табл. 4.2.4). По таблице определяем совокупность
простых импликант - 0**I и 111*, соответствующую минимальной ДНФ. Для
восстановления буквенного вида простой импликанты достаточно выписать
произведения тех переменных, которые соответствуют сохранившимся двоичным
цифрам.
Таблица 4.1.2
Простые
импликанты
0**1
*111
111*
Конституенты единицы
0001 0011 0101 0111 1110 1111
X
X
X
X
X
X
Х
Х
0**1 —> /x1x4;
111* —> x1x2x3.
Заметим, что разбиение конституент на группы позволяет уменьшить число попарных
сравнений при склеивании."
Метод Блейка - Порецкого.
" Метод позволяет получать сокращенную ДНФ булевой функции f из ее произвольной
ДНФ. Базируется на применении формулы обобщенного склеивания:
Ax v B/x = Ax v B/x v AB,
справедливость которой легко доказать. Действительно,
Ax = Ax v ABx; B/x = B/x v AB/x.
Следовательно,
Ах v В/х = Ах v АВх v В/х v АВ/х = Ах V В/х V АВ.
В основу метода положено следующее утверждение: если в произвольной ДНФ булевой
функции f произвести все возможные oбобщенные склеивания, а затем выполнить все
поглощения, то в результате получится сокращенная ДНФ функции f.
Пример.
Булева функция f задана произвольной ДНФ.
f = /x1/x2 v x1/x2/x3 v x1x2.
Найти методом Блейка - Порецкого сокращенную ДНФ функции f. Проводим обобщенные
склеивания. Легко видеть, что первый и второй элемент заданной ДНФ допускают
обобщенное склеивание по переменной х1. В результате склеивания имеем:
/x1/x2 v x1/x2/x3 = /x1/x2 v x1/x2/x3 v /x2/x3.
Первый и третий элемент исходной ДНФ допускают обобщенное склеивание как по
переменной х1, так и по х2. После склеивания по x1 имеем:
/x1/x2 v x1x2 = /x1/x2 v x1x2 v /x2x2 = /x1/x2 v x1x2.
После склеивания по x2 имеем:
/x1/x2 v x1x2 = /x1/x2 v x1x2 v /x1x1 = /x1/x2 v x1x2.
Второй и третий элемент ДНФ допускают обобщенное склеивание по переменной х2. После
склеивания получаем:
x1/x2/x3 v x1x2 = x1/x2/x3 v x1x2 v x1x3.
Выполнив последнее обобщенное склеивание, приходим к ДНФ:
f = /x1/x2 v x1/x2/x3 v /x2/x3 v x1x2 v x1/x3.
После выполнения поглощений получаем:
f = /x1/x2 v /x2/x3 v x1x2 v x1/x3.
Попытки дальнейшего применения операции обобщенного склеивания и поглощения не
дают результата. Следовательно, получена сокращенная ДНФ функции f. Далее задача
поиска минимальной ДНФ решается с помощью импликантной матрицы точно так же, как в
методе Квайна."
Метод диаграмм Вейча.
" Метод позволяет быстро получать минимальные ДНФ булевой функции f небольшого
числа переменных. В основе метода лежит задание булевых функций диаграммами
некоторого специального вида, получившими название диаграмм Вейча. Для булевой
функции двух переменных диаграмма Вейча имеет вид (табл. 4.4.1).
Каждая клетка диаграммы соответствует набору переменных булевой функции в ее таблице
истинности. В (табл. 4.4.1) это соответствие показано, В клетке диаграммы Вейча ставится
единица, если булева функция принимает единичное значение на соответствующем наборе.
Нулевые значения булевой функции в диаграмме Вейча не ставятся. Для булевой функции
трех переменных диаграмма Вейча имеет следующий вид (табл. 4.4.2).
Добавление к ней еще такой же таблицы дает диаграмму для функции 4-х переменных (табл.
4.4.3).
Таким же образом, т. е. приписыванием еще одной диаграммы 3-х переменных к только что
рассмотренной, можно получить диаграмму для функции 5-ти переменных и т. д., однако
диаграммы для функций с числом переменных больше 4-х используются редко. Для
приведенных диаграмм характерно следующее:


каждой клетке диаграммы соответствует свой набор;
соседние наборы расположены рядом в строке либо в столбце.
Соседними наборами называются наборы, отличающиеся одной компонентой. Напомним,
что конституенты, соответствующие таким наборам, склеиваются (см. метод Квайна- МакКласки). Например, для функции, заданной табл. 9.22,
конституенты, соответствующие паре единиц в левой части таблицы, склеиваются и
порождают элементарное произведение из 2-х букв:
х1х2/х3 v x1x2x 3 = x1x2
О паре единиц в правой части диаграммы можно сказать то же самое:
/х1х2/х3 v /x1/x2/x 3 = /x1/x3
Отметим, что получающееся элементарное произведение легко определить сразу по
диаграмме: это произведение переменных, принимающих одно и то же значение в обеих
клетках.
Еще одно важное замечание: столбцы, расположенные по краям диаграммы, тоже считаются
соседними. Для нашего примера это означает, что имеет место еще одно склеивание, в
результате которого, следуя указанному правилу, получаем элементарное произведение x 2/x3
Из рассмотренных ранее методов нам известно, что возможно дальнейшее склеивание
получаемых элементарных произведений. На диаграммах Вейча они тоже располагаются
рядом. Общее правило склеивания на диаграммах Вейча можно сформулировать следующим
образом: склеиванию подлежат прямоугольные конфигурации, заполненные единицами и
содержащие число клеток, являющееся степенью 2. Получающееся новое элементарное
произведение определяется как произведение переменных, не меняющих своего значения на
всех склеиваемых наборах. Число m оставшихся переменных в элементарном произведении
определяется легко:
m = n - log2M
где n - число переменных функции, М - число склеиваемых наборов. Метод широко
используется на практике, благодаря простоте и удобству. После небольшой тренировки
достигается элементарный навык определения минимальной ДНФ по диаграмме "с первого
взгляда". Минимизация булевой функции заключается в нахождении минимального
накрытия всех единиц диаграммы Вейча блоками из единиц (указанной конфигурации),
расположенных в соседних клетках диаграммы. При этом всегда считается, что левый край
диаграммы Bейча 4-х переменных примыкает к ее правому краю, а верхний oкрай
диаграммы примыкает к нижнему ее краю. После получения минимального накрытия всех
единиц диаграммы Вейча, минимальная ДНФ булевой функции записывается как
дизъюнкция элементарных конъюнкций, соответствующих выделенным блокам единиц в
диаграмме. Рассмотрим несколько примеров.
Пример. Булева функция f имеет следующую СДНФ:
f=х1х2х3 v х1/х2х3 v /х1/х2/х3 v /х1/х2/х3 v х1х2/х3.
Найти минимальную ДНФ с помощью диаграммы Вейча. Диаграмма Вейча,
соответствующая функции f, представлена в табл. 4.4.5. Минимальное накрытие всех единиц
диаграммы возможно только блоками по две единицы. Каждому такому блоку соответствует
своя конъюнкция, как показано в табл. 4.4.5.
Следовательно, минимальная ДНФ функции имеет вид:
f = х1х2 v /х1/х2 v х1х3.
Пример.
f1=х1х2х3 v /х1х4.
f2=х1х2х4 v х2х3/х4 v х1х3 v /х2х3х4 v х1х2х3x4.
f3=х3/х4 v /х3х4.
f4=/х3х4 v /х1х4 v х1х3/х4.
f5=х3 v х4.
f6=х3х4 v /х3/х4 v х1х2х3.
"
Минимизация коньюнктивных нормальных форм.
"Минимизация КНФ производится аналогично рассмотреным методам минимизации ДНФ
булевых функций, поэтому остановимся лишь на основных положениях.
Напомним, что конституентой нуля называется функция, принимающая значение 0 на одном
наборе. Она выражается дизъюнкцией всех переменных функций. Например, набору 0110
соответствует конституента нуля x1v/x2v/x3vx4.
Определение.
Имцлицентой g булевой функции f называется функция, принимающая значение 0 на подмножестве
нулевых наборов функции f.
Определение.
Простой имплицентой функции f называется элементарная дизъюнкция, являющаяся имплицентой
функции f, причем никакая ее собственная часть имплицентой функции f не является.
Задачей минимизации КНФ является определение минимальной КНФ. Эта задача также
решается в два этапа - поиск сокращенной КНФ (конъюнкция всех простых имплицент) и
затем нахождение минимальной КНФ. Второй этап минимизации выполняется с помощью
таблицы Квайна точно так же, как при поиске минимальной ДНФ, так как возможны только
два варианта: либо данная простая имплицента поглощает данную конституенту нуля, либо
нет в соответствии с соотношением поглощения
(A v x)A = A
Что касается первого этапа - поиска всех простых имплицент, то практически все методы
минимизации ДНФ имеют свои аналоги для КНФ. Расссмотрим это подробнее.
Соотношение склеивания по Квайну
(A v x)(A v /x) = (A v x)(A v /x)A.
Соотношение склеивания по Блейку
(A v x)(B v /x) = (A v x)(B v /x)(A v B)
Метод Нельсона в применении к задаче минимизации КНФ: раскрытие скобок в
произвольной ДНФ функции и выполнение поглощений приводит к сокращенной КНФ.
Предполагаются скобки в начале и конце каждого элементарного произведения исходной
ДНФ и использование второго дистрибутивного закона. Например, функция, заданная
минимальной ДНФ: x1/x2 v /x1x2 дает возможность определить ее сокращенную КНФ
(x1 v /x1)(x1 v x2) (/x2 v /x1)(x2 v /x2) = (x1 v x2)(/x1 v /x2)
По диаграмме Вейча поиск минимальной КНФ осуществляется так же просто, как в случае
ДНФ. Отличие состоит лишь в том, что анализируются нулевые наборы и переменные
выписываются с инверсиями. Например, для функции, заданной диаграммой (табл. 4.5.1)
минимальной КНФ, является
(/x1 v x3)(x2 v x3)(/x1 v /x2 v /x3)
Для сравнения найдем минимальную ДНФ: /x1x2 v /x2x3 v x3/x4. В данном случае ДНФ
оказалась проще, В общем случае о сравнительной сложности минимальных ДНФ и КНФ
нельзя говорить заранее, но можно отметить следующее: количество букв минимальной
ДНФ произвольной функции f и минимальной КНФ функции /f одинаково."
Метод Петрика.
"Метод используется для нахождения всех минимальных покрытий конституент единицы и
позволяет получить все тупиковые ДНФ по импликантной матрице. Суть метода
заключается в следующем. По импликантной матрице строится так называемое
конъюнктивное представление мипликантной матрицы. Для этого все простые импли-канты
обозначаются разными буквами (обычно прописными латин-скими). После этого, для
каждого i-ro столбца импликантной матрицы строится дизъюнкция всех букв, обозначающих
строки матрицы, пересечение которых с i-м столбцом отмечено крестиком. Конъюнктивное
представление импликантной матрицы образуется как конъюнкция построенных
дизъюнкций для всех столбцов матрицы. К конъюнктивному представлению матрицы могут
быть применены все соотношения булевой алгебры с целью его упрощения. После
раскрытия скобок и выполнения всех возможных поглощений получается дизъюнкция
конъюнкций, каждая из которых содержит все импликанты тупиковой ДНФ.
Пример.
Задана имшшкантная матрица (табл. 4.6.1). Найти методом Петрика все тупиковые ДНФ
булевой функции f, описываемой данной матрицей.
Таблица 4.6.1
Конституенты единицы
Простые
импликанты /x1/x2/x3x4 /x1/x2x3x4 /x1x2/x3x4 /x1x2x3x4 x1x2x3/x4 x1x2x3x4
/x1x4
x2x3x4
X
X
X
X
X
x1x2x3
X
Х
Х
Имеющиеся простые импликанты обозначим буквами:
/x1x4 = A. x2x3x4 = B. x1x2x3 = C.
Тогда конъюнктивное представление w матрицы имеет вид
w = A*A*A*(A v B)*C(B v C).
Упростим его.
w = A*(A v B)*C(B v C) = AC.
Тупиковая ДНФ содержит две простые импликанты: А = /x1x4 и C = x1x2x3 и имеем вид f =
/x1x4 v x1x2x3."
Минимизация частично определенных булевых функций.
" В реальных задачах очень часто бывает так, что значение булевой функции на некоторых
наборах не определено и может доопределяться произвольно. В этом случае доопределение
функции было бы целесообразно производить таким образом, чтобы ее минимальная
нормальная форма имела наименьшее число букв из всех возможных вариантов
доопределения. Рассмотрим простой пример. Функция задана диаграммой Вейча,
представленной (табл. 4.7.1(a)).
Доопределение функции на неопределенных наборах единицами (табл 4.7.1(b))
или нулями (табл 4.7.1(c))
приводит к разным минимальным ДНФ Однако более простая минимальная ДНФ
получается, если произвести доопределение так, как это сделано на диаграмме Вейча (табл.
4.7.2)
Алгоритм поиска минимальной ДНФ частично определенной функции f можно представить
следующим образом


Найти любым известным способом сокращенную ДНФ функции, получающейся
доопределением единицами исходной функции f на всех неопределенных наборах.
Выбрать минимальную ДНФ по импликантной матрице, где в столбцах выписаны
лишь те конституенты единицы функции f, которые соответствуют полностью
определенным единичным наборам.
Аналогичный алгоритм (с доопределением нулевыми наборами) может быть предложен для
поиска КНФ При этом доопределение таблицы истинности функции f может быть
произведено по разному для КНФ и ДНФ.
Заметим, что для решения рассматриваемой задачи практически достаточно тех навыков,
которые были получены при минимизации полностью определенных булевых функций
непосредственно по диаграмме Вейча. Приведем несколько примеров. В случаях, когда
минимальных форм несколько, приводится одна из них.
Для функции, представленной табл. 4.7.3:
ДНФ: x1x2 v /x1/x3 v /x3/x4;
КНФ: (x1 v /x3)(/x3 v x4)(x2 v /x4).
Для функции, представленной табл. 4.7.4
ДНФ: x3 v x2x4;
КНФ: (x2 v x3)(x3 v x4).
Для функции, представленной табл. 4.7.5:
ДНФ: x1/x4 v /x1x2x4;
КНФ: (/x1 v /x4)(x1 v x2)(x1 v x4).
Для функции, представленной табл. 4.7.6:
ДНФ: x3 v x1x4 v x1/x2;
КНФ: (x1 v /x3)(/x2 v /x3 v x4)."
Минимизация систем булевых функций.
"На практике очень часто приходится реализовывать совокупности булевых функций. Если
произвести минимизацию булевых функций, входящих в систему, независимо друг от друга,
то общая схема будет состоять из изолированных подсхем. Ее можно иногда упростить за
счет объединения участков подсхем, реализующих одинаковые члены, входящие в несколько
булевых функций системы. Задача минимизации систем булевых функций хорошо исследова
на в классе функционально полных систем: "дизъюнкция", "конъюнк ция", "отрицание".
Рассмотрим один из наиболее распространенных методов минимизации. Пусть задана
система полностью определенных булевых функций, представленных в дизъюнктивной
нормальной форме, например:
f1(x1,x2,x3) = x1/x3 v x1/x2 v /x1x3;
f2(x1,x2,x3) = x1/x2 v /x1x3 v /x1x2;
f3(x1,x2,x3) = x1x2 v /x1/x2/x3,
Все различные элементарные конъюнкции системы функций объединим в множество А,
которое назовем полным множеством элементарных конъюнкций cистемы функций. В
нашем случае А = {x1/x3; x1/x2; /x1x3; /x1x2; x1x2; /x1/x2/x3}. Сумма рангов (число букв)
элементарных конъюнкций множества А является удобным критерием оценки сложности
заданной системы булевых функций.
Определение.
Система дизъюнктивных нормальных форм булевых функций называется минимальной, если ее полное
множество элементарных конъюнкций содержит минимальное количество букв, а каждая
дизъюнктивная нормальная форма булевой функции системы включает минимальное число
элементарных конъюнкций наименьшего ранга. При этом дизъюнктивная нормальная форма
представления булевой функции в минимальной системе в общем случае не совпадает с ее
минимальной дизъюнктивной нормальной формой.
Минимизация систем полностью определенных булевых функций может производиться по
алгоритму, аналогичному алгоритму метода Квайна с небольшими отличиями. Алгоритм
минимизации следующий.


Построить полное множество А элементарных конъюнкций минимизируемой системы
функций, считая, что вначале каждая из функций системы представлена в СДНФ.
Каждой конституенте единицы множества А присвоить признак, содержащий номера
функций системы, в которые входит рассматриваемая конституента.
Произвести минимизацию СДНФ функции f, конституентами единицы которой
являются все элементы множества A. При выполнении склеивания двух конституент
единицы каждой вновь образуемой элементарной конъюнкции присвоить признак,
состоящий из номеров функций, общих для двух склеиваемых конституент единицы

(см. примеры). Последнее справедливо и для двух склеиваемых элементарных
конъюнкций с признаками. Если признаки склеиваемых конституент единицы не
содержат общих номеров, то склеивание не производится. Поглощение производится
только для элементарных конъюнкций с одинаковыми признаками. Полученные в
результате склеивания и поглощения конъюнкции называются простыми
импликантами системы функций.
Построить импликантную матрицу функции f, аналогичную мат- риае Квайна с той
разницей, что для каждой конституенты единицы выделяется столько столбцов,
сколько различных номеров функций со- держит ее признак. Покрытие матрицы
импликантами производится аналогично методу Квайна.
Пусть система булевых функций задана таблицей истинности (табл. 5.1). Найдем
минимальную ДНФ системы булевых функций.
Таблица 5.1
x1x2x3
000
001
010
011
100
101
110
111
f1
1
0
0
0
0
1
1
1
f2
1
0
1
1
0
1
0
0
Представим каждую из функций системы в СДНФ:
f1 = /x1/x2/x3 v x1/x2x3 v x1x2/x3 v x1x2x3;
f2 = /x1/x2/x3 v /x1x2/x3 v /x1x2x3 v x1/x2x3.
1. Построим полное множество А элемейтарных конъюнкций полученной системы,
приписывая каждой конституенте единицы признак вхождения в функции f1 и f2:
A = {/x1/x2/x3(1,2); /x1x2/x3(2); /x1x2x3(2); x1/x2x3(1,2); x1x2/x3(1); x1x2x3(1)}.
2. Построим СДНФ функции ф:
ф = /x1/x2/x3(1,2) v /x1x2/x3(2) v /x1x2x3(2) v x1/x2x3(1,2) v x1x2/x3(1) v x1x2x3(1).
Для удобства выполнения склеивания пронумеруем каждую конституенту единицы из
СДНФ функции ф и выполним все склеивания:
ф=
/x1/x2/x3(1,2) v
1
/x1x2/x3(2) v
2
/x1x2x3(2) v
3
x1/x2x3(1,2) v
4
x1x2/x3(1) v
5
x1x2x3(1);
6
1 - 2: /x1/x3(2) v /x1x2x/3(2) v /x1/x2/x3(1,2);
2 - 3: /x1x2(2) v /x1x2x3(2) v /x1x2x3(2);
4 - 6: x1x3(1) v x1/x2x3(1,2) v x1x2x3(1);
5 - 6: x1x2(1) v x1x2/x3(1) v x1x2x3(1);
После проведения всех поглощений, с учетом признака каждой конъюнкции, получим:
ф = /x1/x3(2) v x1x3(1) v /x1x2(2) v x1x2(1) v x1/x2x3(1,2) v /x1/x2/x3(1,2);
Дальнейшие склеивания и поглощения невозможны. Получены простые импликанты
минимизируемой системы булевых функций.
3. Строим импликантную матрицу (табл. 5.2). Столбцы матрицы помечаем конституентами
единицы из СДНФ функции ф. Для каждой конституенты единицы отводим столько
столбцов матрицы, сколько различных номеров функций содержит признак конституенты.
Строки матрицы помечаем простыми импликантами системы булевых функций. Заполнение
матрицы аналогично методу Квайна. Ядром функции ф, очевидно, являются простые
импликанты /x1/x2/x3(1,2); /x1x2(2); x1/x2x3(1,2); x1x2(1), где для соответствующих конституент
единицы функции ф имеется единственная отметка на пересечении столбца и строки импликантной матрицы. Выделенное ядро покрывает все конституенты единицы из СДНФ
функции ф.
Таблица 5.2
Простые
импликанты
системы
функций
/x1/x3 (2)
x1x3 (1)
/x1x2 (2)
x1x2 (1)
x1/x2x3 (1,2)
/x1/x2/x3 (1,2)
/x1/x2/x3
1
Конституенты единици функции Ф
/x1x2/x3
/x1x2x3
x1/x2x3
x1x2x3
2
2
X
X
2
1
2
X
X
1
1
X
X
X
X
X
x1x2/x3
X
X
X
В соответствии с этим имеем:
ф = /x1/x2/x3(1,2) v x1/x2x3(1,2) v /x1x2(2) v x1x2(1).
Выделив для функции fi импликанты с признаком, включающим i, получим следующую
минимальную дизъюнктивную нормальную форму системы функций:
f1 = /x1/x2/x3 v x1/x2x3 v x1x2;
f2 = /x1/x2/x3 v x1/x2x3 v /x1x2.
К недостаткам изложенного метода следует отнести большую трудоемкость проведения
операций склеивания и поглощения с признаками."
Download