Российский государственный гуманитарный университет
Опубликован: 13.07.2022 | Доступ: свободный | Студентов: 249 / 8 | Длительность: 11:54:00
Специальности: Программист
Лекция 4:

Логические основы компьютера

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >

Пример 13. Секретные документы находятся в одном из трех сейфов. Три агента передали по два сообщения - одно о том, в каком сейфе находятся документы, и одно о том, в каком сейфе их нет.

Первый агент:

  1. "Документы не в первом сейфе";
  2. "Документы во втором сейфе".

Второй агент:

  1. "Документы не в первом сейфе";
  2. "Документы в третьем сейфе".

Третий агент:

  1. "Документы не в третьем сейфе";
  2. "Документы в первом сейфе".

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

Введем высказывания:

a: "Документы в первом сейфе";

b: "Документы во втором сейфе";

с: "Документы в третьем сейфе".

Tогда сообщения агентов могут быть представлены в виде:

первый агент: \neg a, b;

второй агент: \neg a, c;

Имеем: a \bar b \bar c \vee \bar a b \bar c \vee\bar a \bar b c=1, так как документы находятся только в одном сейфе. Возможны три случая.

  1. a \bar b \bar c=1, или a = 1, b = 0, c = 0. В этом случае оба сообщения первых двух агентов неверны, что, по условию, невозможно.
  2. \bar a b \bat c=1, или a = 0, b = 1, c = 0. Тогда второй и третий агенты прислали по одному верному сообщению и по одному неверному, что противоречит условию задачи.
  3. \bar a \bar b c=1, или a = 0, b = 0, c = 1. В этом случае первый агент прислал одно верное сообщение и одно неверное, второй - два верных, третий - два неверных, так что все условия выполняются.

Таким образом, секретные документы находятся в третьем сейфе.

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

Пусть B = {0, 1} и n - натуральное число.

Логическая, или булевская функция - это функция вида

f: B^n \to B.

Если логическая функция имеет n аргументов, то область ее определения содержит 2^n элементов, а всего таких функций 2^{2^n}

Пример 14. Пусть n = 1. Все логические функции с одним аргументом имеют вид:

f_0(x) = 0 для x \in B;

f_1(x) = x для x \in B;

f_2(0) = 1, f_2(1) = 0;

f_3(x) = 1 для x \in B.

Логические функции имеют конечное число аргументов, поэтому такие функции могут определяться в виде таблиц истинности. В табл. 4.3 определены функции из примера 14.

Таблица 4.3. Логические функции с одним аргументом
x f_0 f_1 f_2 f_3
0 0 0 1 1
1 0 1 0 1

Переменная, которая принимает значения на множествеB, называется булевской, или логической.

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

Пример 15. Функция f: B^3 \to B вида f(x, y, z) = x \vee \neg y \& z, для x, y, z \in B, является логической функцией.

Пример 16. Всего имеется 16 логических функций с 2 аргументами, восемь из них определены в табл. 4.1. В табл. 4.4 приведено определение оставшихся восьми функций с помощью формул логики высказываний.

Таблица 4.4. Логические функции с двумя аргументами (остальные 8)
A B 0 \neg(A \to B) A \neg(B \to A) B \neg B B \to A 1
0 0 0 0 0 0 0 1 1 1
0 1 0 0 0 1 1 0 0 1
1 0 0 1 1 0 0 1 1 1
1 1 0 0 1 0 1 0 1 1

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

Утверждение 3. Пусть f: B^n \to B - логическая функция. Тогда

f(x_1, \dots, x_i, \dots, x_n)=x_if(x_1, \dots, 1, \dots, x_n)\vee \bar {x_i} f(x_1, \dots, 0, \dots, x_n),

для i = 1, 2, \dots, n;

f(x_1, \dots, x_j, \dots, x_n)=(x_j \vee f(x_1, \dots, 0, \dots, x_n)*)\bar {x_j} \vee f(x_1, \dots, 1, \dots, x_n))

для j = 1, 2, \dots, n.

Доказательство. Если x_i = 0, то обе части первого равенства совпадают с f(x_1, \dots, 0, \dots, x_n) , а если x_i = 1, то с f(x_1, \dots, 1, \dots, x_n) , для i = 1, 2, \dots, n. Аналогично, если x_j = 0, то обе части второго равенства совпадают с f(x_1, \dots, 0, \dots, x_n) , а если x_j = 1, то с f(x_1, \dots, 1, \dots, x_n) , для j = 1, 2, \dots, n.

И утверждения 3 следует следующее утверждение.

Утверждение 4. Пусть f: B^n \to B - логическая функция. Тогда

f(x_1, x_2, \dots, x_n)=\overline{x_1}\dots \overline {x_{n-1}} \overline {x_n}f(0, \dots, 0,0) \vee \overline {x_1}\dots \overline {x_{n-1}}x_nf(0, \dots, 0,1) \vee\\
\dots\\
\vee x_1x_2\dots x_nf(1,\dots, 1,1);\\
F(x_1, x_2, \dots, x_n)=(x_1 \vee \dots \vee x_{n-1} \vee x_n \vee f(0, \dots, 0,0)\cdot\\
\cdot (x_1 \vee \dots \vee x_{n-1} \vee \overline {x_n} \vee f(0,\dots, 0,1)) \cdot\\
\dots\\
\cdot \overline {x_1} \vee \dots \vee \overline {x_2} \vee \overline {x_n} \vee f(1, \dots, 1,1)).

Доказательство. Обе формулы нетрудно проверить с помощью индукции по числу аргументов.

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

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

Из утверждения 4 следует, что представление логической функции в СДНФ единственно, с точностью до порядка следований элементарных конъюнкций. Аналогично для СКНФ.

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

Пример 17. Найдем СДНФ функции f(x,y)-\bar xy \vee \overline {xy} и определим, при каких значениях аргументов она принимает значение 1. Имеем:

f(x,y)=\bar x y \vee \bar x \vee \bar y=\bar x \vee \bar y=\bar x(y \vee \bar y)\vee (x \vee \bar x)\bar y=\bar x y \vee \bar x \bar y \vee x \bar y

Из утверждения 4 следует, что

f(x,y)=\bar x \bar yf(0,0)\vee \bar x y f (0,1)\vee x \bar y f(1,0)\vee xyf(1,1)

Поэтому f(0,0)=f(0,1)=f(1,0) , а f(1,1)=0 .

Пример 18. Найдем СДНФ и СКНФ логической функции, которая соответствует таблице истинности 4.5.

Таблица 4.5. Таблица истинности для функции с 3 аргументами
x y z 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 1
1 1 1 1

СДНФ функции выглядит следующим образом:

f(x,y,z)=\bar x \bar y z \vee \bar x y \bar z \vee x \bar y \bar z \vee xy \barrz \vee xyz

Она упрощается до ДНФ: f(x,y,z)=\bar x \bar y z \vee y \bar z \vee  x \bar z \vee xy.

СКНФ функции имеет вид:

f(x,y,z)=(x \vee y \vee z)(x \vee \bar y \vee \bar z)(\bar x \vee y \vee \bar z)

Определим операции на множестве логических функций из  B^n в B.

Пусть  f: B^n \to B и  g: B^n \to B. Положим

 (\neg f)(x_1, x_2, \dots, x_n) = \neg f(x_1, x_2, \dots, x_n),\\
(f \& g)(x_1, x_2, \dots, x_n) = f(x_1, x_2, \dots, x_n) \& g(x_1, x_2, \dots, x_n),\\
(f \vee g)(x_1, x_2, \dots, x_n) = f(x_1, x_2, \dots, x_n) \vee g(x_1, x_2, \dots, x_n),\\
0(x_1, x_2, \dots, x_n) = 0,	 1(x_1, x_2, \dots, x_n) = 1,

для  x_1, x_2, \dots, x_n \in B.

Утверждение 5. Множество логических функций из Bn в B с определенными выше операциями образуют булеву алгебру.

Доказательство. Нетрудно проверить, что так определенные операции удовлетворяют всем свойствам 1 - 5 из п. 4.1.4.

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >