
- •127994, Москва, ул. Образцова, 15
- •Введение
- •1. Булевы функции (бф).
- •1.1. Аналитическое представление бф.
- •1.1.1. Дизъюнктивная совершенная нормальная форма.
- •1.1.2. Конъюнктивная совершенная нормальная форма.
- •1.2. Минимизация бф.
- •1.2.1. Дизъюнктивная нормальная форма (днф).
- •1.2.2. Пути решения задачи упрощения днф бф.
- •1.2.3. Построение сднф по дснф.
- •1.2.4. Построение сднф по произвольной днф.
- •1.2.5. Получение тднф с помощью таблиц покрытий.
- •1.2.6. Недоопределенные бф и способы их задания. Простые импликанты недоопределенных бф.
- •1.2.7. Построение простых импликант недоопределенных бф методом проб.
- •1.2.8. Построение тднф недоопределенных бф.
- •1.2.9. Карты Карно.
- •2. Логические схемы (лс).
- •2.1.Основные понятия.
- •2.2. Использование скобочных преобразований днф при синтезе кс из элементов типа и, или, не.
- •2.3. Синтез кс из элементов
- •2.3.1. Кс часто используемых бф.
- •2.3.2. Кс для произвольных бф.
- •2.4.2. Алгоритм разделения тднф на к частей с минимизацией максимального веса.
- •2.4.3. Синтез кс из элементов и-не.
- •2.4.4. Синтез кс из элементов или-не.
- •2.4.5. Синтез кс из элементов и-или-не.
- •2.4.6. Синтез кс из набора элементов.
1.2.7. Построение простых импликант недоопределенных бф методом проб.
Будем полагать, что БФ задана таблично кодами конъюнкций D1 и D0.
Любая конъюнкция К из D1 такова, что:
M1(К)M1(F) - конъюнкция К из множества М1 входит в множество М1(F).
M1(К)M0(F) = - конъюнкция К из множества М1 не входит в множество М0(F) Нет такого набора значений переменных, на котором БФ одновременно определяется равной и 1 и 0.
Если максимально укоротить конъюнкцию К так, чтобы условия 1) и 2) попрежнему выполнялись, то мы получим простую импликанту.
Выполнимость условия 1) вытекает из того, что если К* получена из К вычеркиванием букв, то M1(К*) M1(К).
Доказательство.
Если
переменная
в конъюнкции К вызывает вхождение в
M1(К)
наборов со значением Хравным
, то
вычеркивая Х, мы увеличим M1(К)
за счет наборов с противоположным
значением (1-.
Рассмотрим пример.
Пусть
F=(X,Y,Z,W).
K=
K*=
Тогда M1(К)=(0101,0111).
M1(K*) содержит наборы M1(К) и кроме того наборы (1101,1111).
Процедура построения ДНФ эквивалентной D1, но состоящей из простых импликант может быть такой:
1. Берем любую К конъюнкцию из D1.
2. Максимально укорачивая К, строим простую импликанту и выписываем ее.
3. Удаляем из D1 конъюнкции поглощаемые К.
4. Если D1 пусто кончаем, иначе идем к пункту 1.
Примечание.
Конъюнкция А поглощает конъюнкцию В, если константные значения кода А, то есть все значения кроме «-», входят составной частью в код В.
Рассмотрим пример.
А
= ( -
0 0 - ) ;
В
= ( -
0 0 1 );
Удаляя из К одну за другой буквы, мы должны проверять не нарушается ли условие 2).
Если нарушается, то букву восстанавливаем, если нет, то оставляем удаленной.
Проверив все буквы в К, мы добьемся ее максимального укорачивания, то-есть получения из нее простой импликанты.
Проверка 2) выполняется так.
После вычеркивания буквы, берется код К и поочередно сравнивается со всеми кодами конъюнкций D0. Если для любой пары сравниваемых кодов хотя бы в одном разряде значения противоположны ( 0 и 1), то нет набора, на котором К и D0 одновременно равны «1», а значит можно вычеркивать данную переменную.
В противном случае, вычеркнутая (пробно!) буква должна быть восстановлена, так как ее удаление приводит к нарушению условия 2).
Процедуру построения ДНФ из простых импликант проиллюстрируем примером.
X |
Y |
Z |
W |
F |
0 |
0 |
0 |
- |
1 |
0 |
0 |
- |
0 |
|
0 |
- |
0 |
0 |
|
- |
0 |
0 |
0 |
|
- |
- |
1 |
1 |
0 |
1 |
1 |
- |
1 |
|
1 |
1 |
1 |
1 |
D1
=
D0
=
Берем
из D1
первую конъюнкцию:
(можно было бы взять и другую) и начинаем
пробные вычеркивания букв.
(000-)
?
(-00-)
Если
конъюнкция
(код -00-)
такова, что М1(
)М0F~)
то тогда есть набор, который можно
получить по коду (-00-)
и одновременно по коду хотя бы одной
конъюнкции из D0
Так как код (-00-) ортогонален каждому коду из D0, то набора принадлежащего и М1( ) и М0F~) не существует.
Ортогональность - наличие противоположных значений 0/1 хотя бы в одном разряде кодов.
Действительно:
-
(
-
0
0
-
)
(
-
-
1
1
)
(
-
0
0
-
)
(
1
1
-
1
)
(
-
0
0
-
)
(
1
1
1
-
)
Отсюда имеем первое укорачивание и переход к следующему пробному вычеркиванию.
(000-)
(-00-)
?
(--0-)
Вычеркивание недопустимо, так как (--0-) не ортогонально с (11-1). Отсюда следует, что набор 1101 принадлежит и М1 и М0, а этого быть не может. Следовательно, вычеркивание невозможно и нужно новое пробное вычеркивание. Восстанавливаем вычеркнутую букву.
Пробуем вычеркнуть
(-00-)
?
(-0--)
Вычеркивание недопустимо, так как (-0--) не ортогонально с (--11). Отсюда следует, что набор 0011 принадлежит и М1 и М0, а этого быть не может. Следовательно, вычеркивание невозможно.
В итоге мы получили .
Константные
значения кода (-00-),
то есть все значения кроме « -
», входят составной частью в коды (000-)
и (-000).
Следовательно, эта конъюнкция поглощает
конъюнкции
.
После выполнения поглощения, мы получим следующую таблицу:
X |
Y |
Z |
W |
F |
0 |
0 |
- |
0 |
1 |
0 |
- |
0 |
0 |
|
- |
- |
1 |
1 |
0 |
1 |
1 |
- |
1 |
|
1 |
1 |
1 |
- |
Берем код 00-0 и выполняем пробное вычеркивание -0-0. Теперь выполним проверку на ортогональность с наборами из М0.
-
-
0
-
0
-
0
-
0
-
0
-
0
-
-
1
1
1
1
-
1
1
1
1
-
Так
как код (-0-0)
ортогонален каждому
коду из D0,
то набора принадлежащего и М1(
)
и М0F~)
не существует. Вычеркивание возможно.
Далее, попытаемся вычеркнуть следующую букву в коде -0-0. Выполним проверку на ортогональность с наборами из М0 кода ---0.
-
-
-
-
0
-
-
-
0
-
-
-
0
-
-
1
1
1
1
-
1
1
1
1
-
Вычеркивание недопустимо, так как (---0) не ортогонально с (111-). Отсюда следует, что набор 1110 принадлежит и М1 и М0, а этого быть не может. Следовательно, вычеркивание невозможно и буква восстанавливается.
Теперь, попытаемся вычеркнуть другую букву в коде -0-0. Выполним проверку на ортогональность с наборами из М0 кода -0---.
-
-
0
-
-
-
-
1
1
Вычеркивание недопустимо, так как (-0--) не ортогонально с (0011). Отсюда следует, что набор 0011 принадлежит и М1 и М0, а этого быть не может. Следовательно, вычеркивание невозможно.
Таким
образом, получаем уще одну простую
импликанту
,
которая поглощает конъюнкцию
.
В результате, у нас остается ода конъюнкция из М1.
X |
Y |
Z |
W |
F |
0 |
- |
0 |
0 |
1 |
- |
- |
1 |
1 |
0 |
1 |
1 |
- |
1 |
|
1 |
1 |
1 |
- |
Берем оставшийся код 0-00 и выполняем пробное вычеркивание --00. Теперь выполним проверку на ортогональность с наборами из М0.
-
-
-
0
0
-
-
0
0
-
-
0
0
-
-
1
1
1
1
-
1
1
1
1
-
Так
как код (-0-0)
ортогонален каждому
коду из D0,
то набора принадлежащего и М1(
)
и М0F~)
не существует. Вычеркивание возможно.
Дальнейшие пробные вычеркивания выполняются аналогично.
В
итоге получаем F~=
.
Рассмотрим еще один пример.
X |
Y |
Z |
W |
F~ |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
|
0 |
1 |
1 |
0 |
|
1 |
0 |
0 |
1 |
|
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
|
1 |
0 |
1 |
1 |
|
1 |
1 |
1 |
1 |
Берем
из D1
первую конъюнкцию:
и начинам ее укорачивать. Будем работать
не с конъюнкциями, а с их кодами.
0 0 0 1 |
|
|
- 0 0 1 |
Все коды из D0 ортогональны |
|
- - 0 1 |
Нельзя, так как в как в D0 есть код 0101 |
|
- 0 0 1 |
Восстанавливаем вычеркнутую переменную |
|
- 0 - 1 |
Нельзя, так как в как в D0 есть код 0011 |
|
- 0 0 1 |
Восстанавливаем вычеркнутую переменную |
|
- 0 0 - |
Все коды из D0 ортогональны |
Эта конъюнкция поглощает 0001 и 1001 из D1 |
Берем
из D1
следующую конъюнкцию:
и начинам ее укорачивать. Будем работать
не с конъюнкциями, а с их кодами.
0 0 1 0 |
|
|
- 0 1 0 |
Все коды из D0 ортогональны |
|
- - 1 0 |
Все коды из D0 ортогональны |
|
- - - 0 |
Все коды из D0 ортогональны |
Эта конъюнкция поглощает 0010 и 0110 из D1 |
Множество D1 =
В
результате получается F~=