Пономарев В.Ф. Основы дискретной математики. Учебное пособие / Основы дискретной математики - 3ч
.doc
Минимизация КНФ булевой функции. Если в СКНФ булевой функции произвести операции обобщённого склеивания по правилу:
(xF)(xF)=(xF)(xF)F,
а затем все операции поглощения по правилу:
F1(F1F2)=F1,
то в результате получится сокращённая КНФ, каждая элементарная дизъюнкция которой есть имплицента длины n или (n-1). На втором этапе поглощения могут быть получены имплиценты длины (n-1) или (n-2). Операции обобщённого склеивания и поглощения выполняются до тех пор, пока можно получать имплиценты от меньшего числа двоичных переменных. Имплиценты минимальной длины булевой функции называются простыми.
Например, f(x1;x2;x3;x4)=(x1x2x3x4)(x1x2x3x4)(x1x2x3x4)(x1x2x3x4) (x1x2x3x4)(x1x2x3x4)(x1x2x3x4).
-
первый этап обобщённого склеивания:
f(x1;x2;x3;x4)=(x1x2x3x4)(x1x2x3x4)(x1x2x3x4)(x1x2 x3x4) (x1x2x3x4)(x1x2x3x4)(x1x2x3x4)(x2x3x4) (x1x3x4)(x1x2x4) (x1x2x4)(x1x3x4)(x1x2x3)(x1x2x4);
-
первый этап поглощения:
f(x1;x2;x3;x4)=(x2x3x4)(x1x3x4)(x1x2x4)(x1x2x4)(x1x3 x4) (x1x2x3)(x1x2x4);
-
второй этап обобщённого склеивания:
f(x1;x2;x3;x4)=(x2x3x4)(x1x3x4)(x1x2x4)(x1x2x4)(x1x3 x4) (x1x2x3)(x1x2x4)(x1x4);
-
второй этап поглощения:
f(x1;x2;x3;x4)=(x2x3x4)(x1x2x3)(x1x2x4)(x1x4);
Следущий этап обобщённого склеивания не уменьшает длину имплиценты, т.к. имеем: (xFi)(xFj)=(xFi)(FiFj). Поэтому на втором этапе получены простые импликанты и тупиковая КНФ.
Для поиска минимальной КНФ необходимо удалить из тупиковой КНФ избыточные простые имплиценты. Для этого составляется таблица простых имплицент, столбцами которой являются элементарные дизъюнкции СКНФ булевой функции - D(i), а строками - простые имплиценты тупиковой КНФ - Dj. Если Dj входят в число элементов D(i), то на пересечении соответствующей строки и столбца ставиться 1, в противном случае 0. Для каждого значения Dj проверяется условие: если Dj(i)ljDl(i)0, то Dj(i) является ядерной имплицентой минимальной КНФ. Этому условию соответствует единственная 1 в столбце для соответствующего Dj. Если в столбце несколько 1, то Dj(i)ljDl(i)1. Удаляя из таблицы все ядерные имплиценты и столбцы D(i), в которых они содержат 1, получим сокращённую таблицу неядерных имплицент КНФ, из числа которых следует выбрать набор простых имплицент с минимальным набором числа двоичных переменных. Ядерные имплиценты и набор неядерных имплицент из числа простых имплицент КНФ, покрывающих все “1” таблицы, формирует минимальную КНФ. В таблице 38 представлены простые имплиценты тупиковой КНФ и элементарные дизнъюнкции СКНФ для рассматриваемого примера.
Таблица 38.
Простые имплиценты
Элементарные дизъюнкции СКНФ-
D(i)
Dj
x1x2
x3x4
x1x2
x3x4
x1x2
x3x4
x1x2
x3x4
x1x2
x3x4
x1x2
x3x4
x1x2
x3x4
x1x4 1 [1]
[1] [1] 0
0 0
x2x3x4 1 0 0 0 0 1 0
x1x2x3 0 0 0 0 1 1 0
x1x2x4 0 0 0 0 0 1 [1]
Элементами этой таблицы являются 1, если простая имплицента входит в состав элементарной дизъюнкции СКНФ, и - 0, если простая имплицента не входит в состав элементарных дизъюнкций СКНФ. Квадратными скобками выделены те 1, для которых выполняется условие ядерной имплиценты. Штриховой линией удалены те элементарные дизъюнкции СКНФ, которые обеспечиваются ядерными имплицентами. Как показал анализ таблицы, ядерными имплицентами являются (x1x4) и (x1x2x4), которые покрывают элементарные дизъюнкции СКНФ (x1x2x3x4), (x1x2x3x4), (x1x2x3x4), (x1x2x3x4), (x1x2x3x4) и (x1x2x3x4). Из всего множества элементарных дизъюнкций D(i) осталась непокрытой ядерными имплицентами только одна- (x1x2x3x4).
x3
x3
x2
x1
x2
x4
x1
Рис. 60. 4-мерный единичный куб.
Таблица 39.
Простые имплиценты
D(i)
Dj
x1x2x3x4
x2x3x4 1
x1x2x3 1
Итак минимальными КНФ могут быть
fmin(x1;x2;x3;x4)=(x1 x4)(x1x2x4) (x2x3x4)
или
fmin(x1;x2;x3;x4)=(x1 x4)(x1x2x4) (x1x2x3).
На рис. 60 представлен четырёхмерный единичный куб, на котором жирными точками выделены вершины, соответствующие элементарным дизъюнкциям СКНФ, заштрихованной плоскостью куба - ядерная имплицента (x1x4), покрывающая четыре элементарных конъюнкции (x1x2x3x4), (x1x2x3x4), (x1x2x3x4) и (x1x2x3x4) - вершины четырёхугольника, жирной линией ребра куба - ядерная имплицента (x1x2x4), покрывающая две элементарные дизъюнкции (x1x2x3x4) и (x1x2x3x4) - вершины грани и менее жирными линиями рёбер куба - неядерные имплиценты (x2x3x4) и (x1x2x3), необходимые ( по выбору) для покрытия одной элементарной дизъюнкции СКНФ (x1x2x3x4).
4.10.2. Метод Карно.
В основе метода лежит использование таблиц специального вида - диаграмм Вейча или карт Карно. Каждый элемент таблицы отличается набором значений двоичных переменных, поэтому число элементов таблицы должно быть равным 2n, где n - число двоичных переменных булевой функции.
На рис. 61 представлены таблицы для f(x1;x2), f(x1;x2;x3) и f(x1;x2;x3;x4). В диаграмах Вейча каждый элемент таблицы обязательно содержит набор значений двоичных переменных, в картах Карно(для упрощения) указывают только двоичные переменные вне элементов таблицы.
а) таблица для
f(x1;x2).
x1 11 01
10 00
б) таблица для
f(x1;x2;x3).
x1
110
111 011 010
100
101 001 000
x3
x2
x2
в) таблица для
f(x1;x2;x3;x4).
x1
1100
1110 0110 0100 1101 1111
0111
0101 1001 1011
0011
0001
1000
1010 0010 0000
x3
Рис. 61. Карты Карно и диаграммы Вейча
для различных функций.
x2
x4
Для f(x1;x2) поля двоичных переменных на картах Карно охватывают по два элемента диаграммы Вейча, для f(x1;x2;x3) - по четыре элемента, для f(x1;x2;x3;x4) - по восемь элементов.
Если булева функция f(x1;x2;xn)=1 при n4, то элементы карты Карно могут быть описаны элементарными конъюнкциями (x1x2xn) для соответствующего набора (1;2;…. . .;n), а множество элементов карты Карно - формулой:
f(x1;x2;……;xn)=x11x22……xnn, которая представляет собой СДНФ булевой функции.
Например, для f(x1;x2)=1 ïðè 1=0, 2=1 или 1=1, 2=0 имеем f(x1;x2)=x1 x2 x1x2, для f(x1;x2;x3)=1 при 1=1, 2=1, 3=0 или1=1, 2=0, 3=1, или 1=0, 2=1, 3=0 имеем f(x1;x2;x3)= =x1x2x3x1x2x3x1 x2x3, для f(x1;x2;x3;x4)=1 при 1=1, 2=1, 3=0, 4=0 или 1=1, 2=0, 3=1, 4=0, или 1=0, 2=1, 3=0, 4=0 имеем f(x1;x2;x3;x4)=x1x2x3x4x1x2x3x4x1x2x3x4.
Если булева функция f(x1;x2;xn)=0 при n4, то элементы карты Карно могут быть описаны элементарными дизъюнкциями (x1x2xn) для соответствующего набора (1;2;…. . .;n), а множество элементов карты Карно - формулой:
f(x1;x2;……;xn)=(x11x22……xnn), которая представляет собой СКНФ булевой функции.
Например, для f(x1;x2)=0 ïðè 1=0, 2=1 или 1=1, 2=0 имеем f(x1;x2)=(x1x2)(x1x2), для f(x1;x2;x3)=1 при 1=1, 2=1, 3=0 или1=1, 2=0, 3=1, или 1=0, 2=1, 3=0 имеем f(x1;x2;x3)= =(x1x2x3)(x1x2x3)(x1x2x3), для f(x1;x2;x3;x4)=1 при 1=1, 2=1, 3=0, 4=0 или 1=1, 2=0, 3=1, 4=0, или 1=0, 2=1, 3=0, 4=0 имеем f(x1;x2;x3;x4)=(x1x2x3x4)(x1x2x3x4)(x1x2x3x4).
Для удобства и наглядности работы с картами Карно каждому её элементу приписывают заданное значение булевой функции.
Так как смежные элементы карты Карно различаются между собой значением только одной двоичной переменной, то их можно объединить и описать сокращёнными нормальными формами, воспользовавшись законами противоречия и дистрибутивности. Например, для f(x1;x2;xj;xn)=1 имеем f(x1;x2;xj;xn)= =(x1x2xjxn)(x1x2xjxn)=(x1x2(xjxj)xn)= =(x1x2xn) , для f(x1;x2;xj;xn)=0 имеем f(x1;x2;xj;xn)= =(x1x2xixn)(x1x2xjxn)=(x1x2(xixj) xn)=(x1x2xn)
Также могут быть объединены четыре и восемь смежных элементов карты Карно. Следует обратить внимание, что левый край карты Карно примыкает к правому, а верхний-к нижнему. При объединении двух смежных элементов карты Карно сокращённая конъюнкция (или дизъюнкция) имеют (n-1) двоичную переменную, при объединении четырёх смежных элементов - (n-2) двоичных переменных, при объединении восьми - (n-3).
x1
1100 1
1110 1 0110 0100 1101
1111 1
0111 1
0101 1 1001 1011
0011 1
0001 1
1000
1010 0010 0000
x3
Рис. 52. Карта Карно для примера 3.10.1.
x4
x2
Анализ элементарных конъюнкций сокращённой ДНФ показывает, что две из них (x1x2x4) и (x1x2x4) можно объединить в элементарную конъюнкцию (x1x4), которая представляет четыре расположенные рядом элемента таблицы (0;1;1;1), (0;1;0;1), (0;;0;1;1) и (0;0;0;0).
Итак, минимальная ДНФ по методу Карно есть fmin(x1;x2;x3;x4)=x1x4x1x2x4x1x2x3.
Но в 3.10.1 были приведены две допустимые минимальные формы. Вторая форма по методу Карно может быть получена, если вместо пары (1;1;1;0) и (1;1;1;1) рассмотреть и объединить пару (1;1;1;1) и (0;1;1;1), для которой имеем элементарную конъюнкцию сокращённой ДНФ (x2x3x4). Минимальная ДНФ имеет вид:
fmin(x1;x2;x3;x4)=x1x4x1x2x4x2x3x4.
Итак, получены две альтернативные минимальные формы ДНФ эквивалентные минимальным формам, полученным по методу Квайна.
Минимизация КНФ булевой функции. Пусть задана СКНФ булевой функции из 3.10.1. На рис. 53 указаны элементы таблицы, в которых булева функция имеет значение 0 (конституенты нуля). Элементы таблицы, в которых набор значений двоичных переменных отличается только при одной переменной, можно объединить в элементарную дизъюнкцию сокращённой КНФ. Например, для (0;1;1;0) и (0;0;1;0) имеем (x1x3x4), для (0;1;0;0) и (0;0;0;0) имеем (x1x3x4), для (1;0;0;1) и (1;0;1;1) имеем (x1x2x4) и, наконец, для (1;0;0;0) и (0;0;0;0) имеем (x2x3x4). Полученные элементарные дизъюнкции следует объединить знаком конъюнкции для получения сокращённой КНФ булевой функции.
x1
1100
1110
0110 0
0100 0 1101
1111
0111
0101
1001 0
1011 0
0011
0001
1000 0 1010
0010 0
0000 0
x3
Рис. 53. Карта Карно для примера 3.10.1.
x2
x4
Итак, минимальная КНФ по методу Карно есть fmin(x1;x2;x3;x4)=(x1x4)(x1x2x4)(x2x3x4).
Но в 3.10.1 были приведены две допустимые минимальные формы. Вторая форма по методу Карно может быть получена, если вместо пары (1;0;0;0) и (0;0;0;0) рассмотреть и соединить пару (1;0;0;0) и (1;0;0;1), для которой элементарная дизъюнкция сокращённой КНФ есть (x1x2x3). Минимальная КНФ имеет вид: