9.2. Минимальная и кратчайшая ДНФ

Определение. Минимальной ДНФ (МинДНФf) булевой функции f(x1, …, xn) называется ДНФ наименьшего ранга из всех ДНФ, задающих функцию f(x1, …, xn).

Определение. Кратчайшей ДНФ (КратДНФf) булевой функции f(x1, …, xn) называется ДНФ наименьшей длины из всех ДНФ, задающих функцию f(x1, …, xn).

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

Примеры. Для функции f(x,y,z) из предыдущего примера сокращенная ДНФ является и кратчайшей, и минимальной:

МинДНФf =КратДНФf =z x y (длины 2, ранга 3).

Однако эта функция имеет еще одну кратчайшую ДНФ:

КратДНФ'f = z x y z (длины 2, ранга 4).

КратДНФ'f отличается от КратДНФf тем, что ее вторая конъюнкция не является простой импликантой, ее можно упростить вычеркиванием z . •

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

Доказательство (конструктивное). Рассмотрим произвольную булеву функцию f(x1, …, xn). Докажем сначала вспомогательный результат. Пусть функция g(x1, …, xn) – импликанта функции f(x1, …, xn), тогда

g(x1, …, xn) f(x1, …, xn) = f(x1, …, xn).

Если g(x1, …, xn)=0, то обе части этого выражения равны f(x1, …, xn). Если g(x1, …, xn)=1, то и f(x1, …, xn)=1 (так как g(x1, …, xn) – импликанта функции f(x1, …, xn)), а значит, обе части равны 1. Рассмотрим теперь КратДНФf функции f(x1, …, xn).

КратДНФf=K1 K2 Ki.

Если все ее конъюнкции являются простыми импликантами функции, то кратчайшая ДНФ, состоящая из простых импликант, найдена. Иначе пусть K1 – не простая импликанта функции f(x1, …, xn), тогда существует простая импликанта K'1 такая, что K1 K'1=K'1. По доказанному верно

КратДНФf = K'1 КратДНФf = K'1 K1 K2 Kl =
= K'1 K2 Ki = КратДНФ'f.

Длина КратДНФ'f равна длине КратДНФf. Повторив те же рассуждения для всех остальных конъюнкций КратДНФ'f, мы получим кратчайшую ДНФ функции f(x1, …, xn), состоящую из простых импликант. •

Определение. Назовем простой кратчайшей ДНФ булевой функции f(x1, …, xn) ее кратчайшую ДНФ, состоящую из простых импликант.

Далее из всех кратчайших ДНФ нас будут интересовать только простые кратчайшие ДНФ, так как помимо минимальной длины они имеют и меньший ранг каждой конъюнкции. Однако называть и обозначать простые кратчайшие ДНФ функции f(x1, …, xn) будем по-прежнему – КратДНФf.

Пример. Рассмотрим функцию f(x,y,z), которая имеет две простые кратчайшие ДНФ.

s

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

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

Доказательство (от противного). Рассмотрим произвольную функцию f(x1, …, xn). Предположим, что в ее минимальной ДНФ по крайней мере одна из конъюнкций не является простой импликантой функции.

МинДНФf=K1 K2 Ki.

Пусть K1 – не простая импликанта функции f(x1, …, xn), тогда найдется ее простая импликанта K'1 такая, что K1 K'1=K'1. Как было показано при доказательстве предыдущей теоремы, если в МинДНФf заменить конъюнкцию K1 на конъюнкцию K'1 то получившаяся ДНФf будет равносильна исходной. При этом ДНФf будет иметь меньший ранг, чем МинДНФf, так как конъюнкция K'1 имеет меньший ранг, чем K1 что противоречит тому, что МинДНФf является минимальной ДНФ функции f(x1, …, xn). •

Итак, если булева функция задана матрицей Грея, то:

Примеры. Найдем сокращенную, кратчайшие и минимальные ДНФ функции f(a,b,c,d):

На левой матрице показано множество всех максимальных интервалов (их номера можно найти на двух других матрицах).

В центре показано достаточное множество из пяти максимальных интервалов {I1,I2,I3,I4,I5}. Никакие четыре из восьми максимальных интервалов не образуют достаточного множества, следовательно, ДНФ, состоящая из конъюнкций, заданных интервалами I1 – I5, является кратчайшей (длины 5, ранга 15):

Справа показано достаточное множество из пяти максимальных интервалов {I1,I2,I6,I7,I8}. Никакое другое достаточное множество не дает меньшей суммы рангов, следовательно, соответствующая ДНФ является минимальной (длины 5, ранга 14):

Обратим внимание, что в данном случае КратДНФf не является минимальной, а МинДНФf является кратчайшей. Других кратчайших и минимальных ДНФ эта функция не имеет (напомним, что мы рассматриваем только простые кратчайшие ДНФ).