logo

Нормальные формы логических функций

Определение. Полной конъюнкцией n переменных называется конъюнкция состоящая из n переменных или их отрицаний, в которой каждая переменная встречается только один раз.

Например, x1 2 x3, 1 x2 3 - полные конъюнкции трех переменных.

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

Для функции n переменных СДНФ имеет вид:

f( x1,x2,…,xn ) = x x … x , (1.7)

где s – равно значению переменной x в любом наборе значений переменных, для которого значения функций равно 1, причем

для любой логической функции существует единственное представление ее в виде (1.7). Покажем, как найти СДНФ на следующем примере.

Пример. Представить функцию f( x1,x2,x3 ), заданную табл. 1.15 в СДНФ.

Таблица 1.15

x1

x2

x3

f

0

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

0

0

1

1

0

1

0

1

1

0

0

1

1

1

1

Из табл.1.15 видно, что f( x1,x2,x3 ) = 1 будет для второй, третьей, пятой и восьмой строк.

Для второй строки x1 = 0, x2 = 0, x3 = 1,

поэтому s1 = 0, s2 = 0, s3 = 1.

Значит, полная конъюнкция для второй строки будет иметь вид:

= x1º x2º x3¹ = x3.

Для третьей, пятой и восьмой строк полные конъюнкции соответственно будут имеет вид:

x1º x2¹ x3º , x1¹ x2º x3º , x1¹ x2¹ x3¹ .

Тогда согласно (1.7) СДНФ данной функции будет иметь вид:

f( x1,x2,x3 ) = x3 x2 x1 x1 x2 x3.

Определение. Полной дизъюнкцией n переменных называется дизъюнкция состоящая из n переменных или их отрицаний, в которой каждая переменная встречается только один раз.

Например, x1 x3, x2 x3 - полные дизъюнкции трех пере-менных.

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

Для функции n переменных СКНФ имеет вид:

f( x1, x2, …, xn ) = & ( ), (1.8)

f(s , …, s )=0

где i – равно противоположному значению переменной xi , в любом наборе перемен-

ных, для которого значение функции равно нулю.

для любой логической функции существует единственное представление ее в виде (1.8). Покажем, найти СКНФ на следующем примере.

Пример. Представить функцию f( x1, x2, x3 ), заданную табл. 1.15 в СКНФ.

Из табл.1.15 видно, что f( x1, x2, x3 ) = 0 будет для первой, четвертой, шестой и седьмой строк.

Для первой строки x1 = 0, x2 = 0, x3 = 0,

поэтому = 1, = 1, = 1.

Следовательно, полная дизъюнкция для первой строки будет иметь вид:

= x1¹ x2¹ x3¹ = x1 x2 x3.

Для четвертой, шестой и седьмой строк полные дизъюнкции соответственно будут иметь вид:

x1¹ x2º x3º , x1º x2¹ x3º ,

x1º x2º x3¹ .

Тогда согласно (1.8) СКНФ данной функции будет иметь вид:

f( x1, x2, x3 ) = ( x1 x2 x3 )( x1 2 3 )( 1 x2 3 )( 1 2 x3 ).

Переход от СДНФ к СКНФ

Этот переход можно сделать по следующему правилу:

1) Образовать логическую сумму дизъюнктивных членов, не входящих в СДНФ функции;

2) В полученном выражении заменить символы дизъюнкций на символы конъюнкций и наоборот, аргументы xi на их отрицания , а на .

Пример. Для данной функции

f( x1,x2,x3 ) = 1 x2 3 x1 2 x3 x1 x2 3,

представленной в форме СДНФ, составить СКНФ.

Обозначим через Кi полную конъюнкцию трех переменных для i-ой строки таблицы задания функции.

Например, для второй строки К2 = x1º x2º x3¹ = .

Тогда заданную функцию можно записать в следующем виде:

f( x1, x2, x3 ) = x1º x2¹ x3º x112 x13 x11 x12 3 = K3 K6 K7.

Образуем логическую сумму дизъюнктивных членов, не входящих в СДНФ функции. Эта сумма будет иметь вид:

K1 K2 K4 K5 K8 = x1º xº2 3 12 x13 1 x12 x13 x112 3 x11 x12 x13=

= x3 x2 x3 x1 x1 x2 x3.

Меняя в данном выражении символы на & и наоборот, а аргументы на их отрицания и наоборот, получим искомую СКНФ для заданной функции:

f( x1,x2,x3 ) = ( x1 x2 x3 )( x1 x2 )( x1 )( x2 x3 )( ).

Переход от СКНФ к СДНФ

Этот переход осуществляется аналогично по следующему правилу:

1) Образовать логическое произведение конъюктивных членов, не входящих в СКНФ функции.

2) В полученном выражении нужно заменить символы & на , на &, аргументы xi на , на xi.

Пример. Для функции предыдущего примера составить СДНФ по найденной СКНФ.

Обозначим через Di полную дизъюнкцию для i-ой строки таблицы задания данной функции.

Например, для третьей строки таблицы значения переменных ( 0,1,0 ). Следовательно, 1 = 1, 2 = 0, 3 = 1.

Тогда полная дизъюнкция для третьей строки будет такая:

D3 = = x1 2 x3.

Учитывая сделанное обозначение, запишем найденную в предыдущем примере СКНФ в следующем виде:

f(x1,x2,x3) = (x1¹ x2¹ x3¹)( x1¹ x2¹ x3º )( x1¹ x2º x3º )( x1º x2¹ x3¹ )( x1º x2º x3º).

Учитывая, что верхние индексы при переменных в этом выражении, согласно (1.8) равны противоположному значению переменной, то получим следующие наборы значений переменных, входящие в это выражение:

( 0, 0, 0 ), ( 0, 0, 1 ), ( 0, 1, 1 ), ( 1, 0, 0 ) и ( 1, 1, 1 ).

Эти наборы переменных соответствуют 1, 2, 4, 5 и 8 строкам таблицы задания функции. Следовательно, СКНФ функции можно переписать так:

f( x1,x2, x3 ) = D1∙ D2 ·D4 ·D5 ·D8.

Из этой записи видно, что в СКНФ не входят полные дизъюнкции 3, 6 и 7 строк.

Образуем логическое произведение из этих дизъюнкций:

D3∙D6 D7 = ( x1¹ x2º x3¹ )( x1º x2¹ x3º )( x1º x2º x3¹ ) =

= ( x1 2 x3 )( X )( 2 x3 ).

Меняя в этом выражении & на , на & а аргументы на их отрицания и наоборот, получим СДНФ для заданной функции:

f( x1, x2,x3 ) = x2 3 x1 2 x3 x1 x2 3.

Сравнивая это выражение с СДНФ функции предыдущего примера, видим, что они одинаковые, что и должно быть т.к. f( x1,x2,x3 ) – одна и та же для этих примеров.

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

Например, f( x,y,z) = x x z x z y.

Любую ДНФ можно привести к СДНФ “ расщеплением” конъюнкций, которые не являются полными.

Пример. Привести к СДНФ следующую ДНФ функции: x y x z.

В данной ДНФ конъюнкция xy не является полной, т.к. не содержит переменной z . Учитывая, что z = 1 преобразуем ДНФ следующим образом:

xy(z ) x z = xyz xy x z.

Полученная форма и есть искомая СДНФ.

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