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

Глава 4. Введение в математическую логику.

4.1. Логические функции.

Основные понятия. Частным случаем функции y=f(x1;x2;…. . .xn) является функция, значения которой и значения компонент её аргумента принадлежат множеству {0;1}. Такую функцию называют логической. Аргумент логической функции (x1;x2;…. . .xn) часто называют двоичным(или булевым) вектором, а его компоненты-двоичными(или булевыми) переменными.

Логическую функцию также называют логической операцией, т.к. значения функции и её аргументов принадлежат одному множеству {0;1}.

Знаки логических операций называют логическими связками.

Алгебру, носителем которой является множество X=(x1;x2;…xn,y}, элементы которого принимают значения на множестве {0;1}, а сигнатура которой определена множеством логических связок, называют алгеброй логики, т.е.

A=<X; f1;f2;…. . .fm;0;1>.

Многообразие значений аргумента логической функции (x1;x2;xn) определено числом его компонент, т.е.

|(x1;x2;…. . .xn)|=2n.

а) x3 б) x3

(0;0;1)

(1;0;1) (0;1;1) (0;0;1;0)

(1;1;1) (0;1;1;0)

(0;0;0) (1;0;1;0)

(1;1;1;0)

(0;1;0) (0;0;0;0)

(1;0;0) x2 (0;1;0;0) x3

(1;0;0;0)

x1 x2

(1;1;0;0) (0;0;1;1)

x1

(1;0;1;1) (1;1;1;0)

(0;0;0;1)

(1;0;0;1)

x2

x1 (1;1;0;1) x4

Рис. 56. Единичные кубы для векторов (x1;x2;x3) и (x1;x2;x3;x4).

Многообразие значений логической функции f(x1;x2;…. . .xn) определено многообразием значений её аргумента, т.е.

|y|=2|(x1;x2;…. . .xn)|.

Например, для вектора (x1;x2;x3) имеем: |{(x1;x2;x3)}|=23=8, т.е. {(0;0;0);(0;0;1);(0;1;0);(0;1;1);(1;0;0);(1;0;1);(1;1;0);(1;1;1)}. Для функции y=f(x1;x2;…x3) имеем: |y|=28=256.

2-ой уровень

1;1;0;0

1-ый уровень 3-ий уровень

1;0;0;0 1;1;1;0

1;0;1;0

0;1;0;0

1;1;0;1 4-ый

уровень

0;1;1;0

0;0;0;0

1;1;1;1

начальная вершина конечная вершина

графа графа

0;0;1;0 1;0;0;1

1;0;1;1

0;1;0;1

0;0;0;1 0;1;1;1

0;0;1;1

Рис. 57. Граф булевого вектора (x1;x2;x3;x4).

Д ля изображения аргумента логической функции, используют n-мерный куб с длиной ребра 1. Так, для булевого вектора (x1;x2;x3), представленного на рис. 56а), каждая вершина графа куба имеет единственный набор значений компонент булевого вектора. Для булевого вектора (x1;x2;x3;x4), представленного на рис. 56б), каждая вершина 4-мерного куба также имеет единственный набор значений компонент булевого вектора. Булевый вектор (x1;x2;x3;x4) часто называют тетрадой, как содержащий четыре компоненты.

Единичный куб может быть представлен также графом (см. рис. 57), начальная вершина которого (0;0;0;0), а каждый последующий уровень графа формируется добавлением 1 в один из разрядов предшествующего уровня. Рёбра графа показывают возможные переходы из предыдущего уровня в следующий при изменении значения булевого вектора только по одной компоненте. Конечная вершина графа представлена значением булевого вектора, равным (1;1;1;1). Такой граф имеет четыре уровня.

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

Степень различия двух булевых векторов характеризуется расстоянием Хэмминга или кодовым расстоянием. Оно выражается числом компонент, в которых для двух булевых векторов они имеют различное значение. Эта характеристика имеет большое значение в формировании кодов и в построении систем, обнаруживающих и исправляющих ошибки.

Так например, для вектора (x1;x2;x3;x4) кодовое расстояние больше 2 для следующих наборов:{(0;0;0;1);(0;0;1;0);(0;1;0;0);(1;0;0;0); (0;1;1;1);(1;0;1;1);(1;1;0;1);(1;1;1;0)} ; {(0;0;0;0);(0;0;1;1); (0;1;0;1);(1;0;0;1);(0;1;1;0);(1;0;1;0);(1;1;0;0)} ; {(1;1;1;1); (0;0;1;1);(0;1;0;1);(1;0;0;1);(0;1;1;0);(1;0;1;0);(1;1;0;0)}.

Способы задания. Логическая функция может быть задана таблицей или формулой.

При табличном задании функции необходимо для каждого набора двоичного вектора, т.е. аргумента логической функции, указать её значение (см. табл. 21). Если значение функции определено не для всех наборов двоичного вектора, то функция называется частично определённой. Число строк полностью определённой функции от n компонентов аргумента равно 2n.

Таблица 21.

x1

x2

…

xn

f(x1;x2;…xn)

0

1

0

1

…

1

0

0

1

1

…

1

…

…

…

…

…

0

0

0

0

…

1

0

0

1

1

…

0

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

Описание логической функции одной и двух двоичных переменных. Как уже было отмечено, число логических функций для n компонентов аргумента определяется выражением: 2p, где p=2n.

Для n=1 число возможных значений логической функции равно 4 (см. табл. 22).

Таблица 22.

X

y=f(x)

f0(x)

f1(x)

f2(x)

f3(x)

0

0

0

1

1

1

0

1

0

1

Анализ таблицы 22 позволяет дать определение каждой из четырёх логических функций:

  • f0(x) - функция-константа “0”, т.к. она не изменяет своего значения при изменении аргумента, т.е. (y=0);

  • f1(x) - функция повторитель, т.к. она принимает значения, равные значению аргумента, т.е. (y=x);

  • f2(x) - функция-отрицания, т.к. она принимает значения противоположные значению аргумента, т.е. (y=x);

  • f3(x) - функция-константа “1”, т.к. она не изменяет своего значения при измененнии аргумента, т.е. (y=1);

Для n=2 число возможных значений логической функции равно 16 (см. табл. 23).

Таблица 23.

Аргум.

Функция y=fi(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}, то к логическим функциям применимы законы булевой алгебры. В таблице 24 приведены алгебраические выражения каждой логической функции по законам булевой алгебры. Однако в табл. 24 эти выражения для некоторых функций имеют достаточно сложное описание. Например для f6(x1;x2) и f9(x1;x2). Поэтому в алгебре логики введены дополнительные логические связки для исполнения логических операций:

  • эквиваленции, когда y=1 только при условии x1=x2;

  • - импликации, когда y=0 только при условии x1=1 и x2=0;

  • - сложения по модулю “2”, когда y=1 только при условии x1x2;

  • - стрелка Пирса, когда y=1 только при условии x1=x2=0;

  • - штрих Шеффера, когда y=0 только при условии x1=x2=1;

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

{f1;f2;…fm}<;;;;;;;>=F0.

Таблица 24.

№ функ-

ции

y=f(x1;x2)

Формула логической функции в базисе булевой алгебры.

y=fi(x1;x2)

f(0;0)

f(0;1)

f(1;0)

f(1;1)

f0

0

0

0

0

y=f0(x1;x2)=0

f1

0

0

0

1

y=f1(x1;x2)=(x1x2)

f2

0

0

1

0

y=f2(x1;x2)=(x1x2)

f3

0

0

1

1

y=f3(x1;x2)=x1

f4

0

1

0

0

y=f4(x1;x2)=(x1x2)

f5

0

1

0

1

y=f5(x1;x2)=x2

f6

0

1

1

0

y=f6(x1;x2)=(x1x2)(x1x2)

f7

0

1

1

1

y=f7(x1;x2)=x1x2

f8

1

0

0

0

y=f8(x1;x2)=(x1x2)

f9

1

0

0

1

y=f9(x1;x2)=(x1x2)(x1x2)

f10

1

0

1

0

y=f10(x1;x2)=x2

f11

1

0

1

1

y=f11(x1;x2)=x1x2

f12

1

1

0

0

y=f12(x1;x2)=x1

f13

1

1

0

1

y=f13(x1;x2)=x1x2

f14

1

1

1

0

y=f14(x1;x2)=(x1x2)

f15

1

1

1

1

y=f15(x1;x2)=1

Таблица 25.

№ функ-

ции

y=f(x1;x2)

Формула логической функции в базисе алгебры логики.

y=fi(x1;x2)

f(0;0)

f(0;1)

f(1;0)

f(1;1)

f0

0

0

0

0

y=f0(x1;x2)=0

f1

0

0

0

1

y=f1(x1;x2)=(x1x2)

f2

0

0

1

0

y=f2(x1;x2)=(x1x2)

f3

0

0

1

1

y=f3(x1;x2)=x1

f4

0

1

0

0

y=f4(x1;x2)=(x2x1)

f5

0

1

0

1

y=f5(x1;x2)=x2

f6

0

1

1

0

y=f6(x1;x2)=(x1x2)=(x1x2)

f7

0

1

1

1

y=f7(x1;x2)=x1x2

f8

1

0

0

0

y=f8(x1;x2)=(x1x2)

f9

1

0

0

1

y=f9(x1;x2)=(x1x2)

f10

1

0

1

0

y=f10(x1;x2)=x2

f11

1

0

1

1

y=f11(x1;x2)=x2x1

f12

1

1

0

0

y=f12(x1;x2)=x1

f13

1

1

0

1

y=f13(x1;x2)=x1x2

f14

1

1

1

0

y=f14(x1;x2)=(x1x2)

f15

1

1

1

1

y=f15(x1;x2)=1

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