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

Таблица 26.

№№ функ

ции

имя логической функции

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

“чтение”

логической

функции

f0

константа “0”

0

“любой ноль”

f1

конъюнкция

(логическое “и”

совпадение)

(x1x2)

“x1 и x2

f2

отрицание импликации

(x1x2)=x1x2=(x1x2)

“не если x1, то x2

f3

повторитель первого аргумента

x1

“как x1

f4

отрицание обратной импликации

(x2x1)=x1x2=(x1x2)

“не если x2, то x1

f5

повторитель второго аргумента

x2

“как x2

f6

отрицание эквивалентности (сложение по модулю 2)

(x1x2)=(x1x2)=(x1x2 x1x2)

“или x1,или x2

f7

дизъюнкция (логическое “ИЛИ”, разделение)

(x1x2)

“x1 или x2

f8

отрицание дизъюнкции (стрелка Пирса)

(x1x2)=x1x2=x1x2

“не x1 и не x2

f9

эквиваленция (равнозначность)

(x1x2)=(x1x2x1x2)

“x1 как x2

f10

отрицание второго аргумента

x2

“не как x2

f11

обратная импликация

(x2x1)=x2x1

“если x2,то x1

f12

отрицание первого аргумента

x1

“не как x1

f13

прямая импликация

(x1x2)=x1x2

“если x1, то x2

f14

отрицание конъюнкции (штрих Шеффера)

(x1x2)=x1x2=(x1x2)

“не x1 или не x2

f15

константа “1”

1

“любая единица”

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

Анализ логических функций одной и двух переменных показывает, что среди множества значений существуют функции от меньшего числа переменных. Так, для n=2 имеем : f0(x1;x2) и f15(x1;x) вообще не зависят от двоичных переменных, а функции f3(x1;x2),f5(x1;x),f0(x1;x2) и f12(x1;x2) зависят только от значений одной переменной.

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

Двоичная переменная xi в функции f(x1;x2;…;xi-1;xi;xi+1;…;xn) называется фиктивной, если выполняется условие:

f(x1;x2;…;xi-1;0;xi+1;…;xn)=f(x1;x2;…;xi-1;1;xi+1;…;xn).

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

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

                  1. Для куба (см. рис.56б), найти множество вершин, расстояние Хэмминга для которых равно 3.

                  1. Для куба (см. рис.56а), найти вершины, где f(0;0;1;0)=1; f(1;0;1;0)=1; f(0;0;1;1)=1; f(1;0;1;1)=1. Какие двоичные переменные сохраняют своё значение? Обратить внимание, что все вершины принадлежат одной плоскости.

                  1. Чему равны f=f1f14, f=f1f14, f=f7f8, f=f7f8, по таблице 23? Проверить по таблице 24.

                  1. По таблице 24 найти фиктивные двоичные переменные для каждой функции.

4.2. Суперпозиция логических функций. Формулы.

Функция f, получаемая из функций f1;f2;…. . .;fn с помощью операций подстановки их друг в друга и переименования аргументов, называется суперпозицией функций.

Алгебраическое выражение, описывающее логическую функцию и содержащее только двоичные переменные и логические связки, называют формулами F над F0, где F0сигнатура алгебры логики. Например, если f7(f8(x1;x2);f2(x1;f7(x1;x3))), то F=((x1x2)(x1(x1x3))).

Двоичные переменные иногда называют формулами глубины 0, а элементарные формулы, аргументами которых являются только двоичные переменные, - формулами глубины 1. Формулы, аргументами которых являются также формулы глубины (k-1) - формулами глубины k. Формулы глубины (k-1) называют подформулами формулы глубины k.

Всякая формула, выражающая функцию f как суперпозицию других функций f1;f2;…. . .;fn, задаёт способ её вычисления: формулу можно вычислить, только если уже вычислены значения всех её подформул. Значение подформулы можно вычислить по известному набору значений двоичных переменных.

По каждой формуле можно восстановить таблицу логической функции, но не наоборот, т.к. каждой логической функции можно представить несколько формул в различных базисах (см. табл. 26).

Формулы Fi и Fj представляющие одну и ту же логическую функцию fi, называются эквивалентными или равносильными. Так, эквивалентными формулами являются:

                  1. f2(x1;x2)=x1x2=(x1x2)= (x1x2);

                  1. f6(x1;x2)=(x1x2x1x2)= (x1x2)=(x1x2);

                  1. f8(x1;x2)=(x1x2)= (x1x2)=x1x2;

                  1. f14(x1;x2)=(x1x2)= (x1x2)=x1x2;

                  1. f9(x1;x2)=((x1x2)(x1x2))=(x1x2);

                  1. f13(x1;x2)=(x1x2)=(x1x2).

Равенство Fi=Fj означает, что формулы Fi и Fj описывают одну и ту же логическую функцию.

Если какая-либо формула F содержит в качестве подформулы Fi, то замена Fi на эквивалентную Fj не изменяет значения формулы F при любом наборе булевого вектора, но изменяет форму её описания. Вновь полученная формула F` эквивалентна формуле F.

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

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

                  1. Число левых скобок равно числу правых скобок;

                  1. Нет двух стоящих рядом логических связок, т.е. между ними должны быть формулы;

                  1. Нет двух стоящих рядом формул, т.е. между ними должны быть логические связки;

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

                  1. Логическая связка ““ сильнее любой двухместной логической связки;

Эти правила облегчают запись формул и их преобразование.

При эквивалентных преобразованиях часто используют правила обобщённого склеивания:

xFi xFj= xFi xFj FiFij;

(xFi)xFj)=(xFi)(xFjFiFij);

Эти правила могут быть доказаны следующим образом:

                  1. xFi xFj FiFij=xFi xFj FiFij (xx)= xFi xFj FiFijx FiFijx= xFi(1Fj)xFj(1Fi)= xFi xFj;

                  1. (xFi)(xFj)FiFij)=(xFi)(xFj)FiFijxx)=(xFi)(xFj)FiFijx)FiFijx)=(xFi)(1Fj)xFj)Fi)(xFi)xFj);

Например, необходимо выполнить преобразование формулы:

F=(x1x2)(x3x4)(x1x2)(x3x4).

1) преобразовать формулу в базис булевой алгебры:

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

2) опустить знак “ “ до двоичных переменных:

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

3) преобразовать формулу по закону дистрибутивности:

F=x1x2x3x1x2x4x1x2x3x1x2x4;

4) вынести за скобку x2по закону дистрибутивности:

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

5) воспользоваться законом дистрибутивности:

F=x2(x3x1x1x4x1x1));

6) использовать закон противоречия:

F=x2(x3x4); что и требовалось выполнить.

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

1. Найти алгебраическое выражение для логической функции:

                  1. f=f8(f1(x1;x2);f4(x1;x2));

                  1. f=f12(f11(f12(x1;x2);f4(x1;x2)));

                  1. f=f12(f11(f12(x1;x2);f4(x1;x2)));

                  1. f=f6(f1(x1;x2);f2(x1;x2)) по формулам таблицы 24.

                  1. Выполнить эквивалентные преобразования формул:

                  1. (x1x2x1x3);

                  1. x1(x2x3);

                  1. (x1x2)(x1x3) в базис алгебры Буля.

                  1. Верны ли записи формул:

                  1. x1x2(x3x4)x1);

                  1. (x1 x2x3)x2;

                  1. x1 ((x2 x3)x3;

                  1. Построить таблицы функций, заданных формулами:

                  1. (x1x2)(x2x3)(x3x1);

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

                  1. F=(((x1x2)x3)x2)x3;

4.3. Разложение логической функции.

{

Пусть дан булевый вектор (x1;x2;. . .…xn), компоненты которого xi принимают значения i{0;1}. Тогда

xi, если i=1;

xii= xi, если i=0.

Конъюнкция xii в пределах заданного булевого вектора определяет формулу специального вида Kj=(x11x22…xnn), которую называют элементарной конъюнкцией.

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

Дизъюнкция xii в пределах заданного булевого вектора определяет формулу специального вида D=(x11x22…xnn), которую называют элементарной дизъюнкцией.

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

Дизъюнктивная нормальная форма логической функции. Всякая логическая функция f(x1;x2;. . .…;xn) может быть представлена в следующем виде:

f(x1;x2;…;xn)=(x11x22…xmm)f(1;2;…;m;…;xm+1;…;xn)),

где mn, а дизъюнкция берётся по всем m наборам значений переменных (1;2;…. . .;m).

Пусть 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;…;xn)x1x2f(1;0;…;xn)x1x2f(0;1;…;xn) x1x2f(0;0;…;xn).

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

f(x1;x2;…;xn)=x11x22…xnnf(1;2;. . .…;n).

Для того, чтобы элементарная конъюнкция (x11x22…xnn) могла представлять логическую функцию f(x1;x2;…;xn) необходимо, чтобы f(1;2;…. . .;m)=1. В противном случае f(x1;x2;. . .…;xn)=0, т.к. второе значение f(1;2;…. . .;m)=0.

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

f(x1;x2;…;xn)=(x11x22…xnn), для f(1;2;…. . .;n)=1.

Функцию f(1;2;…. . .;n)=1 называют конституентой единицы. Любую булеву функцию представляет дизъюнкция элементарных конъюнкций, для которых конституента равна единице.

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

F=x1x2x3x2x3x4 или F=x1x2x1x2x3x4.

Если элементарные конъюнкции, представляющие логическую функцию в разложении, имеют одинаковые двоичные переменные в каждой элементарной конъюнкции, то разложение представляет совершенную дизъюнктивную нормальную форму формулы логической функции (СДНФ). Например, F=x1x2x3x4x1x2x3x4x1x2x3x4.

Если логическая функция задана таблицей, то формулу СДНФ можно записать по значениям двоичных переменных для значения функции, равной 1. Например, для функции, заданной таблицей 27, имеем: F=x1x2x3x4x1x2x3x4

Таблица 27.

аргументы

функция

x1

x2

x3

x4

y=f(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: преобразовать формулу так, чтобы в ней были только операции дизъюнкции, конъюнюнкции и отрицания, воспользовавшись формулами эквивалентных преобразований (см. табл. 26);

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

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

F= x11x22…xkk(xiixii)= x11x22…xkk x11x22…xkk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.

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

f(x1;x2;……;xn)=(x11x22………xmmf(1;2;…. . .;m;xm+1;……;xn)),

где mn, а конъюнкция берётся по всем m наборам двоичных переменных (1;2;. . .…;m).

Пусть 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1x22. . .…xnn f(1;2;…;n)).

Для того, чтобы элементарная дизъюнкция (x11x22…xnn) могла представлять логическую функцию f(x1;x2;…;xn) необходимо, чтобы f(1;2;…;n)=0. В противном случае f(x1;x2;…;xn)=1 всегда, т.к. второе значение f(1;2;…;n)=1.

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

f(x1;x2;……;xn)=(x11x22…. . .xnn) , для f(1;2;…;n)=0.

Функцию f(1;2;…;n)=0 называют конституентой нуля. Любую булеву функцию представляет конъюнкция элементарных дизъюнкций, для которых конституента равна нулю.

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

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

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

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

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

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

Таблица 28.

аргументы

функция

x1

x2

x3

x4

y=f(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

…

…

…

…

…