logo

1.6. Минимизация функций

Определение. ДНФ логической функции называется минимальной, если она

реализует зту функцию и имеет наименьшее суммарное число сомножителей в своих слагаемых по сравнению с другими эквивалентными ей ДНФ.

Нахождение минимальной ДНФ функции называется минимизацией.

Рассмотрим минимизацию логических функций, заданных таблично, методом неопределенных коэффициентов.

Пусть дана функция трех переменных. Составим для нее (формальное выра-жение) дизъюнктивную форму, включающую всевозможные конъюнкции, первого, второго и третьего рангов:

f(x,y,z) = a1x a2y a3z a4 a5 a6 b1xy b2xz b3yz

b4 y b5 z b6 x b7 z b8 x b9 y b10

b11 b12 c1xyz c2 yz c3 xz c4 xy

c5 z c6 y c7 x c8 . (1.9)

Найдем значения правых частей (1.9) при разных наборах переменных. Например, при x = y = z = 0 получим:

f( 0,0,0 ) = a4 a5 a6 b10 b12 c8 .

Подставляя в (1.9) всевозможные наборы переменных, получим систему уравнений:

a4 a5 a6 b10 b11 b12 c8 = f( 1,1,0 ),

a3 a4 a5 b5 b7 + b12 c5 = f( 0,0,1 ),

a2 a4 a6 b4 b9 b11 c6 = f( 0,1,0 ),

a2 a3 a4 b3 b4 b5 c2 = f( 0,1,1 ), (1.10)

a1 a5 a6 b3 b6 b8 c7 = f( 1,1,0 ),

a1 a3 a5 b2 b6 b7 c3 = f( 1,0,1 ),

a1 a2 a6 b1 b8 b9 c4 = f( 1,1,0 ),

a1 a2 a3 b1 b2 b3 c1 = f( 1,1,1 ).

Подставляя в правые части уравнений системы (1.10) значения f( x,y,z ), взятые из таблицы задания функции, получим более простую систему уравнений. Решая эту систему, найдем значения коэффициентов ai, bi, и ci.

Пример. Найти минимальную форму для функции, заданной следующей таблицей:

Таблица 1.16

x

y

z

f

0

0

0

0

0

0

1

1

0

1

0

0

0

1

1

0

1

0

0

0

1

0

1

0

1

1

0

1

1

1

1

1

Подставляя значение f( 0, 0, 0 ) = 0 в первое уравнение системы (1.10) получим

a4 = a5 = a6 = b10 = b11 = b12 = c8 = 0.

Аналогично получим, что все коэффициенты в третьем, четвертом, пятом и шестом уравнениях также равны нулю. В системе уравнений останутся только второе, седьмое и восьмое уравнения, которые будут иметь вид:

c5 = 1

b1 c4 = 1 (1.11)

b1 c1 = 1

Так как мы ищем минимальную формулу, то во втором уравнении системы (1.11) надо положить, что c4 = 0. Тогда получим, что b1 = 1. Аналогично в третьем уравнении. Полагаем, что c1 =0. Окончательно имеем: b1 = 1, c5 = 1, а остальные коэффициенты в (1.9) все равны нулю. Подставляя найденные коэффициенты в (1.9) получим минимальную дизъюнктивную форму данной функции в виде:

f ( x,y,z ) = x y z.

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

Пример. Для функции f( x,y,z ) = z y x z xy xyz существуют две эквивалентные минимальные дизъюнктивные формы:

xz y и x y z.

Следует отметить, что данный метод минимизации удобен для функции с числом переменных ≤ 5. Для функций с большим числом переменных разработаны различные алгоритмы минимизации. Тривиальный алгоритм решения этой задачи сводится к перебору всех эквивалентных формул (для данной функции), с числом букв, не превосходящих максимально возможного числа СНФ. В результате такого перебора будет обнаружено минимальное представление заданной функции. Однако, даже для функций, зависящих от небольшого числа переменных, такой алгоритм практически невыполним.

Обычно пользуются разными алгоритмами (более эффективными) для упрощения СНФ. Однако применение этих алгоритмов не гарантирует получения минимальных форм, но позволяет получать формы близкие к минимальным. В [2] дается алгоритм минимизации, основанный на операциях склеивания и поглощения.

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4