logo search
discrete_math1

26. Минимизация днф и кнф с помощью карт Карно.

Определение. Функцияотnаргументовназывается булевой функцией (или функцией алгебры логики), если каждому наборуона ставит в соответствие число.

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

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

Карта Карно для функции f(x,y,z) = (00110001) представлена на рисунке.

ху

00

01

11

10

z

0

0

1

0

0

1

0

1

1

0

Внутренняя часть карты состоит из 8 клеток, в каждой из которых записано значение функции на определенном наборе значений аргументов. Данная функция обращается в единицу только на трех наборах – (010), (011) и (110), поэтому её СДНФ имеет вид . Каждое из трех слагаемых в этой сумме соответствует определенной клетке, содержащей единицу. Например, слагаемоеобращается в единицу на наборе (010), ему соответствует клетка, содержащая единицу и стоящая на пересечении второго столбца и первой строки карты Карно (на рисунке эта клетка закрашена). Однако, если две соседние клетки, отвечающие наборам (010) и (011), объединить в прямоугольник, то в СДНФ дизъюнкцию первых двух слагаемых можно будет заменить одним слагаемым. В результате получаем более простую ДНФ. Если же область единиц функции «покрыть» горизонтальным прямоугольником из двух соседних клеток (010) и (110) и клеткой (011), то получим формулу, также являющуюся ДНФ исходной функции. Однако минимальная ДНФ соответствует покрытию области единиц сразу обоими прямоугольниками и имеет вид.

Чтобы получить минимальную ДНФ, надо найти такое покрытие области единиц в карте Карно, которое удовлетворяет следующим требованиям:

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