Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
71
Добавлен:
02.05.2014
Размер:
455.17 Кб
Скачать

Алгоритм преобразования формулы к виду СКНФ.

Шаг 1: преобразовать формулу так, чтобы в ней были только операции дизъюнкции, конъюнкции и отрицания, воспользовавшись формулами эквивалентных преобразований (см. табл. 26);

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

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

F= x11x22……. . . xkk(xiixii)= (x11x22. . . …xkkxii) (x11x22. . .…xkkxii);

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

Пусть необходимо привести формулу F=(x1x2)(x1x2x3x4) к виду СКНФ. Согласно алгоритму имеем:

                  1. F=(x1x2x3x3)(x1x2x3x4);

                  1. F=(x1x2x3)(x1x2x3)(x1x2x3x4);

                  1. F=(x1x2x3x4x4)(x1x2x3x4x4)(x1x2x3x4);

                  1. F=(x1x2x3x4)(x1x2x3x4)(x1x2x3x4)(x1x2x3x4) (x1x2x3x4).

Контрольные вопросы и задачи.

                  1. Преобразовать формулы к виду ДНФ

                  1. F=(x1x2x3)(x1x2);

                  1. F=((x1x2x3)(x2x4x3)x1x4)x1);

                  1. F=(x1x2x3x4)((x2x4)x1x3x4)x2x3)(x1x4).

                  1. Преобразовать формулы задачи 1 к виду СДНФ.

                  1. Преобразовать формулы задачи 1 к виду КНФ.

                  1. Преобразовать формулы задачи 3 к виду СКНФ.

4.4. Двойственность логических функций.

Функция fi(x1;x2;……;xn) называется двойственной к функции fj(x1;x2;……;xn), если fi(x1;x2;……;xn)=fj(x1;x2;……;xn). Взяв отрицание обеих частей равенства и подставляя x1;x2;……;xn вместо x1;x2;……;xn, получим fi(x1;x2;……;xn)=fj(x1;x2;……;xn)=fj(x1;x2;……;xn). В частном случае функция может быть двойственна самой себе. В этом случае её называют самодвойственной.

Например, функция f0(x1;x2)=0 двойственна к функции f15(x1;x2)=1. Функция f1(x1;x2)=x1x2 двойственна к функции f7(x1;x2)=x1x2, так как f7(x1;x2)=(x1x2)=x1x2=f1(x1;x2). Функция f8(x1;x2)=(x1x2) двойственна к функции f14(x1;x2)=(x1x2), т.к. f14(x1;x2)=(x1x2)=(x1x2)=f8(x1;x2).

Функции f3(x1;x2)=x1, f5(x1;x2)=x2, f10(x1;x2)=x2 и f12(x1;x2)=x1 самодвойственны.

Принцип двойственности гласит: если в формуле Fi, представляющей функцию fi(x1;x2;……;xn), все знаки функций заменить соответсвенно на знаки двойственной функции, то полученная формула Fj будет представлять функцию fj(x1;x2;……;xn), двойственную к функции fi(x1;x2;……;xn).

Принцип двойственности применим и к разложению логической функции: дизъюнктивная нормальная форма логической функции двойственна к конъюктивной нормальной форме, а совершенная дизъюнктивная нормальная форма двойственна к совершенной конъюнктивной нормальной форме.

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

Контрольные вопросы и задачи.

                  1. Являются ли функции f2 двойственными к функциям f1:

                  1. f1(x1;x2)=x1x2 и f2(x1;x2)=x1x2;

                  1. f1(x1;x2)=x1x2 и f2(x1;x2)=x1 x2;

                  1. f1(x1;x2;x3)=x1x2x1x3 x2x3 и f2(x1;x2;x3)=x1x2 x1x3 x2x3;

                  1. f1(x1;x2;x3)=x1x2x3x1(x2x3) и

                  1. f2(x1;x2;x3)=x1x2x3x1x2x2x3 x1x3;

                  1. Самодвойственны ли функции:

                  1. f(x1;x2;x3)=((x1x2 )x1x3)(x2x3);

                  1. f(x1;x2;x3;x4)=(x1x2x3)x4)x1x2x3;

                  1. f(x1;x2;x3)=x1x2x3x1x2x1x3x2x3x1x2x3;

                  1. f(x1;x2;x3)=(x1x2)(x1x3).

4.5. Монотонность логических функций.

Функция f(x1;x2;……;xn) называется монотонной, если для некоторых наборов значений двоичных переменных (11;12;……;1n) и (21;22;……;2n) выполнено условие: если 1i2i, то f(11;12;…;1i;…;1n)f(21;22;…;2i;…;2n).

Например, для функций от двух двоичных переменных монотонными функциями являются функции, удовлетворяющие условию:

если (0;0)(0;1), то f(0;0)f(0;1),

если (0;0)(1;0), то f(0;0)f(1;0),

если (0;1)(1;1), то f(0;1)f(1;1),

если (1;0)(1;1), то f(1;0)f(1;1).

Таким условиям удовлетворяют следующие функции: f0(x1;x2)=0; f1(x1;x2)=x1x2; f3(x1;x2)=x1; f5(x1;x2)=x2; f7(x1;x2)=x1x2; f1(x1;x2)=1.

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

Контрольные вопросы и задачи.

                  1. Какие функции являются монотонными:

                  1. f(x1;x2)=(x1(x1x2));

                  1. f(x1;x2)=(x1(x2x1));

                  1. f(x1;x2)=x1x2(x1x2);

                  1. f(x1;x2;x3)=x1x2x2x3x1x3x3.

4.6. Линейность логических функций. Алгебра Жегалкина.

Анализ возможностей логических связок в формировании логических функций позволяет выделить алгебру Жегалкина, опирающуюся на базис F4={;;1}. Использование этого базиса формирует структуру формулы в виде полиномов, каждый член которого есть конъюнкция двоичных переменных:

P(x1;x2;……;xn)=01 1inixi 1jknjxjxk …… 2n-1x1x2…. . .xn.

Например, для логической функции f8(x1;x2) полином Жегалкина имеет вид: F8=P(x1;x2)=1x1x2x1x2 .

Основные свойства операции сложения по модулю 2 приведены в таблице 29.

Таблица 29.

Наименование закона

Эквивалентные формулы

1. коммутативности

x1x2=x2x1;

2. ассоциативности

x1(x2x3)=(x1x2)x3;

3. дистрибутивности

x1(x2x3)=x1x2x1x3;

4. свойство “1”

11=0;

x1=x;

5. свойство “0”

00=0;

x0=x;

6. сложение по модулю 2

xx=0;

7. отрицания

x=x1.


Если логическая функция задана таблицей или формулой в любом базисе, т.е. известны значения логической функции для различных наборов двоичных переменных, то можно вычислить все коэффициенты i для полинома Жегалкина, составив систему уравнений по всем известным наборам двоичных переменных.

Пусть f(x1;x2)=x1x2

f(0;0)=0=01102030;

f(0;1)=1=01102130;

f(1;0)=1=01112030;

f(1;1)=1=01112131;

0=0; 1=1; 2=1; 3=1.

Тогда,

F=P(x1;x2)=x1x2x1x2.

Откуда,

(x1x2)=x1x2x1x2.

Пусть f(x1;x2)=x1x2

f(0;0)=1=01102030;

f(0;1)=1=01102130;

f(1;0)=0=01112030;

f(1;1)=1=01112131;

0=1; 1=1; 2=0; 3=1.

Тогда,

F=P(x1;x2)=1x2x1x2.

Откуда

(x1x2)=1x1x1x2.

В таблице 30 приведены полиномы Жегалкина для основных представителей логических функций из таблицы 23.

Таблица 30.

Функция

Эквивалентные формулы

f7

(x1x2)=x1x2x1x2;

f8

(x1x2)=(x1x2)=1x1x2x1x2;

f9

(x1x2)=(x1x2x1x2)=1x1x2;

f12

x1=1x1;

f13

(x1x2)=(x1x2)=1x1x2x1x2;

f14

(x1x2)=(x1x2)=1x1x2.

Если дано аналитическое выражение логической функции, то можно построить полином Жегалкина, опираясь на конъюнктивный базис алгебры Буля F2={ ;}:

                  1. Пусть f(x1;x2)=(x1x2):

                  1. F=(x1x2)=((x11)(x21))1=x1x2x11x21111=x1x2x1x2.

                  1. Пусть f(x1;x2)=x1 x2:

                  1. F=(x1x2)=(x1x2)=x1(x21)1=x1x2x111=(1x1x1x2).

                  1. Пусть f(x1;x2)=x1 x2:

F=(x1x2x1x2)=((x1x2)(x1x2))=(((x11)(x21))1)(x1x2)1= (x1x2x1x211)(x1x21)1=x1x2x1x2x1x2x1x1x2x21= (1x1x2).

Преимущества алгебры Жегалкина состоят в “арифметизации” преобразований логических формул, а недостатки - в сложности формул, особенно при большом числе двоичных переменных.

Полиномы Жегалкина, не содержащие конъюнкции двоичных переменных, т.е. P(x1;x2;…;xn)=(011x1…nxn) называются линейными.

Например, f9(x1;x2)=1x1x2, f12(x1;x2)=1x1.

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

Контрольные вопросы и задачи.

                  1. Линейны ли нижеприведённые функции:

                  1. f(x1;x2;x3)=(x1x2x1x2)x3;

                  1. f(x1;x2)=x1x2(x1x2);

                  1. f(x1;x2;x3;x4)=x1x2x2x3x3x4x4x1;

                  1. f(x1;x2;x3)=(x1x2)(x2x1)x3.

4.7. Функции, сохраняющие “0”.

Функция f(x1;x2;…;xn) называется сохраняющей “0”, если для наборов значений двоичных переменных (0;0;…;0) функция принимает значение f(0;0;…;0)=0.

Например, f0(0;0)=0, f3(0;0)=0, f7(0;0)=0 и др.

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

Контрольные вопросы и задачи.

                  1. Какие функции сохраняют “0”?

                  1. f(x1;x2)=(x1x2)x1x2;

                  1. f(x1;x2;x3)=((x1x2)(x2x3))(x1x3);

                  1. f(x1;x2;x3)=(x1x2x3)((x1x2)(x3x1x2);

                  1. f(x1;x2;x3)=(x1x2)(x2x3)(x3x2).

4.8. Функции, сохраняющие “1”.

Функция f(x1;x2;…;xn) называется сохраняющей “1”, если для наборов значений двоичных переменных (1;1;…;1) функция принимает значение f(1;1;…;1)=1.

Например, f1(1;1)=1, f3(1;1)=1, f5(1;1)=1 и др.

Любая функция, полученная с помощью операции суперпозиции из функций, сохраняющих “1”, сама является функцией, сохраняющей “1”, т.е. класс функций сохраняющих “1” является замкнутым и не позволяет формировать логические функции, несохраняющие “1”.

Контрольные вопросы и задачи.

                  1. Какие из нижеперечисленных функций сохраняют “1”?

                  1. f(x1;x2)=(x1x2)(x1x2);

                  1. f(x1;x2;x3)=x1x2x1x2x31;

                  1. f(x1;x2;x3)=(x1x2)(x1x3)(x2x3);

                  1. f(x1;x2;x3)=((x1x2)(x1(x2x3)))((x2x3)x1.

4.9. Функционально полные системы.

Свойства логических функций (самодвойственность, монотонность, линейность, сохранение “1” и “0”) представлены в таблице (см. табл. 31). Знаком “1” обозначены функции, обладающие одним из перечисленных свойств.

Таблица 31.

y=f(x1;x2)

x1

x2

f0

f1

f2

f3

f4

f5

f6

f7

f8

f9

f10

f11

f12

f13

f14

f15

0

0

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

1

0

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

1

0

0

0

1

1

0

0

1

1

0

0

1

1

0

0

1

1

1

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

с в о й с т в а ф у н к ц и й

сохр. “0”

1

1

1

1

1

1

1

0

0

0

0

0

0

0

0

0

сохр. “1”

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

само- двойст

0

0

0

1

0

1

0

0

0

0

1

0

1

0

0

0

моно- тонная

1

1

0

1

0

1

0

1

0

0

0

0

0

0

0

1

линей- ная

1

0

0

1

0

1

1

0

0

1

1

0

1

0

0

1