- •1. Множества и бинарные отношения
- •Множества
- •Определения и примеры
- •1.1.1 Множество
- •Операции над множествами
- •Элементы комбинаторики
- •Бинарные отношения
- •Определения и примеры
- •2.1.2 Отображения
- •Операции над отношениями
- •Выполнение операций над отношениями
- •Свойства отношений
- •Эквивалентность и толерантность
- •2.4.1 Эквивалентность
- •2.4.3 Толерантность
- •2.4.6 Задача о наименьшем покрытии (ЗНП)
- •Алгоритм решения ЗНР
- •Отношения порядка
- •Строгий порядок
- •Свойства строгого порядка
- •Некоторые свойства дерева
- •Анализ отношений порядка
- •2.5.8 Решетки
- •2.5.10 Решетка
- •2.5.11 Булева решетка
- •Нормированные булевы решетки
- •Модели нормированной булевой решетки
- •Булевы функции (БФ)
- •Определения и примеры
- •Равенство булевых функций
- •3.3.1 СДНФ
- •3.3.3 СКНФ
- •3.3.5 Представление формул в СДНФ и СКНФ
- •Минимизация булевых функций
- •3.4.1 Импликанта
- •Полные системы булевых функций
- •2. Математическая логика
- •Логика высказываний
- •Основные понятия
- •4.1.7 Логическое следствие
- •4.1.8 Теоремы о логическом следствии
- •Логика предикатов
- •5.0.13 Связанные и свободные переменные
- •Предваренная нормальная форма
- •Стандартная нормальная форма
- •Подстановки и унификация
- •Метод резолюций для логики первого порядка
- •Исчисление высказываний
- •3. Графы
- •Определения и примеры
- •Определения графа
- •Части графа
- •Изоморфизм графов
- •Задание графов с помощью матриц
- •Матрица инциденций
- •Матрица соседства вершин
- •Матрица смежности
- •Типы графов
- •Обыкновенные графы
- •Графы Бержа
- •Помеченные и взвешенные графы
- •Другие способы задания графа
- •Связность графов
- •Маршруты, цепи, циклы
- •Число маршрутов
- •Компоненты связности
- •Нахождение компонент и бикомпонент
- •Кратчайшие цепи
- •Алгоритм Форда
- •Алгоритм Дейкстры
- •Обходы графа
- •Поиск в глубину на графе
- •Поиск в ширину на графе
- •Эйлеровы цепи и циклы
- •Эйлеровы пути
- •Гамильтоновы цепи и циклы
- •Цикломатика графов
- •Цикломатическое число
- •Деревья
- •Свойства дерева
- •Каркасы
- •Алгоритм нахождения каркаса графа.
- •Кратчайший каркас графа.
- •Алгоритм Прима.
- •Теорема о хорде каркаса.
- •Число каркасов графа.
- •Разрезы
- •Пространства суграфов
- •Пространство циклов
- •Пространство разрезов.
- •Потоки в сетях
- •Задача о максимальном потоке
- •Постановка задачи
- •Экстремальные части графа
- •Основные понятия
- •Покрытия
- •Задача о наименьшем покрытии
- •Паросочетания
- •Раскраска вершин графа
- •Хроматическое число
- •Оценки хроматического числа
- •Точные алгоритмы раскраски вершин
3.4. Минимизация булевых функций |
125 |
|
|
|
|
f(x1; x2; x3) =
=(x1 © 1)(x2 © 1)x3 © (x1 © 1)x2x3 © x1(x2 © 1)x3 =
=(x1x2 © x1 © x2 © 1)x3 ©x1x2x3 © x2x3©x1x2x3 © x1x3 =
=x1x2x3 © x1x3 © x2x3 © x3© x1x2x3 © x2x3©x1x2x3 © x1x3 =
=x1x2x3 © x3:
Подчеркнуты подобные удаляемые ЭК:
x1x2x3 © x1x2x3 © x1x2x3 = x1x2x3; x1x3 © x1x3 = 0: J
3.4 Минимизация булевых функций
Импликанта |
Определение. Функция g(x1; : : : ; xn) назы- |
|
вается импликантой функции f(x1; : : : ; xn), |
если
g(x1; : : : ; xn) ) f(x1; : : : ; xn);
или, что то же самое,
g(x1; : : : ; xn) ! f(x1; : : : ; xn) = 1:
Другими словами, g(x1; : : : ; xn) есть импликанта функции f(x1; : : : ; xn), если на всех тех векторах a1 ¢ ¢ ¢ an, на которых,
если g(a1; : : : ; an) = 1, то f(a1; : : : ; an) = 1: Таким образом, если K – любая ЭК из ДНФ функции f(x1; : : : ; xn), то K есть
импликанта этой функции.
Определение. Импликанта Ki функции f(x1; : : : ; xn) называется простой, если ее не поглощает никакая другая импликанта Kj этой функции.
ДНФ, состоящая из всех простых импликант функции f(x1; : : : ; xn); называется сокращенной ДНФ этой функции.
ДНФ называется минимальной, если она имеет наименьший ранг из всех ДНФ функции f(x1; : : : ; xn) (содержит наименьшее число литералов).
ДНФ называется кратчайшей, если она имеет наименьшую длину из всех ДНФ функции f(x1; : : : ; xn) (содержит наименьшее число ЭК).
126 |
Глава 3. Булевы функции (БФ) |
|
|
ДНФ называется безызбыточной, если из нее нельзя удалить ни одной переменной и ни одной импликанты так, чтобы она оставалась равносильной исходной ДНФ.
З а м е ч а н и я. Любые минимальные и кратчайшие ДНФ являются безызбыточными. Кратчайшая ДНФ не обязательно минимальна, но поиск минимальной ДНФ проводится среди кратчайших. I
Задачи минимизации булевой функции: найти кратчайшую или минимальную ДНФ; найти все кратчайшие или все минимальные ДНФ. Каждый раз задача конкре-
тизируется. В любом случае сначала находятся все простые импликанты функции (сокращенная ДНФ). Из сокращенной ДНФ находят нужные ДНФ.
Пусть K; K1; K2 – элементарные конъюнкции, входящие в СДНФ, или в уже полученные ДНФ, реализующие исходную булеву функцию f(x1; : : : ; xn): Для минимизации ДНФ используются следующие свойства.
Поглощение: |
K1 _ K1K2 = K1: |
|
Склеивание/расщепление |
xK _ xK¹ |
|
(простая склейка): |
= K: |
|
Неполное склеивание: |
xK _ xK¹ |
= xK _ xK¹ _ K: |
Обобщенное склеивание: |
xK1 _ xK¹ 2 = xK1 _ x¹ _ K1K2: |
ДНФ, полученная в результате многократного применения склеек и поглощений, является сокращенной ДНФ, а все ЭК – простыми импликантами функции f(x1; : : : ; xn):
Примеры 3.21. 1. f(x1; x2; x3) = x¹1x¹2x¹3_x¹1x¹2x3_x1x¹2x¹3_x1x¹2x3:
Все импликанты простые, ни одна из них не поглощает другую.
Склеиваем импликанты 1, 3 и 2, 4 по переменной x1.
f(x1; x2; x3) = x¹2x¹3 _ x¹2x3:
Снова все импликанты простые, ДНФ сокращенная. Еще ода склейка по переменной x3:
f(x1; x2; x3) = x¹2:
ДНФ сокращенная, кратчайшая, минимальная, равносильная исходной функции (все преобразования были равносиль-
3.4. Минимизация булевых функций |
127 |
|
|
|
|
ными). В результате склеек были удалены и фиктивные переменные x1 и x3:
2. Мажоритарная функция.
f(x1; x2; x3) = x¹1x2x3 _ x1x¹2x3 _ x1x2x¹3 _ x1x2x3:
Склеиваем импликанты 1, 4 по переменной x1 и импликанты 2, 4 по переменной x2 :
f(x1; x2; x3) = x2x3 _ x1x3 _ x1x2 _ x1x2x¹3 = x1x2 _ x1x3 _ x2x3:
Импликанта x1x2x¹3 поглощена импликантой x1x2: J
Исторически идея нахождения сокращенной ДНФ путем многократных склеиваний/поглощений формулируется как теорема Квайна.
Теорема 3.8 (Квайна) Для получения сокращенной ДНФ из СДНФ нужно выполнить все возможные неполные склеивания соседних импликант, а затем все поглощения импликант.
Д о к а з а т е л ь с т в о . Действительно, после всех склеиваний и поглощений все оставшиеся импликанты будут простыми (никакая из импликант не поглощает другую), а ДНФ – сокращенной. £
Алгоритм строит сокращенную ДНФ из таблицы функции или буквенной записи СДНФ. Алгоритм основан на теореме Квайна. Модификация МакКласки заключается в упорядочении импликант по весам. Рас-
смотрим на примере последовательность шагов алгоритма. Пример 3.22. Найти сокращенную ДНФ булевой функции.
¹ |
¹ |
¹ |
СДНФ функции f = a¹bcd¹ |
_ a¹bcd _ ab¹ cd¹ _ abcd¹ |
_ abcd _ abcd: |
1. Импликанты СДНФ задаются таблицей, состоящей из их двоичных номеров (векторов). Векторы группируются по весам (числу единиц в векторе). Номер группы Gi равен весу векторов в группе. Таким образом, соседние импликанты находятся в соседних по номерам группах.
128 |
|
|
|
|
Глава 3. |
Булевы функции (БФ) |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# |
|
a |
b |
c |
d |
|
|
|
|
G1 |
|
1 |
|
0 |
0 |
0 |
1 |
|
¤ |
|
|
G2 |
|
2 |
|
0 |
0 |
1 |
1 |
|
¤ |
|
|
|
|
3 |
|
0 |
1 |
0 |
1 |
|
¤ |
|
|
G3 |
|
4 |
|
0 |
1 |
1 |
1 |
|
¤ |
|
|
|
|
5 |
|
1 |
1 |
1 |
0 |
|
¤ |
|
|
G4 |
|
6 |
|
1 |
1 |
1 |
1 |
|
¤ |
|
2. Выполняются неполные склеивания всех соседних импликант в соседних группах Gi и Gi+1. Разбиение на группы позволяет сократить число попарных сравнений при склеивании. Склеиваемые импликанты помечаются значком ¤. Результаты склеиваний (склейки) вместе с непомеченными импликантами заносятся в новую таблицу (без повторений). В склейках значком £ помечается переменная, по которой выполнена склейка (вес значка £ равен 0). В правом столбце показаны номера склеенных импликант из предыдущей таблицы.
|
|
# |
|
a |
b |
c |
d |
|
|
|
|
G1 |
|
1 |
|
0 |
0 |
£ |
1 |
|
¤ |
|
(1; 2) |
|
|
2 |
|
0 |
£ |
0 |
1 |
|
¤ |
|
(1; 3) |
|
|
3 |
|
0 |
£ |
1 |
1 |
|
¤ |
|
(2; 4) |
G2 |
|
4 |
|
0 |
1 |
£ 1 |
|
¤ |
|
(3; 4) |
|
|
|
5 |
|
£ |
1 |
1 |
0 |
|
|
|
(4; 6) |
G3 |
|
6 |
|
1 |
1 |
1 |
£ |
|
|
|
(5; 6) |
3. Если полученная таблица непуста, то с ней выполняется 2-й шаг алгоритма. Импликанты в этой таблице уже упорядочены по весам. Склеивание можно выполнять только для тех импликант, у которых £ находятся в одинаковых позициях. Получаем новую таблицу.
|
|
# |
|
a |
b |
c |
d |
|
|
|
|
G1 |
|
1) |
|
0 |
£ |
£ |
1 |
|
|
|
(1; 4) |
G3 |
|
2) |
|
£ |
1 |
1 |
1 |
|
|
|
|
|
|
3) |
|
1 |
1 |
1 |
£ |
|
|
|
|
3.4. Минимизация булевых функций |
129 |
|
|
|
|
Первая импликанта получена при склеивании импликант (1; 4) и (2; 3) из предыдущей таблицы, импликанты 2); 3) внесены как непомеченные. В этой таблице нет соседних импликант, работа алгоритма закончена. В результате получена сокращенная ДНФ f = abc _ ad¹ _ bcd длины 3 и ранга 8.
Алгоритм нахождения сокращенной ДНФ из СДНФ или равносильной ей ДНФ основан на выполнении всех возможных обобщенных склеиваний и всех возможных поглощений. Исторически идея этого алго-
ритма формулируется как теорема Блейка.
Теорема 3.9 (Блейка) Сокращенную ДНФ булевой функции можно получить, выполнив все обобщенные склеивания и все возможные поглощения.
Рассмотрим на примере работу алгоритма. Пример 3.23. Булева функция задана ДНФ
¹ ¹ ¹ |
¹ ¹ |
f = abcd¹ _ abcd _ abc _ ab¹ c¹ _ a¹cd¹ |
_ bc¹d: |
Представим импликанты ДНФ троичными векторами, заменив недостающие переменные значком £. В обобщенном склеивании xK1 _ xK¹ 2 = xK1 _ xK¹ 2 _ K1K2 участвуют только смежные импликанты, ортогнальные по переменной x. Результат обобщенного склеивания K1K2 вносится в таблицу (без повторений) со следующим по счету номером; при этом в графу С вносятся номера склеиваемых векторов; в строку графы П вносится номер вектора, который ее поглощает.
Вектор 5 сразу поглощается вектором 6; вектор 7 получается при склеивании векторов 1 и 2, вектор 8 – из 1 и 3, вектор 9 – из 1 и 6, вектор 10 – из 3 и 4; вектор 4 поглощается вектором 10; из склеивания векторов 3 и 7 получается вектор 11, который поглощает векторы 2, 3, 7 и 8. Склеивания других векторов дают повторения: например, склеивание векторов 9 и 11 дает вектор 1.
130 |
|
|
|
|
Глава 3. Булевы функции (БФ) |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# |
|
a |
b |
c |
d |
|
С |
|
П |
|
|
|
1 |
|
£ |
0 |
0 |
0 |
|
|
|
|
|
|
2 |
|
0 |
£ |
0 |
1 |
|
|
|
11 |
|
|
3 |
|
0 |
1 |
0 |
£ |
|
|
|
11 |
|
|
4 |
|
0 |
1 |
1 |
1 |
|
|
|
10 |
|
|
5 |
|
1 |
0 |
1 |
0 |
|
|
|
6 |
|
|
6 |
|
1 |
0 |
1 |
£ |
|
|
|
|
|
|
7 |
|
0 |
0 |
0 |
£ |
|
1; 2 |
|
11 |
|
|
8 |
|
0 |
£ |
0 |
0 |
|
1; 3 |
|
11 |
|
|
9 |
|
1 |
0 |
£ |
0 |
|
1; 6 |
|
|
|
|
10 |
|
0 |
1 |
£ |
1 |
|
3; 4 |
|
|
|
|
11 |
|
0 |
£ |
0 |
£ |
|
3; 7 |
|
|
|
Непоглощенные векторы есть простые импликанты полученной сокращенной ДНФ:
¹ ¹ ¹ |
|
¹ ¹ |
|
|
|
||
bc¹d _ abc _ abd _ abd¹ _ a¹c¹ |
|||||||
|
# |
|
a |
b |
c |
d |
|
|
1 |
|
£ |
0 |
0 |
0 |
|
|
6 |
|
1 |
0 |
1 |
£ |
|
|
9 |
|
1 |
0 |
£ |
0 |
|
|
10 |
|
0 |
1 |
£ |
1 |
|
|
11 |
|
0 |
£ |
0 |
£ |
|
Алгоритмы Квайна – МакКласки и Блейка
– Порецкого находят сокращенную ДНФ булевой функции. На втором этапе минимизации выполняется поиск кратчайшей
или минимальной ДНФ. Для этого нужно в сокращенной ДНФ найти такие подмножества импликант, которые поглощают все импликанты СДНФ.
Матрица, строкам которой соответствуют импликанты СДНФ, а строкам импликанты сокращенной ДНФ, называется таблицей Квайна Q = kqijk. Элемент таблицы qij = 1, если импликанта столбца j поглощает импликанту строки i, qij = 0 в противном случае.