Это в лекции 3. |
Полные системы функций и теорема Поста
Замкнутые классы функций
Пусть - это множество всех
булевых функций. В предыдущем разделе мы установили, что любую функцию из
можно задать формулой над системой
(в качестве таких формул можно,
например, взять соответствующие ДНФ и КНФ). Такие системы функций называются полными.
Определение 5.1. Система булевых функций F
называется полной,если формулами над этой системой можно задать
любую булеву функцию из .
Другим уже известным нам примером полной системы функций является система FJ={ 0, 1, *, +}, позволяющая задать произвольную булеву
функцию с помощью многочлена Жегалкина. Разумеется, не всякая система является
полной. Например, формулами над системой невозможно
выразить функцию тождественно равную 0 (почему?).Наша цель в этом разделе - найти критерий, позволяющий
по системе функций
определять ее полноту.
Для исследования полноты полезно следующее понятие.
Определение 5.2. Замыкание [F] системы функций F - это множество всех функций, которые можно задать с помощью формул над F .
Тогда определение полной системы можно переформулировать так:
система F является полной тогда и только тогда, когда .
Замыкание обладает следующими основными свойствами.
Предложение 5.1.
Доказательство. Все эти утверждения достаточно просто следуют из определения замыкания. Например, справедливость пункта (2) следует из того, что всякая функция из [F] задается некоторой формулой над F, а тогда всякая функция из [[F]], которая задается суперпозицией функций из [F], задается также некоторой формулой над F. Пункт (3) очевиден, а пункт (4) следует из (2) и (3):
и так как
,
то и
.
Утверждение (4) позволяет устанавливать полноту некоторой системы, выражая с ее помощью все функции другой системы, полнота которой уже установлена.
Например, законы де Моргана позволяют выразить через пару
,
и
- через пару
,
. Поэтому каждая из систем
и
также является полной. Эквивалентности (7) и (8) позволяют выразить
через пару
,
.
Следовательно, полной будет и система
.
Имеются ли полные системы из одной двуместной функции? Да. Рассмотрим
систему, { | }, включающую лишь штрих Шеффера. Напомним, что . Тогда нетрудно проверить, что
и
. Следовательно, система { | } полная.
Определение 5.3. Система функций F называется замкнутой, если F = [F] .
Очевидно, что замкнутая система F, не содержащая всех функций
из , не является полной.
Далее в этом разделе мы будем использовать верхний индекс в круглых скобках
Для указания числа аргументов функции, т.е. f(n) означает, что .
Определим пять важных замкнутых систем.
Определение 5.4.
(1,2) Функция сохраняет 0 (сохраняет 1),если f(0,0,...
,0)=0 ( f(1,1,...,1) = 1 ). Класс всех функций, сохраняющих 0, обозначим через
,
а класс всех функций, сохраняющих 1, - через
.
(3) Функция называется самодвойственной, если для любого набора аргументов
имеет место равенство:
![f(\sigma_1, \sigma_2, \ldots, \sigma_n) = \neg f(\neg\sigma_1,\neg \sigma_2, \ldots,\neg
\sigma_n).](/sites/default/files/tex_cache/ae73aaa2aece05807900e10fca3fff4c.png)
Таким образом, самодвойственные функции принимают на противоположных наборах
противоположные значения. Класс всех самодвойственных функций обозначим через .
(4) Функция называется линейной, если она может
быть задана линейным многочленом Жегалкина вида
![\alpha_0 + \alpha_1 X_1 + \alpha_2 X_2 + \ldots \alpha_n X_n,](/sites/default/files/tex_cache/1e96f7b4e487ed1ae92cefdf87dc5788.png)
где при i=0, 1, 2, ..., n.
Класс всех линейных функций обозначим через .
(5) Функция называется монотонной, если для любых
двух наборов аргументов
и
таких, что для всех
, имеет место неравенство
![f(\sigma_1, \sigma_2, \ldots, \sigma_n) \geq f(\rho_1, \rho_2, \ldots, \rho_n).](/sites/default/files/tex_cache/6f1974fd967553586a7b43db2271f882.png)
Класс всех монотонных функций обозначим через .
Пример 5. Рассмотрим для примера пять функций от 3-х переменных, которые представлены в следующей таблице.
X1 | X2 | X3 | f1 | f2 | f3 | f4 | f5 |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 |
1 | 1. | 1 | 0 | 1 | 1 | 1 | 1 |
Из определений непосредственно следует, что f3, f4 и f5
сохраняют 0, т.е. входят в , а функции f2, f3, f4
и f5 сохраняют 1, т.е. входят в
. Функция f3 является самодвойственной, а f2 - нет, так как f2(0,0,0) = f2(1,1,1). Функция f2 является линейной - она задается многочленом X1 + X2 +1. Функция f5
является монотонной, а f3 - нет, так как f3(0,1,1)=0 < 1=f3(0,1,0).
Теорема 5.1. Классы
и
являются замкнутыми.
Доказательство. Замкнутость всех указанных классов устанавливается индукцией по построению
формул. Пусть
и
задается некоторой формулой над F.
Нужно показать, что тогда
.
Базис индукции, когда эта формула есть переменная ,
очевиден.
Пусть f(X1, ..., Xk)= g(f1(X1, ..., Xk),
..., fn(X1, ..., Xk)),
и функции входят в F.
Требуется показать, что тогда и f входит в F.
Для это просто:
![f(0,0,\ldots,0)=g(f_1(0,\ldots,0),\ldots, f_n(0,\ldots, 0))=
g(0,0,\ldots,0) = 0.](/sites/default/files/tex_cache/703f206967465ad205e752f777e94fbf.png)
Аналогично проверяется случай .
Если и
- произвольный набор аргументов, то
![f(\sigma_1, \sigma_2, \ldots, \sigma_k) = \neg g(\neg f_1(\sigma_1,\ldots, \sigma_k),
\ldots, \neg f_n(\sigma_1, \ldots, \sigma_k))= \\ \ \ \neg g(\neg\neg f_1(\neg \sigma_1, \ldots, \neg\sigma_k),
\ldots ,
\neg\neg f_n(\neg \sigma_1, \ldots, \neg\sigma_k)) = \\ \ \ \neg g( f_1(\neg \sigma_1, \ldots,\neg \sigma_k),
\ldots, f_n(\neg \sigma_1, \ldots,\neg \sigma_k)) = \\ \ \ \ \neg f(\neg\sigma_1,\neg \sigma_2, \ldots,\neg \sigma_k).](/sites/default/files/tex_cache/31a5677879256c6ed98d4f7a2077b9a9.png)
Следовательно, .
Пусть . Так как тогда g(n) и все
линейны, то существуют коэффициенты
и
такие, что
и
.
Подставив эти выражения в формулу для , получим
![f(X_1,\ldots,X_k)=\\= \alpha_0 +\alpha_1(\beta_{01} + \beta_{11}X_1 + \beta_{k1}X_k)
+ \ldots + \alpha_n(\beta_{0n} + \beta_{1n}X_1 + \beta_{kn}X_k) = \\=(\alpha_0 + \beta_{01}+ \ldots +
\beta_{0n}) + (\alpha_1 \beta_{11}+ \ldots + \alpha_n\beta_{1n})X_1+ \ldots + \\+(\alpha_1 \beta_{k1}+ \ldots
+ \alpha_n\beta_{kn})X_k = \gamma_0 +\gamma_1X_1+ \ldots + \gamma_k X_k,](/sites/default/files/tex_cache/6f67850a63e9451b4a81891394381f10.png)
где - значения
сумм констант в соответствующих скобках.
Следовательно, .
Наконец рассмотрим класс монотонных функций. Если и все
и
и
- два набора аргументов такие, что для всех
, то
![f_i(\sigma_1, \sigma_2, \ldots, \sigma_k)\geq f_i(\rho_1, \rho_2, \ldots, \rho_k)](/sites/default/files/tex_cache/c5d73893a3be64a68de08d0f00771c1e.png)
и поэтому
![f(\sigma_1, \sigma_2, \ldots, \sigma_k)= g(f_1(\sigma_1, \sigma_2, \ldots, \sigma_k),
\ldots,\\ f_n(\sigma_1, \sigma_2, \ldots, \sigma_k)) \geq g(f_1(\rho_1, \rho_2, \ldots, \rho_k), \ldots, \\
f_n(\rho_1, \rho_2, \ldots, \rho_k)) =f(\rho_1, \rho_2, \ldots, \rho_k).](/sites/default/files/tex_cache/af4de1cfe75025c037cf79a3bd548014.png)
Таким образом, .