Минимизация нормальных форм всюду определённых булевых функций

Решение задач

Элементарная конъюнкция Е называется импликантой булевой функции f, если Е → f ≡ 1.

Импликанта Е называется простой, если при удалении любой буквы из неё она перестаёт быть импликантой булевой функции f.

Сокращённой ДНФ называется ДНФ, состоящая из всех простых импликант данной булевой функции.

Ядровая импликанта — импликанта, удаление которой из ДНФ некоторой булевой функции f приводит к ДНФ, не равносильной f.

Минимальная ДНФ данной функции f — ДНФ, имеющая наименьшее число символов переменных из всех ДНФ, задающих функцию f.

Тупиковой ДНФ функции f называется такая её ДНФ, состоящая из простых импликант, что удаление из неё любой конъюнкции нарушает равносильность ДНФ данной функции.

Сложностью ДНФ (КНФ) называется количество символов переменных, использованных в записи формулы.

Сокращённая ДНФ может быть получена из СДНФ последовательным применением, пока это возможно, формулы неполного склеивания Кu ∨ Кu = Ku ∨ Кu ∨ К, а затем — формулы поглощения Ku ∨ К = К.



Задание 2.5.1

Для данной функции f(x,y,z,w), заданной векторно, проделать следующее:

  1. Записать её СДНФ и СКНФ.
  2. Методом Квайна найти сокращённую ДНФ.
  3. Для сокращённой ДНФ построить матрицу Квайна, указать ядровые импликанты.
  4. С помощью матрицы Квайна найти минимальную ДНФ, указать её сложность.
  5. Найти минимальную ДНФ данной функции с помощью карт Карнау, сравнить полученный результат с ДНФ, найденной в п. 4.

Таблица 2.5.1

f f f
1 1111 0101 0011 1101 11 0100 1110 1101 1111 21 1011 1111 0001 1111
2 1101 1110 1010 1110 12 1111 1110 0111 1100 22 1110 1100 1111 1001
3 0111 0001 1111 1101 13 1000 1011 1111 1111 23 1001 1011 1111 1010
4 1011 1111 1111 1000 14 1111 1101 1110 0001 24 1111 1110 0111 0011
5 1101 0101 1101 1111 15 1101 0111 1100 1110 25 1010 1111 0111 0011
6 1111 1110 1010 0011 16 1011 1111 1010 1101 26 1110 0110 1111 1100
7 1111 0010 0111 1110 17 1001 1101 1010 1111 27 0111 0111 0101 1011
8 1100 1110 1111 1011 18 1110 0110 1111 1100 28 1101 1111 1110 1010
9 1100 0110 1111 0111 19 0011 1011 1010 1111 29 1111 0011 0111 0111
10 1011 1111 1110 0010 20 1111 0110 1110 1110 30 1110 1110 1010 1101

Пример решения задания 2.5.1

Решим задание 2.5.1 для функции f(x;y,z,w) = (1101 1010 1101 1100).

1. Изобразим таблицу функции f в виде двумерной таблицы — карты Карнау (табл. 2.5.1а).

Табл. 2.5.1а. Минимизация нормальных форм всюду определённых булевых функций

Найдём СДНФ данной функции:

f(x,y,z,w) = xa ⋅ yb ⋅ zc ⋅ wd =

x0 y0 z0 w0 ∨ x0 y0 z0 w1 ∨ x0 y0 z1 w1 ∨ x0 y1 z0 w0 ∨ x0 y1 z1 w0 ∨ x1 y0 z0 w0 ∨ x1 y0 z0 w1 ∨ x1 y0 z1 w1 ∨ x1 y1 z0 w0 ∨ x1 y1 z0 w1 ∨ =

= xyzwxyzw ∨ xyzw ∨ xyzwxyzw ∨ xyzw ∨ xyzw ∨ xyzw ∨ xyzw ∨ xyzw.

Найдём СКНФ данной функции:

f(x,y,z,w) = (xa ∨ yb ∨ zc ∨ wd) = (x1 ∨ y1 ∨ z0 ∨ w1) ∧ (x1 ∨ y0 ∨ z1 ∨ w0) ∧ (x1 ∨ y0 ∨ z0 ∨ w0) ∧ (x0 ∨ y1 ∨ z0 ∨ w1) ∧ (x0 ∨ y0 ∨ z0 ∨ w1) ∧ (x0 ∨ y0 ∨ z0 ∨ w0) = (x ∨ y ∨ z ∨ w) ∨ (x ∨ y ∨ z ∨ w) ∨ (x ∨ yzw) ∨ (x ∨ y ∨ z ∨ w) ∨ = (xyz ∨ w) ∨ (xyzw)

2. Построим сокращённую ДНФ из СДНФ, используя формулы неполного склеивания и поглощения. Для удобства, вместо символов переменных будем работать только с показателями степеней переменных.

Например, вместо xz будем употреблять набор 0 - 1 - . Тогда СДНФ функции будет соответствовать множество всех её единичных наборов. Выпишем единичные наборы данной булевой функции в таблицу, разбив их на группы в соответствии с количеством единичных компонент в наборах.

Тогда для применения формулы неполного склеивания доста точно просмотреть всевозможные пары наборов, входящих в соседние группы. Результаты склеивания наборов из I полосы поместим во II полосе, а наборы, участвующие в склеиваниях, пометим крестиком. Во второй полосе снова применяем, насколько возможно, операцию склеивания, записывая результаты в III полосу и т. д. После завершения процедуры склеивания все простые импликанты попадут в таблицу и не будут помечены крестиком. Помеченные же конъюнкции поглотятся на этапе применения формулы поглощения.

Сокращённая ДНФ данной булевой функции имеет вид: xywyzzwyw ∨ xz .

3. Для получения из сокращённой ДНФ минимальной ДНФ изобразим следующую таблицу — матрицу Квайна (табл. 2.5.1с).

Ядровыми импликантами будут 1, 4 и 5, так как для каждой из них найдётся единичный набор, на котором она одна принимает значение 1.

4. Выбираем наименьшее число столбцов таких, чтобы для каждой строки из данной таблицы и хотя бы одной единицы в этой строке нашёлся бы по крайней мере один столбец из множества выбранных столбцов, который содержит эту единицу. Тогда дизъюнкция членов, сопоставленных всем выбранным столбцам, является минимальной ДНФ.

Tабл. 2.5.1с.

№ простой импликанты 1 2 3 4 5
единичные наборы\простые импликанты xyw yz zw yw xz
0000   1 1    
0001   1   1  
0011       1  
0100 1   1    
0110 1        
1000   1 1   1
1001   1   1 1
1011       1  
1100     1   1
1101         1

Для выбора наименьшего числа столбцов, удовлетворяющих перечисленным выше требованиям, составляем символическое выражение (2 ∨3)·(2 ∨4)·4·(1 ∨3)·1·(2 ∨3 ∨5)·(2 ∨4 ∨5)·4·(5 ∨3)·5.

Приведём это символическое выражение к ДНФ, используя дистрибутивный закон и формулу поглощения (A ∨ В) · А = А.

Получим: (2 ∨3)·4·1·5 = 2·4·1·5 ∨3·4·1·5, Сопоставим каждой символической конъюнкции тупиковую ДНФ и выберем из них кратчайшую.

В нашем примере символической конъюнкции 2·4·1·5 соответствует ДНФ xywyzyw ∨ xz , а симво лической конъюнкции 3·4·1·5 — xywzwyw ∨ xz . Каждая из полученных ДНФ является минимальной для данной булевой функции и имеет сложность, равную количеству символов переменных в формуле, т. е. сложность 9.

5. Найдём минимальную ДНФ с помощью карты Карнау (табл. 2.5.ld).

Задача нахождения минимальной ДНФ с помощью карты Карнау сводится к задаче покрытия всех единиц карты Карнау прямоугольниками возможно больших размеров, причём разрешается использовать только прямоугольники, площади которых являются натуральными степенями двойки.

При построении покрытия не забываем, что карта Карнау как бы наклеена на поверхность тора, т. е. её левая и правая, а также верхняя и нижняя границы отождествляются.

В нашем примере все единицы покрываются четырьмя прямоугольниками: прямоугольник 1x2, соответствующий конъюнкции xyw, прямоугольник 1x4, соответствующий конъюнкции zw, и два квадрата, соответствующих импликантам xz и yw. Значит, минимальная ДНФ, соответствующая этому покрытию, равна xyw ∨ zw ∨ yw ∨ xz.

 

Задание 2.5.2

Для функций f(x,y,z), g(x,y,z,w), h(x,y,z,w,t) найти мини- мальные ДНФ и минимальные КНФ с помощью карт Карнау, указать сложности минимальных ДНФ.

Таблица 2.5.2

f g h
1 1011
1100
1110 1110
1111 0001
1011 1110 1100 1111
1111 0001 0101 1100
2 0111
1010
1111 0010
1111 0111
1100 1011 1011 1110
1110 1011 0111 1111
3 1001
1001
1101 1001
1111 0011
1011 1111 0011 0001
0110 1101 1011 1110
4 1110
1110
1011 1010
1111 1110
1100 1100 1110 1111
1000 1111 1011 1111
5 1010
1111
1101 1100
1111 1101
1101 0011 1111 1101
1110 1101 0111 1100
6 0110
1111
1111 1011
0011 1101
1011 1100 1111 1000
0111 1011 1110 0101
7 1000
1101
1010 1111
1011 1110
1100 1110 0111 1111
0001 1111 1011 0111
8 0111
0110
1100 1110
1100 1111
1010 1110 1111 1101
0111 1001 1110 0000
9 1110
0011
1101 1011
1111 1101
1001 1100 1101 1111
1101 1111 0001 1011
10 0111
0101
1010 1110
1110 1111
1010 1110 0111 1110
0011 1110 0110 0101
11 1000
1111
1001 0001
1110 1110
0101 1110 1110 0111
0111 1110 1101 0110
12 1011
0111
1101 1011
1110 1110
1010 0111 1101 1111
1000 1111 1110 1001
13 0011 1101 0111 1011
0011 1110
1001 1100 1110 1111
1100 1111 1010 0000
14 1011
0111
1000 0110
1111 1110
0110 1101 1111 1101
1111 1011 0111 1110
15 0111
0101
1011 1101
0011 0111
1010 1111 1011 1101
0111 1110 1101 1110
16 1000
1110
1100 1100
0111 1100
1101 0111 1101 1011
0111 1110 1111 0000
17 1111
0110
0011 0111
111 1011
0101 1000 1111 1100
1000 1110 1110 0111
18 0111
1001
1100 1100
1110 0011
0111 1111 1101 0111
1111 0101 1110 1101
19 1000
1110
0111 1110
0011 1110
0001 1111 1011 1101
0010 1111 1000 1000
20 0111
1001
1010 1110
1111 1101
1011 0001 1111 1100
0111 1001 1110 1110
21 0101
1100
1111 0011
1011 1111
1001 1011 1100 1110
0001 0111 1011 1000
22 0111
0101
1100 0000
1110 1101
1011 1111 1101 0111
1110 1110 0111 0001
23 1001
0110
1101 1110
1101 1111
0111 1110 1110 0011
1111 0011 1001 1111
24 0001
1100
1100 1110
0111 1111
1010 1111 1101 1100
1111 1010 1101 0110
25 1000
1110
1010 0111
1110 1100
0111 0111 1010 0011
1111 0010 1010 1111
26 1110
0101
1101 1001
1111 0111
0110 1111 1110 1010
0110 0110 1101 0010
27 1101
1100
0011 0011
1011 1111
1001 1110 1001 1111
0010 1001 1111 0011
28 1110
0110
1010 0101
1111 1011
0111 1011 1011 1111
1111 1011 0010 1111
29 0001
1111
1101 0111
1110 0110
1101 0100 1111 0111
1110 0110 1111 1000
30 1100
0011
0110 1101
1111 1000
0111 1010 1110 0111
1110 0111 1110 0110

Пример решения задания 2.5.2

Решим задание 2.5.2 для функций f(x, у, z) = (0111 0011), g(x,y,z,w) = (1111 1101 1010 0000), h(x,y,z,w,t) = (1111 0111 1010 0110 1111 0111 1010 1010).

Карта Карнау для функции f(x,y,z) от трёх переменных имеет такой вид (табл. 2.5.2а).

Мы считаем её как бы наклеенной на поверхность цилиндра, т. е. отождествляем верхнюю часть карты Карнау с нижней. При отыскании минимальной ДНФ единицы карты Карнау покрываем прямоугольниками вида 2x2 и 1x2, отвечающим импликантам у и xz соответственно, получаем минимальную ДНФ у ∨ xz . Её сложность равна 3.

Для нахождения минимальной КНФ покрываем нули карты Карнау двумя прямоугольниками размера- ми 1x2, которые соответствуют элементарным дизъюнкциям y ∨ ∨ и у ∨ z . В результате получаем минимальную КНФ (у ∨ x) ⋅ (у ∨ z).

При нахождении минимальной ДНФ функции g(x,y,z,w) заполняем карту Карнау и покрываем единицы карты прямоугольниками возможно больших размеров (табл. 2.5.2b).

Получим минимальную ДНФ: уwxzxw.

Сложность минимальной ДНФ равна 6.

Отыщем минимальную КНФ функции g(x,y,z,w). Для этого произведём покрытие нулей карты Карнау (табл. 2.5.2с).

Минимальная КНФ будет иметь вид:

(xy)⋅(xw)⋅(yzw).

Рассмотрим функцию h(x,y,z,w,t) = (1111 0111 1010 1111 0111 1010 1010).

Карту Карнау для пяти переменных можно воспринимать, как "двухслойную" карту Карнау для функции от 4 переменных, где верхний слой соответствует значениям х = 0, а нижний - х = 1, причём клетки, образующие "двухслойный" прямоугольник, соответствуют импликантам, в которых переменная х отсутствует. Двухслойные прямоугольники будем изображать жирными линиями, а однослойные — тонкими (табл. 2.5.2d).

Все единицы карты Карнау могут быть покрыты тремя двухслойными прямоугольниками и двумя однослойными. Минимальная ДНФ будет иметь вид: zt v yt v xzwt v xyt.

Её сложность равна 13.

Для отыскания минимальной КНФ покроем прямоугольниками нули карты Карнау (табл. 2.5.2е).

Все нули карты Карнау могут быть покрыты тремя двухслойными прямоугольниками и двумя однослойными.

Минимальная КНФ будет иметь вид:

(ywt)-(y ∨ z ∨ t)⋅(y ∨ z ∨ w ∨ t)⋅(xyt)⋅(x ∨ z ∨ w ∨ t).