Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
UchebnoePosobie.doc
Скачиваний:
72
Добавлен:
11.11.2019
Размер:
6.36 Mб
Скачать

1.5.7.2. Кнф булевой функции

Любую булеву функцию f(x1; x2;...xn) можно представить в следующем виде:

f(x1; x2;…xn)=&(x1`s1Úx2`s2Ú………Úxm`smÚf(s1;s2;... . sm;xm+1;……;xn)),

где m£n, а конъюнкция берётся по всем m наборам булевых переменных (s1;s2;. . .…;sm).

Пусть m=1, тогда

f(x1; x2;...xn)=(`x1Úf(1;x2;…xn))×(x1Úf(0;x2;...xn)).

Пусть m=2, тогда

f(x1; x2;...xn)=(`x1Ú`x2Úf(1; 1; x3;...xn))×(`x1Úx2Úf(1; 0; x3;...xn))×

(x1Ú`x2Úf(0; 1; x3;...xn))×(x1Úx2Úf(0; 0; x3;...xn)).

Пусть m=n, тогда

f(x1;x2;...xn)=&(x1`s1Úx2`s2Ú. . .…Úxn`snÚ f(s1;s2;…;sn)).

Чтобы дизъюнкция (x1`s1Úx2`s2Ú…Úxn`sn) могла представлять логическую функцию f(x1; x2;...xn) необходимо f(s1; s2;… sn)=0. В противном случае, когда f(s1; s2;…sn)=1, значение f(x1;x2;...xn)=1при любых значениях si .

Итак, разложение в конъюнктивную нормальную форму есть

f(x1; x2;…xn)=&(x1`s1Úx2`s2Ú…. . .Úxn`sn) для f(s1; s2;…sn)=0.

Функцию f(s1;s2;…;sn)=0 называют конституентой нуля. Любую булеву функцию, значение которой равно “0”, представляет конъюнкция элементарных дизъюнкций.

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

Например, F=(x1Úx2Úx3Úx4)×(`x1Ú`x2Úx3Ú`x4)×(x1Ú`x2Ú`x3Ú`x4).

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

Например, для функции, заданной таблицей1.26, имеем:

F=(x1Úx2Úx3Ú`x4)× (x1Ú`x2Ú`x3Úx4).

таблица 1.26

булевый вектор

булева функция

x1

x2

x3

x4

0

0

0

1

f(0;0;0;1)=0

1

0

1

0

f(1;0;1;0)=1

1

1

0

0

f(1;1;0;0)=1

0

1

1

0

f(0;1;1;0)=0

...

...

...

...

...

Алгоритм преобразования формулы к скнф:

Шаг 1: преобразовать формулу так, чтобы в ней были только операции дизъюнкции, конъюнкции и отрицания;

Шаг 2: преобразовать формулу так, чтобы операция отрицания была применима только к двоичным переменным;

Шаг 3: если в некоторую дизъюнкцию не входит переменная xi, то дополнить её выражение (xi ×`xi) и выполнить преобразование по закону дистрибутивности:

F= x1`s1Úx2`s2Ú……. . . Úxk`skÚ(xi ×`xi)=(x1`s1Úx2`s2Ú. . . …Úxk`skÚxi)× (x1`s1Úx2`s2Ú. . .…Úxk`skÚ`xi);

Шаг 4: если в некоторую дизъюнкцию не входит переменная xj, то повторить шаг 3, иначе конец.

Пример: преобразовать формулу F=(x1Úx2)×(`x1Ú`x2Úx3Úx4) к виду СКНФ.

  • F=(x1Úx2Úx3×`x3)×(`x1Ú`x2Úx3Úx4);

  • F=(x1Úx2Úx3)×(x1Úx2Ú`x3)×(`x1Ú`x2Úx3Úx4);

  • F=(x1Úx2Úx3Úx4×`x4)×(x1Úx2Ú`x3Úx4×`x4)×(`x1Ú`x2Úx3Úx4);

  • F=(x1Úx2Úx3Úx4)×(x1Úx2Úx3Ú`x4)×(x1Úx2Ú`x3Úx4)×(x1Úx2Ú`x3Ú`x4)× (`x1Ú`x2Úx3Úx4).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]