Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
71
Добавлен:
02.05.2014
Размер:
455.17 Кб
Скачать

Минимизация КНФ булевой функции. Если в СКНФ булевой функции произвести операции обобщённого склеивания по правилу:

(xF)(xF)=(xF)(xF)F,

а затем все операции поглощения по правилу:

F1(F1F2)=F1,

то в результате получится сокращённая КНФ, каждая элементарная дизъюнкция которой есть имплицента длины n или (n-1). На втором этапе поглощения могут быть получены имплиценты длины (n-1) или (n-2). Операции обобщённого склеивания и поглощения выполняются до тех пор, пока можно получать имплиценты от меньшего числа двоичных переменных. Имплиценты минимальной длины булевой функции называются простыми.

Например, f(x1;x2;x3;x4)=(x1x2x3x4)(x1x2x3x4)(x1x2x3x4)(x1x2x3x4) (x1x2x3x4)(x1x2x3x4)(x1x2x3x4).

  • первый этап обобщённого склеивания:

f(x1;x2;x3;x4)=(x1x2x3x4)(x1x2x3x4)(x1x2x3x4)(x1x2 x3x4) (x1x2x3x4)(x1x2x3x4)(x1x2x3x4)(x2x3x4) (x1x3x4)(x1x2x4) (x1x2x4)(x1x3x4)(x1x2x3)(x1x2x4);

  • первый этап поглощения:

f(x1;x2;x3;x4)=(x2x3x4)(x1x3x4)(x1x2x4)(x1x2x4)(x1x3 x4) (x1x2x3)(x1x2x4);

  • второй этап обобщённого склеивания:

f(x1;x2;x3;x4)=(x2x3x4)(x1x3x4)(x1x2x4)(x1x2x4)(x1x3 x4) (x1x2x3)(x1x2x4)(x1x4);

  • второй этап поглощения:

f(x1;x2;x3;x4)=(x2x3x4)(x1x2x3)(x1x2x4)(x1x4);

Следущий этап обобщённого склеивания не уменьшает длину имплиценты, т.к. имеем: (xFi)(xFj)=(xFi)(FiFj). Поэтому на втором этапе получены простые импликанты и тупиковая КНФ.

Для поиска минимальной КНФ необходимо удалить из тупиковой КНФ избыточные простые имплиценты. Для этого составляется таблица простых имплицент, столбцами которой являются элементарные дизъюнкции СКНФ булевой функции - 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

x1x2 x3x4

x1x2 x3x4

x1x2 x3x4

x1x2 x3x4

x1x2 x3x4

x1x2 x3x4

x1x2 x3x4

x1x4

1

[1]

[1]

[1]

0

0

0

x2x3x4

1

0

0

0

0

1

0

x1x2x3

0

0

0

0

1

1

0

x1x2x4

0

0

0

0

0

1

[1]

Элементами этой таблицы являются 1, если простая имплицента входит в состав элементарной дизъюнкции СКНФ, и - 0, если простая имплицента не входит в состав элементарных дизъюнкций СКНФ. Квадратными скобками выделены те 1, для которых выполняется условие ядерной имплиценты. Штриховой линией удалены те элементарные дизъюнкции СКНФ, которые обеспечиваются ядерными имплицентами. Как показал анализ таблицы, ядерными имплицентами являются (x1x4) и (x1x2x4), которые покрывают элементарные дизъюнкции СКНФ (x1x2x3x4), (x1x2x3x4), (x1x2x3x4), (x1x2x3x4), (x1x2x3x4) и (x1x2x3x4). Из всего множества элементарных дизъюнкций D(i) осталась непокрытой ядерными имплицентами только одна- (x1x2x3x4).

x3

x3

x2

x1

x2

x4

x1

Рис. 60. 4-мерный единичный куб.

Составим для данного примера сокращённую таблицу неядерных имплицент (см. табл.39). Анализ этой таблицы показывает, что для покрытия элементарной дизъюнкции (x1x2x3x4) можно использовать любую простую имплиценту.

Таблица 39.

Простые имплиценты

D(i)

Dj

x1x2x3x4

x2x3x4

1

x1x2x3

1

Итак минимальными КНФ могут быть

fmin(x1;x2;x3;x4)=(x1 x4)(x1x2x4) (x2x3x4)

или

fmin(x1;x2;x3;x4)=(x1 x4)(x1x2x4) (x1x2x3).

На рис. 60 представлен четырёхмерный единичный куб, на котором жирными точками выделены вершины, соответствующие элементарным дизъюнкциям СКНФ, заштрихованной плоскостью куба - ядерная имплицента (x1x4), покрывающая четыре элементарных конъюнкции (x1x2x3x4), (x1x2x3x4), (x1x2x3x4) и (x1x2x3x4) - вершины четырёхугольника, жирной линией ребра куба - ядерная имплицента (x1x2x4), покрывающая две элементарные дизъюнкции (x1x2x3x4) и (x1x2x3x4) - вершины грани и менее жирными линиями рёбер куба - неядерные имплиценты (x2x3x4) и (x1x2x3), необходимые ( по выбору) для покрытия одной элементарной дизъюнкции СКНФ (x1x2x3x4).

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 при n4, то элементы карты Карно могут быть описаны элементарными конъюнкциями (x1x2xn) для соответствующего набора (1;2;…. . .;n), а множество элементов карты Карно - формулой:

f(x1;x2;……;xn)=x11x22……xnn, которая представляет собой СДНФ булевой функции.

Например, для f(x1;x2)=1 ïðè 1=0, 2=1 или 1=1, 2=0 имеем f(x1;x2)=x1 x2 x1x2, для 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)= =x1x2x3x1x2x3x1 x2x3, для 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)=x1x2x3x4x1x2x3x4x1x2x3x4.

Если булева функция f(x1;x2;xn)=0 при n4, то элементы карты Карно могут быть описаны элементарными дизъюнкциями (x1x2xn) для соответствующего набора (1;2;…. . .;n), а множество элементов карты Карно - формулой:

f(x1;x2;……;xn)=(x11x22……xnn), которая представляет собой СКНФ булевой функции.

Например, для f(x1;x2)=0 ïðè 1=0, 2=1 или 1=1, 2=0 имеем f(x1;x2)=(x1x2)(x1x2), для 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)= =(x1x2x3)(x1x2x3)(x1x2x3), для 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)=(x1x2x3x4)(x1x2x3x4)(x1x2x3x4).

Для удобства и наглядности работы с картами Карно каждому её элементу приписывают заданное значение булевой функции.

Так как смежные элементы карты Карно различаются между собой значением только одной двоичной переменной, то их можно объединить и описать сокращёнными нормальными формами, воспользовавшись законами противоречия и дистрибутивности. Например, для f(x1;x2;xj;xn)=1 имеем f(x1;x2;xj;xn)= =(x1x2xjxn)(x1x2xjxn)=(x1x2(xjxj)xn)= =(x1x2xn) , для f(x1;x2;xj;xn)=0 имеем f(x1;x2;xj;xn)= =(x1x2xixn)(x1x2xjxn)=(x1x2(xixj) xn)=(x1x2xn) 

Также могут быть объединены четыре и восемь смежных элементов карты Карно. Следует обратить внимание, что левый край карты Карно примыкает к правому, а верхний-к нижнему. При объединении двух смежных элементов карты Карно сокращённая конъюнкция (или дизъюнкция) имеют (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

Минимизация ДНФ булевой функции. Пусть задана булева функция такая, как в 3.10.1. На рис. 52 указаны элементы таблицы, в которых булева функция имеет значение 1. Элементы таблицы, в которых набор значений двоичных переменных отличается только при одной переменной, можно объединить в элементарную конъюнкцию сокращённой ДНФ. Например, для (1;1;0;0) и (1;1;1;0) имеем (x1x2x4), для (1;1;1;0) и (1;1;1;1) имеем (x1x2x4), для (0;1;1;1) и (0;1;0;1) имеем (x1x2x4), для (0;0;1;1) и (0;0;0;1) имеем (x1x2x4). Так получены элементарные конъюнкции сокращённой ДНФ, которые следует соединить знаком дизъюнкции.

Анализ элементарных конъюнкций сокращённой ДНФ показывает, что две из них (x1x2x4) и (x1x2x4) можно объединить в элементарную конъюнкцию (x1x4), которая представляет четыре расположенные рядом элемента таблицы (0;1;1;1), (0;1;0;1), (0;;0;1;1) и (0;0;0;0).

Итак, минимальная ДНФ по методу Карно есть fmin(x1;x2;x3;x4)=x1x4x1x2x4x1x2x3.

Но в 3.10.1 были приведены две допустимые минимальные формы. Вторая форма по методу Карно может быть получена, если вместо пары (1;1;1;0) и (1;1;1;1) рассмотреть и объединить пару (1;1;1;1) и (0;1;1;1), для которой имеем элементарную конъюнкцию сокращённой ДНФ (x2x3x4). Минимальная ДНФ имеет вид:

fmin(x1;x2;x3;x4)=x1x4x1x2x4x2x3x4.

Итак, получены две альтернативные минимальные формы ДНФ эквивалентные минимальным формам, полученным по методу Квайна.

Минимизация КНФ булевой функции. Пусть задана СКНФ булевой функции из 3.10.1. На рис. 53 указаны элементы таблицы, в которых булева функция имеет значение 0 (конституенты нуля). Элементы таблицы, в которых набор значений двоичных переменных отличается только при одной переменной, можно объединить в элементарную дизъюнкцию сокращённой КНФ. Например, для (0;1;1;0) и (0;0;1;0) имеем (x1x3x4), для (0;1;0;0) и (0;0;0;0) имеем (x1x3x4), для (1;0;0;1) и (1;0;1;1) имеем (x1x2x4) и, наконец, для (1;0;0;0) и (0;0;0;0) имеем (x2x3x4). Полученные элементарные дизъюнкции следует объединить знаком конъюнкции для получения сокращённой КНФ булевой функции.

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

Анализ элементарных дизъюнкций сокращённой КНФ показывает, что две из них можно объединить в элементарную дизъюнкцию меньшей длины (x1x4), которая представляет четыре расположенные рядом элемента таблицы (0;1;1;0), (0;1;0;0), (0;;0;1;0) и (0;0;0;0).

Итак, минимальная КНФ по методу Карно есть fmin(x1;x2;x3;x4)=(x1x4)(x1x2x4)(x2x3x4).

Но в 3.10.1 были приведены две допустимые минимальные формы. Вторая форма по методу Карно может быть получена, если вместо пары (1;0;0;0) и (0;0;0;0) рассмотреть и соединить пару (1;0;0;0) и (1;0;0;1), для которой элементарная дизъюнкция сокращённой КНФ есть (x1x2x3). Минимальная КНФ имеет вид: