Тверской государственный университет
Опубликован: 21.08.2007 | Доступ: свободный | Студентов: 3170 / 268 | Оценка: 4.08 / 3.92 | Длительность: 15:40:00
ISBN: 978-5-9556-0110-6
Специальности: Программист, Математик
Лекция 3:

Булевы функции и их представления

< Лекция 2 || Лекция 3: 1234 || Лекция 4 >

Булевы функции от 1-ой и 2-х переменных

Представим вначале в табличном виде все булевы функции от 1-ой переменной. Как мы знаем, их всего четыре.

Таблица 3.2. Булевы функции от 1-ой переменной
x1 f1 f2 f3 f4
0 0 1 0 1
1 0 1 1 0

В этой таблице представлены следующие функции:

  1. f1(x1)= 0 - константа 0;
  2. f2(x1)= 1 - константа 1;
  3. f3(x1)= x1 - тождественная функция;
  4. f_{4}(x_{1})= \neg  x_{1} - отрицание x1 (используется также обозначение x 1 , а в языках программирования эта функция часто обозначается как NOTx1 ).

В следующей таблице представлены все 16 функций от 2-х переменных.

Таблица 3.3. Булевы функции от 2-х переменных
x1 x2 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16
0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 0 1
0 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 0 0
1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 1 1
1 1 0 1 1 0 1 0 1 1 1 0 1 0 0 0 0 1

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

  1. f1(x1,x2)= 0 - константа 0;
  2. f2(x1,x2)= 1 - константа 1;
  3. f3(x1,x2)= x1 - функция, равная 1-му аргументу ;
  4. f_{4}(x_{1},x_{2})= \neg  x_{1} - отрицание x1 ;
  5. f5(x1,x2)= x2 - функция, равная 2-му аргументу ;
  6. f_{6}(x_{1},x_{2})= \neg  x_{2} - отрицание x2 ;
  7. f_{7}(x_{1},x_{2})= (x_{1} \wedge  x_{2}) - конъюнкция, читается " x1 и x2 " (используются также обозначения (x1 & x2) , (x1x2) , min(x1,x2) и (x1 AND x2) );
  8. f_{8}(x_{1},x_{2})= (x_{1} \vee  x_{2}) - дизъюнкция, читается " x1 или x2 " (используются также обозначения (x_{1} \vee  x_{2}), (x1 + x2) , max(x1,x2) и (x1 OR x2) );
  9. f9(x1,x2)= (x1 -> x2) - импликация, читается " x_1 влечет x_2 " или "из x1 следует x2 " (используются также обозначения ( x_{1} \supset  x_{2} ), и ( IF x1 THEN x2 ));
  10. f10(x1,x2)= (x1 + x2) - сложение по модулю 2, читается " x1 плюс x2 " (используется также обозначение (x_{1} \oplus  x_{2}) );
  11. f11(x1,x2)= (x1 ~ x2) - эквивалентность, читается " x1 эквивалентно (равносильно) x2 " (используется также обозначение (x_{1} \equiv  x_{2}) );
  12. f12(x1,x2)= (x1 | x2) - штрих Шеффера (антиконъюнкция), иногда читается как "не x1 и x2 ";
  13. f_{13}(x_{1},x_{2})= (x_{1} \downarrow  x_{2}) - стрелка Пирса (антидизъюнкция), иногда читается как "не x1 или x2 ".

В качестве элементарных функций будем также рассматривать 0-местные функции-константы 0 и 1.

Отметим, что функции f1(x1,x2) и f2(x1,x2) фактически не зависят от значений обоих аргументов, функции f3(x1,x2) и f4(x1,x2) не зависят от значений аргумента x2, а функции f5(x1,x2) и f6(x1,x2) не зависят от значений аргумента x1.

Определение 3.1. Функция f(x1,..., xi,..., xn) не зависит от аргумента xi, если для любого набора значений \sigma _{1},\dots ,\sigma _{i-1}>       \sigma _{i+1},\dots , \sigma _{n} остальных аргументов f имеет место равенство

f(\sigma_1,\ldots,\sigma_{i-1},0,\sigma_{i+1},\ldots, \sigma_n)=
      f(\sigma_1, \ldots,\sigma_{i-1},1,\sigma_{i+1},\ldots, \sigma_n)

Такой аргумент xi называется фиктивным. Аргументы, не являющиеся фиктивными, называются существенными.

Функции f1(x1,..., xn) и f2(x1,...,xm) называются равными, если функцию f2 можно получить из функции f1 путем добавления и удаления фиктивных аргументов.

Например, равными являются одноместная функция f3(x1) и двухместная функция f3(x1,x2) , так как вторая получается из первой добавлением фиктивного аргумента x2 . Мы не будем различать равные функции и, как правило, будем использовать для обозначения равных функций одно и то же имя функции. В частности, это позволяет считать, что во всяком конечном множестве функций все функции зависят от одного и того же множества переменных.

Формулы

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

Пусть \codecal{B} - некоторое (конечное или бесконечное) множество булевых функций. Зафиксируем некоторое счетное множество переменных V={X1, X2, ...} . Определим по индукции множество формул над \codecal{B} с переменными из V. Одновременно будем определять числовую характеристику dep(\Phi ) формулы \Phi, называемую ее глубиной, и множество ее подформул.

Определение 3.2.

  1. Базис индукции. Каждая переменная X_{i} \in  V и каждая константа c \in \codecal{B} является формулой глубины 0, т.е. dep(Xi)= dep(c)=0 . Множество ее подформул состоит из нее самой.
  2. Шаг индукции. Пусть f(x_1,\ldots , x_m) \in \codecal{B}
        и A1, ... , Am - формулы, и max {dep(Ai) | i = 1,..., m} = k . Тогда выражение \Phi  = f(A_{1},\dots  , A_{m}) является формулой, ее глубина dep(\Phi ) равна k+1, а множество подформул \Phi включает саму формулу \Phi и все подформулы формул A1, ..., Am.

Каждой формуле \Phi (X_{1},\dots , X_{n}) сопоставим булеву функцию, которую эта формула задает, используя индукцию по глубине формулы.

Базис индукции. Пусть dep(\Phi )=0. Тогда \Phi  = X_{i} \in  V или \Phi  =c \in \codecal{B}. В первом случае \Phi задает функцию f_{\Phi }(X_{i})=X_{i}, во втором - функцию, тождественно равную константе c.

Шаг индукции. Пусть \Phi - произвольная формула глубины dep(\Phi )= k+1. Тогда \Phi (X_{1},\dots , X_{n})= f_{i}(A_{1},\dots , A\_ m), где f_{i} \in \codecal{B} и A1, ..., Am - формулы, для которых max1 <= i <= m{dep(Ai)}=k . Предположим (по индукции), что этим формулам уже сопоставлены функции g1(X1,..., Xn), ... , gm(X1,..., Xn) . Тогда формула \Phi задает функцию f_{\Phi }(X_{1},\dots , X_{n}) = f_{i}(g_{1}(X_{1},\dots , X_{n}),        \dots  , g_{m}(X_{1},\dots , X_{n})).

Далее мы будем рассматривать формулы над множеством элементарных функций \codecal{B}_e=\{ 0, 1, \neg, \wedge, \vee, \rightarrow, +, \sim,\ |,
        \downarrow \}
      . Все эти функции, кроме констант, называются логическими связками или логическими операциями. При этом для 2-местных функций из этого списка будем использовать инфиксную запись, в которой имя логической связки помещается между 1-ым и 2-ым аргументами. Тогда определение формулы над \codecal{B}_e имеет следующий вид.

Определение 3.3.

  • Базис индукции. 0, 1 и каждая переменная X_{i} \in  V являются формулами глубины 0.
  • Шаг индукции. Пусть \Phi _{1} и \Phi _{2} - формулы, \hat{}  \in  \{ \wedge , \vee , \to , +, \sim, |, \downarrow \}.

Тогда выражения \neg  \Phi _{1} и (\Phi _{1} \hat{}  \Phi _{2}) являются формулами. При этом dep(\neg  \Phi _{1})=1 + dep( \Phi _{1}), а dep((\Phi _{1} \hat{}  \Phi _{2}))= 1 + max \{ dep(\Phi _{1}), dep(\Phi _{2})\}.

В соответствии с этим определением выражения \Phi _{1}(X_{1},X_{2}) = \neg  (X_{1} \wedge  \neg  X_{2}) и \Phi _{2}(X_{1},X_{2},X_{3}) = ( (X_{1} \vee  \neg  \neg  X_{2})\to (X_{3} \sim (X_{1} \downarrow  \neg  X_{2}))) являются формулами. Глубина \Phi _{1} равна 3, а глубина \Phi _{2} равна 4. Выражения же \neg  X_{1} +( \neg  X_{2} \vee  X_{3}), (X_{1} \neg         \wedge  X_{2}) и (X1 + X2 + X3) формулами не являются (почему?).

Для определения функции, задаваемой формулой, удобно использовать таблицу, строки которой сответствуют наборам значений переменных, а в столбце под знаком каждой логической связки стоят значения функции, задаваемой соответствующей подформулой. Например, для формулы \Phi _{2} функция f_{\Phi 2} задается выделенным столбцом \to следующей таблицы.

Таблица 3.4. Функция f_{            \Phi 2          }
X1 X2 X3 ((X1 \vee \neg \neg X2) \to (X3 ~ (X1 \downarrow \neg X2)))
0 0 0 0 0 0 1 0 1 0 1 0 0 1 0
0 0 1 0 0 0 1 0 1 1 0 0 0 0 1
0 1 0 0 1 1 0 1 0 0 0 0 1 0 1
0 1 1 0 1 1 0 1 1 1 1 0 1 0 1
1 0 0 1 1 0 1 0 1 0 1 1 0 1 0
1 0 1 1 1 0 1 0 0 1 0 1 0 1 0
1 1 0 1 1 1 0 1 1 0 1 1 0 0 1
1 1 1 1 1 1 0 1 0 1 0 1 0 0 1
< Лекция 2 || Лекция 3: 1234 || Лекция 4 >
Елена Алексеевская
Елена Алексеевская

Это в лекции 3.

Татьяна Дембелова
Татьяна Дембелова

Почему в вводной лекции курса Основы дискретной математики одним из свойств отношения частичного порядка упоминается антирефлексивность? Посмотрела в других источниках, там -0  рефлексивность... http://ru.wikipedia.org/wiki/%D0%9E%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0