Пономарев В.Ф. Основы дискретной математики. Учебное пособие / Основы дискретной математики - 3ч
.docfmin(x1;x2;x3;x4)=(x1x4)(x1x2x4)(x1x2x3).
Итак, получены две альтернативные минимальные формы КНФ булевой функции, заданной в 3.10.1 СКНФ.
4.10.3. Минимизация частично определённой булевой функции.
В реальных задачах часто значение булевой функции на некоторых наборах двоичных переменных не определено и может принимать любое значение. В этих случаях удобно воспользоваться картами Карно и доопределить булеву функцию так, чтобы получить минимальную нормальную форму. Для объяснения метода доопределения и минимизации воспользуемся примерами, данными в 3.10.1 в виде СДНФ и СКНФ булевой функции. На рис. 54 приведена карта Карно и заданные значения булевой функции. При этом оказалось, что для наборов (1;1;0;1) и (1;0;1;0) не определено значение булевой функции. Отметим эти элементы таблицы знаком “”.
Если для набора (1;1;0;1) допустить значение булевой функции 1, то минимальная ДНФ примет вид:
fmin(x1;x2;x3;x4)=x1x4x1x2.
Если для набора (1;0;1;0) допустить значение булевой функции 0, то минимальная КНФ примет вид:
fmin(x1;x2;x3;x4)=(x1x4)(x1x2).
Так можно использовать частичное определение булевой функции для уменьшения формы формулы булевой функции.
x1
1100 1
1110 1
0110 0
0100 0
1101
1111 1
0111 1
0101 1
1001 0
1011 0
0011 1
0001 1
1000 0
1010
0010 0
0000 0
x3
Рис. 54.Карта Карно для примера 3.10.1.
x2
x4
4.10.4. Минимизация системы булевых функций.
Система булевых функций, представленная в совершенной нормальной форме (ДНФ или КНФ), называется минимальной, если её полное множество простых импликант (имплицент) содержит минимальное число двоичных переменных, а минимальное множество простых импликант представляет каждую булеву функцию системы.
Поэтому для поиска минимальной ДНФ (КНФ) формируется полное множество элементарных конъюнкций (дизъюнкций) системы K, приписывая к каждому элементу множества индекс булевой функции. На основе множества K следует построить новую функцию с указанием номера исходной булевой функции. Для построенной вновь функции выполнить процедуру минимизации любым методом. При использовании метода Квайна необходимо найти тупиковые ДНФ (КНФ), построить таблицы простых импликант (имплицент) и выбрать такие импликанты (имплиценты), минимальное число которых содержит наименьшее число двоичных переменных.
Пусть дана система булевых функций:
{
f1(x1;x2;x3)=x1x2x3x1x2x3x1x2x3x1x2x3;
f2(x1;x2;x3)=x1x2x3x1x2x3x1x2x3x1x2x3,
для которой множество K содержит следующие конъюнкции (конституенты 1):
K={x1x2x3(1;2);x1x2x3(2);x1x2x3(2);x1x2x3(1;2);x1x2 x3(1); x1x2x3(1)}.
Построим новую функцию (x1;x2;x3) с указанием индексов заданных функций:
(x1;x2;x3)=x1x2x3(1;2)x1x2x3(2)x1x2x3(2)x1x2x3(1;2)
x1x2x3(1)x1x2x3(1).
Выполняя процедуры обобщённого склеивания и поглощения можно получить тупиковую ДНФ функции:
(x1;x2;x3)=x1x3(2)x1x3(1)x1x2(2)x1x2(1)x1x2x3(1;2)
x1x2x3(1;2).
Таблица 40.
Простые импли
канты
Kj
Элементарные
конъюнкции СДНФ -
Ki
x1x2x3
x1x2x3
x1x2x3
x1x2x3
x1x2x3
x1x2x3
индекс булевых
функций fi(x1;x2;x3).
f1
f2
f2
f2
f1
f2
f1
f1
x1x3 (2)
0
1
0
0
0
0
0
0
x1x3 (1)
0
0
0
0
1
0
0
1
x1x2 (2)
0
0
[1]
[1]
0
0
0
0
x1x2 (1)
0
0
0
0
0
0
[1]
1
x1x2x3 (1;2)
0
0
0
0
1
[1]
0
0
x1x2
x3(1;2)
[1]
1
0
0
0
0
0
0
Ядерными импликантами для двух исходных булевых функций являются (x1x2), (x1x2), (x1x2x3) и (x1x2x3). Эти ядерные импликанты покрывают все элементарные конъюнкции исходных булевых функций. Следовательно, не нужно искать минимальные значения среди неядерных импликант.
Выделенное ядро позволяет построить минимальную ДНФ для функции :
fmin(x1;x2;x3)=x1x2(2)x1x2(1)x1x2x3(1;2)x1x2x3(1;2).
{
f1min(x1;x2;x3)=x1x2x3 x1x2x3x1x2;
f2min(x1;x2;x3)=x1x2x3x1x2x3x1x2.
Особенностью этой системы является то, что обе функции содержат одинаковые ядерные импликанты (x1x2x3) и (x1x2x3) и только по одной отличной для каждой функции ядерной импликанте (x1x2)1 и (x1x2)2.
Для более сложной системы булевых функций (больше двоичных переменных или больше булевых функций) удобнее использовать карты Карно, которые облегчают поиск общих импликант для нескольких булевых функций.
Пусть дана система булевых функций:
f1(x1;x2;x3)=x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4 x1x2x3x4x1x2x3x4;
f2(x1;x2;x3)=x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4;
f3(x1;x2;x3)=x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4 x1x2x3x4;
f4(x1;x2;x3)=x1x2x3x4x1x2x3x4x1x2x3x4x1x2x3x4 x1x2x3x4x1x2x3x4.
Составим карту Карно, на которой каждой конституенте “1” припишем индексы исходных булевых функций (см. рис. 55).
x1
11;2;3;4
0
0
11;2;3;4
12;3;4
0
0
12;3;4
11,2
0
13
11,2
11
14
13,4
11
x3
Рис. 55. Карта Карно для примера системы
булевых функций.
x4
x2
f1(x1;x2;x3)=x2x3x3x4;
f2(x1;x2;x3)=x2x3x3x4;
f3 (x1;x2;x3)=x2x3x1x2x3;
f4(x1;x2;x3)=x2x3x2x3x4.
{
Так формируется система минимальных булевых функций с помощью карт Карно.
4.11. Реализация логических функций техническими средствами.
Поскольку логическая функция осуществляет однозначное отображение множества наборов {(x1;x2;……;xn)}, в которых компоненты xi принимают значение из множества {0;1}, в множество y={0;1}, то для её реализации могут быть использованы переключательные или вентильные элементы. Переключательные элементы обладают двумя состояниями и двухсторонней проводимостью. Такими элементами являются выключатели, реле, ключи, коммутаторы и т.п. Вентильные элементы обладают также двумя состояниями, но, как правило, односторонней проводимостью. Такими элементами являются диоды, триоды, микросхемы и т.п. Интегральные микросхемы в одном корпусе реализуют большое число логических функций.
Чтобы упорядочить проектирование и разработку различных логических или переключательных устройств, разработаны международной и общероссийский стандарты для обозначения различных логических функций.
В таблице 41 приведены основные условные обозначения логических функций.
Схемы, формируемые вентильными элементами, называют комбинационнами схемами. Если комбинационная схема реализует одну булеву функцию, то её называют одновыходовой комбинационной схемой, если несколько, то - многовыходовой комбинационной схемой.
Схема синтезируется из типовых логических элементов подобно тому, как сложная функция получается суперпозицией более простых функций.
Например, на рис. 56 приведена комбинационная схема, реализующая минимальную ДНФ, синтезированную в 3.10.1. А на рис. 57 - схема, реализующая минимальную ДНФ системы булевых функций, синтезированных в 3.10.4.
Таблица 41.
Логическая
функция
(имя, значение)
обозначение по
ГОСТ 2.743-82
“ИЛИ”, дизъюнкция
f(x1;x2)=(x1x2)
x1
1
f(x1;x2)
x2
“И”, конъюнкция
f(x1;x2)=(x1x2)
x1
f(x1;x2)
x2
“ИЛИ - НЕ”,
стрелка Пирса
f(x1;x2)=(x1x2)=(x1x2)
x1
1
f(x1;x2)
x2
“И - НЕ”, штрих
Шеффера
f(x1;x2)=(x1x2)=(x1x2)
x1
f(x1;x2)
x2
“НЕ - ИЛИ”,
импликация
f(x1;x2)=(x1x2)=(x1x2)
x1
1
f(x1;x2)
x2
Сложение по mod
2
f(x1;x2)=(x1x2)
x1
M2
f(x1;x2)
x2
x1
x2
x3
x4
fmin(x1;x2;x3;x4)=
x1x4
1 =x1x4x1x2x3x1x2x4
x1x2x4
x1x2
x1x2x3
1
x1x4x1x2x3
Рис. 56. Комбинационная
схема для минимальной ДНФ (3.10.1).
x1
x2
x3
x4
f1min
f2min
f3min
f4min
1
x2x3
x3x4
x2x3x3x4
1
x2x3x3x4
x2x3
1
x3x4
x2x3x1x2x3
x2x3
1
x1x2x3
x1x2x4
x2x3x2x3x4
Рис. 57. Комбинационная
схема для системы булевых функций
(3.10.4).