Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Дискретка / 6 - БФ (часть 3) - Минимальные НФ

.pdf
Скачиваний:
27
Добавлен:
25.02.2016
Размер:
315.31 Кб
Скачать

Сокращённые дизъюнктивные нормальные формы

Булева функция φ называется импликантой булевой функции f, если она обращается

в ноль на всех тех наборах, на которых f = 0.

 

То, что φ является импликантой f обозначается: f .

 

Пример. x & y x y .

Собственная часть произведения – произведение, полученное исключением из исходного одного или нескольких множителей.

Простая импликанта булевой функции – это элементарное произведение, которое является импликантой этой функции, но никакая её собственная часть уже не является импликантой.

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

x & y x & y ~ x ,

т.е. считается, что два слагаемых x & y и x & y склеиваются по переменной y.

Тупиковые и минимальные дизъюнктивные нормальные формы

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

В общем случае функция имеет несколько тупиковых ДНФ.

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

Алгоритм нахождения минимальной ДНФ:

1)построить её СДНФ (аналитическим или табличным методом);

2)провести все возможные операции склеивания и получить все простые импликанты (образующие в сумме сокращённую ДНФ);

3)из полученной сокращённой ДНФ найти все возможные тупиковые ДНФ;

4)выбрать из найденных тупиковых ДНФ наиболее короткие, т.е. минимальные ДНФ.

Метод импликантных матриц

Рассмотрим метод на примере.

Пусть булева функция уже дана в виде СДНФ:

f x, y, z x & y & z x & y & z x & y & z x & y & z x & y & z x & y & z .

Сначала для f найдём сокращённую ДНФ. Для этого произведём всевозможные операции склеивания и поглощения, для удобства представляя это в виде следующей таблицы:

 

x & y & z

x & y & z

x & y & z

x & y & z

x & y & z

 

 

 

 

 

 

y & z

+

+

 

 

 

 

 

 

 

 

 

x & z

 

+

+

 

 

 

 

 

 

 

 

x & y

 

+

 

+

 

 

 

 

 

 

 

x & y

 

 

+

 

+

 

 

 

 

 

 

x & z

 

 

 

+

+

 

 

 

 

 

 

1

Столбцы данной таблицы соответствуют слагаемым, т.е. конституентам единицы, образующим в сумме СДНФ исходной функции. Каждая же строка соответствует одной проводимой операции склеивания двух конституент. В заголовке строки записываем результат склеивания пары конституент, ячейки в соответствующих им столбцах помечаем знаком «+». Если бы оказалось, что какое-то слагаемое не участвовало ни в одном склеивании, его нужно бы было записать в первый столбец без изменения, отметив при этом только один соответствующий столбец.

Проверяем, могут ли «склеиться» между собой новые полученные импликанты (записанные в заголовках строк). Видим, что это возможно, поэтому проводим второй этап склеиваний: строим новую подобную таблицу, но в ней уже вертикальными входами будут заголовки строк последней таблицы, а в строках, как и прежде, будем записывать получаемые в результате склеивания рассматриваемых слагаемых дизъюнкты. Таким образом получим:

 

y & z

x & z

x & y

x & y

x & z

 

 

 

 

 

 

y & z

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

+

+

+

+

 

 

 

 

 

 

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

Для выполнения этой проверки и построения тупиковых и минимальных ДНФ переходим к следующему шагу – построению импликантной матрицы, столбцы которой соответствуют рассматриваемым на первом шаге конституентам единицы, а строки – полученным в последней таблице простым импликантам. Для каждой конституенты ставим «+» в той строке, которая соответствует содержащейся в ней простой импликанте.

 

x & y & z

x & y & z

x & y & z

x & y & z

x & y & z

 

 

 

 

 

 

y & z

+

+

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

+

+

+

+

 

 

 

 

 

 

Затем строим тупиковые и минимальные ДНФ, складывая дизъюнкты строк, достаточных для покрытия всех имеющихся столбцов. В данном случае, такое представление – единственное:

f ~ x y & z .

Если бы возможных вариантов покрытия столбцов оказалось бы несколько, то из получаемых в каждом случае тупиковых ДНФ мы бы выбрали те, которые содержат

минимальное число вхождения переменных, и получили бы минимальные ДНФ.

 

 

Метод Мак-Класки

 

 

 

 

Данный метод является по своей сути модификацией предыдущего

 

 

 

 

x

y

z

f

метода. Если в методе импликантных матриц рассматривались переменные

0

0

0

1

с отрицанием или без и образуемые из них слагаемые – элементарные

0

0

1

1

произведения, то здесь мы будем рассматривать наборы значений

0

1

0

1

переменных, которые будем разбивать на классы и производить

0

1

1

1

межклассовые сравнения.

1

0

0

0

1

0

1

0

Покажем использование метода на предыдущем примере.

1

1

0

0

 

 

1

1

1

1

2

Таблица истинности функции f будет выглядеть следующим образом:

Выбираем наборы, на которых f = 1 и записываем их в соответствующий класс. Будем рассматривать изначально 4 класса – соответственно числу содержащихся в наборе единиц:

0 кл.: (0, 0, 0);

1 кл.: (0, 0, 1), (0, 1, 0);

2 кл.: (0, 1, 1);

3 кл.: (1, 1, 1).

Производим сравнение только тех наборов, которые находятся в соседних классах. Если различие в некоторой паре сравниваемых наборов идёт только по одной переменной, то записываем сокращённый набор, в котором вместо значения этой переменной ставим прочерк. В результате проведения всевозможных сравнений получим следующее:

0 кл.: (0, 0, –), (0, –, 0); 1 кл.: (0, 1, –), (0, –, 1); 2 кл.: (–, 1, 1).

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

В нашем же случае осталось провести лишь ещё одну итерацию, в результате которой получим следующее:

0 кл.: (0, –, –);

1 кл.: (–, 1, 1).

После этого строим матрицу, подобную импликантной, только столбцы в данном случае соответствуют рассматриваемым изначально полным наборам значений переменных, а строки – полученным после всех итераций сокращённым наборам:

 

(0, 0, 0)

(0, 0, 1)

(0, 1, 0)

(0, 1, 1)

(1, 1, 1)

 

 

 

 

 

 

(0, –, –)

+

+

+

+

 

 

 

 

 

 

 

(–, 1, 1)

 

 

 

+

+

 

 

 

 

 

 

Затем из имеющихся сокращённых наборов выбираем те, которых достаточно для покрытия всех столбцов, по ним строим элементарные произведения, беря (как при построении СДНФ) переменную с отрицанием, если она принимает значение 0, и без – если она равна 1. Прочерк означает отсутствие данной переменной в образуемом произведении. Суммируя полученные элементарные произведения, получаем возможные тупиковые ДНФ. Из них уже можно выбрать минимальную ДНФ.

В нашем же случае такая ДНФ одна:

f ~ x y & z .

Примеры. Найти минимальную ДНФ булевой функции трёх переменных, если она равна единице на наборах с номерами:

а) 1, 3, 4, 5, 7; б) 0, 2, 3, 4, 6; в) 1, 2, 3, 5, 7; г) 0, 1, 4, 5; д) 2, 3, 5, 6, 7;

На остальных наборах функция равна нулю.

3