Полные системы функций. Теорема Поста о полной системе функций — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Добавлены определения классов функций, отредактированы источники, исправлены мелкие ошибки, добавлены "категории")
Строка 1: Строка 1:
 
== Полная система функций ==
 
== Полная система функций ==
Система булевых функций называется ''полной'', если можно построить их суперпозицию, тождественную любой другой заранее заданной функции. Говорят ещё, что замыкание данной системы совпадает с множеством <math>P_2</math>.
+
Система булевых функций называется ''полной'', если можно построить их [[Суперпозиции|суперпозицию]], тождественную любой другой заранее заданной функции. Говорят ещё, что замыкание данной системы совпадает с множеством <math>P_2</math>.
  
 
Американский математик Эмиль Пост ввёл в рассмотрение следующие замкнутые классы булевых функций:
 
Американский математик Эмиль Пост ввёл в рассмотрение следующие замкнутые классы булевых функций:
Строка 11: Строка 11:
  
 
== Критерий Поста ==
 
== Критерий Поста ==
Критерий Поста — одна из центральных теорем в теории [[Определение булевой функции|булевых функций]], устанавливающая необходимое и достаточное условие для того, чтобы некоторый набор булевых функций обладал достаточной выразительностью, чтобы представить любую булеву функцию. Впервые сформулирован американским математиком Эмилем Постом.
+
Критерий Поста — одна из центральных теорем в теории [[Определение булевой функции|булевых функций]], устанавливающая необходимое и достаточное условие для того, чтобы некоторый набор булевых функций обладал достаточной выразительностью, чтобы представить любую булеву функцию. Впервые сформулирован американским математиком Эмилем Постом в 1941г.
 +
 
 +
== Замкнутые классы булевых функций ==
 +
* Класс функций <tex>T_0</tex>, сохраняющих константу 0:
 +
 
 +
<tex>f(0, 0, \dots, 0) = 0</tex>
 +
 
 +
Функция сохраняет 0 тогда, и только тогда, когда первое значение в ее таблице истинности равно 0.
 +
 
 +
* Класс функций <tex>T_1</tex>, сохраняющих константу 1:
 +
 
 +
<tex>f(1, 1, \dots, 1) = 1</tex>
 +
 
 +
Функция сохраняет 1 тогда, и только тогда, когда последнее значение в ее таблице истинности равно 1.
 +
 
 +
* Класс самодвойственных функций <tex>S</tex>:
 +
 
 +
<tex>f(\overline{x_1},\dots,\overline{x_n})=\overline{f(x_1,\dots,x_n)}</tex>
 +
 
 +
Пусть <tex>a(i)</tex>  — i-я строка таблицы истинности <tex>f(i)</tex>. В таких обозначениях функция <tex>f(i)</tex> является самодвойственной тогда, и только тогда, когда <tex>a(i)=\overline{a(N+1-i)}</tex>, где <tex>N — </tex> количество строк в таблице истинности. Т. е. функция является самодвойственной, если значения, расположенные в таблице истинности симметрично относительно центра, не равны.
 +
 
 +
* Класс монотонных функций <tex>M</tex>:
 +
 
 +
<tex>\forall i (a_i\le b_i) \Rightarrow f(a_1,\dots,a_n)\le f(b_1,\dots,b_n)</tex>
 +
 
 +
Функция является монотонной тогда, и только тогда, когда для любых параметров функции, изменение некоторых из них с <tex>0</tex> на <tex>1</tex> не приводит к уменьшению ее значения. Примером монотонной функции от двух переменных является <tex>and</tex>. Примером немонотонной булевой функции от двух переменных является <tex>xor</tex>, т. к. для значений <tex>(0, 1)</tex> функция принимает значение <tex>1</tex>, а при изменении первого параметра на <tex>1</tex> функция уменьшает свое значение.
 +
 
 +
* Класс линейных функций <tex>L</tex>:
 +
 
 +
<tex>f(x_1,\dots,x_n)=a_0\oplus a_1x_1\oplus\dots\oplus a_nx_n,a_i\in\{0,1\}</tex>
 +
 
 +
Очевидно, что количество линейных функций от <tex>n</tex> переменных всего <tex>~2^{n+1}</tex>.
 +
 
 +
Функция является линейной тогда, и только тогда, когда в ее полиноме [[Полином_Жегалкина|Жегалкина]] присутствуют слагаемые, каждое из которых зависит не более чем от одной переменной. Построить полином Жегалкина можно с помощью [[Преобразование Мёбиуса для получения коэффициентов полинома Жегалкина|преобразования Мебиуса]].
  
 
== Формулировка и доказательство критерия ==
 
== Формулировка и доказательство критерия ==
 
{{
 
{{
 
Теорема|statement=
 
Теорема|statement=
Система булевых функций F является полной тогда и только тогда, когда она не содержится ни в одном из классов <tex> S,M,L,T_0,T_1 </tex>, т.е. когда в ней имеется хотя бы одна функция, не сохраняющая 0, хотя бы одна функция, не сохраняющая 1, хотя бы одна несамодвойственная функция, хотя бы одна немонотонная функция и хотя бы одна нелинейная функция.
+
Система булевых функций F является полной тогда и только тогда, когда она не содержится полностью ни в одном из классов <tex> S,M,L,T_0,T_1 </tex>, т.е. когда в ней имеется хотя бы одна функция, не сохраняющая 0, хотя бы одна функция, не сохраняющая 1, хотя бы одна несамодвойственная функция, хотя бы одна немонотонная функция и хотя бы одна нелинейная функция.
  
 
|proof=
 
|proof=
Строка 71: Строка 104:
 
== Источники ==
 
== Источники ==
  
* [http://ru.wikipedia.org/wiki/Заглавная_страница Википедия — свободная энциклопедия]
+
* [http://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D1%82%D0%B5%D1%80%D0%B8%D0%B9_%D0%9F%D0%BE%D1%81%D1%82%D0%B0 Википедия — Критерий Поста]
 +
* [http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BC%D0%BA%D0%BD%D1%83%D1%82%D1%8B%D0%B5_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B_%D0%B1%D1%83%D0%BB%D0%B5%D0%B2%D1%8B%D1%85_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9 Википедия — Замкнутые классы булевых функций]
 
* Образовательный сайт [http://mini-soft.ru/nstu/diskr/7_.php MiniSoft]
 
* Образовательный сайт [http://mini-soft.ru/nstu/diskr/7_.php MiniSoft]
 
* [http://en.wikipedia.org/wiki/Post%27s_lattice Post's lattice]
 
* [http://en.wikipedia.org/wiki/Post%27s_lattice Post's lattice]
 +
 +
[[Категория: Дискретная математика и алгоритмы]]
 +
[[Категория: Булевы функции]]

Версия 10:06, 14 октября 2011

Полная система функций

Система булевых функций называется полной, если можно построить их суперпозицию, тождественную любой другой заранее заданной функции. Говорят ещё, что замыкание данной системы совпадает с множеством [math]P_2[/math].

Американский математик Эмиль Пост ввёл в рассмотрение следующие замкнутые классы булевых функций:

  • Функции, сохраняющие константу [math]T_0[/math] и [math]T_1[/math];
  • Самодвойственные функции [math]S[/math];
  • Монотонные функции [math]M[/math];
  • Линейные функции [math]L[/math].

Заметим, что существуют функции, не входящие ни в один из классов Поста. Любая такая функция сама по себе образует полную систему. В качестве примеров можно назвать штрих Шеффера или стрелку Пирса.

Критерий Поста

Критерий Поста — одна из центральных теорем в теории булевых функций, устанавливающая необходимое и достаточное условие для того, чтобы некоторый набор булевых функций обладал достаточной выразительностью, чтобы представить любую булеву функцию. Впервые сформулирован американским математиком Эмилем Постом в 1941г.

Замкнутые классы булевых функций

  • Класс функций [math]T_0[/math], сохраняющих константу 0:

[math]f(0, 0, \dots, 0) = 0[/math]

Функция сохраняет 0 тогда, и только тогда, когда первое значение в ее таблице истинности равно 0.

  • Класс функций [math]T_1[/math], сохраняющих константу 1:

[math]f(1, 1, \dots, 1) = 1[/math]

Функция сохраняет 1 тогда, и только тогда, когда последнее значение в ее таблице истинности равно 1.

  • Класс самодвойственных функций [math]S[/math]:

[math]f(\overline{x_1},\dots,\overline{x_n})=\overline{f(x_1,\dots,x_n)}[/math]

Пусть [math]a(i)[/math] — i-я строка таблицы истинности [math]f(i)[/math]. В таких обозначениях функция [math]f(i)[/math] является самодвойственной тогда, и только тогда, когда [math]a(i)=\overline{a(N+1-i)}[/math], где [math]N — [/math] количество строк в таблице истинности. Т. е. функция является самодвойственной, если значения, расположенные в таблице истинности симметрично относительно центра, не равны.

  • Класс монотонных функций [math]M[/math]:

[math]\forall i (a_i\le b_i) \Rightarrow f(a_1,\dots,a_n)\le f(b_1,\dots,b_n)[/math]

Функция является монотонной тогда, и только тогда, когда для любых параметров функции, изменение некоторых из них с [math]0[/math] на [math]1[/math] не приводит к уменьшению ее значения. Примером монотонной функции от двух переменных является [math]and[/math]. Примером немонотонной булевой функции от двух переменных является [math]xor[/math], т. к. для значений [math](0, 1)[/math] функция принимает значение [math]1[/math], а при изменении первого параметра на [math]1[/math] функция уменьшает свое значение.

  • Класс линейных функций [math]L[/math]:

[math]f(x_1,\dots,x_n)=a_0\oplus a_1x_1\oplus\dots\oplus a_nx_n,a_i\in\{0,1\}[/math]

Очевидно, что количество линейных функций от [math]n[/math] переменных всего [math]~2^{n+1}[/math].

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

Формулировка и доказательство критерия

Теорема:
Система булевых функций F является полной тогда и только тогда, когда она не содержится полностью ни в одном из классов [math] S,M,L,T_0,T_1 [/math], т.е. когда в ней имеется хотя бы одна функция, не сохраняющая 0, хотя бы одна функция, не сохраняющая 1, хотя бы одна несамодвойственная функция, хотя бы одна немонотонная функция и хотя бы одна нелинейная функция.
Доказательство:
[math]\triangleright[/math]

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

Докажем достаточность этого утверждения.

Рассмотрим функцию, несохраняющую 0 — [math]f_0[/math]. [math]f_0(0) = 1[/math]. [math]f_0(1)[/math] может принимать два значения:

а) [math]f_0(1) = 1[/math], тогда [math]f_0(x, x, x, \ldots, x) = 1[/math].

б) [math]f_0(1) = 0[/math], тогда [math]f_0(x, x, x, \dots, x) = \neg x[/math].

Рассмотрим функцию, несохраняющую 1 — [math]f_1[/math]. [math]f_1(1) = 0[/math]. [math]f_1(0)[/math] может принимать два значения:

а) [math]f_1(0) = 0[/math], тогда [math]f_1(x, x, x, \ldots, x) = 0[/math].

б) [math]f_1(0) = 1[/math], тогда [math]f_1(x, x, x, \ldots, x) = \lnot x[/math].

Возможны 4 варианта:

1) Мы получили функцию НЕ. Используем несамодвойственную функцию [math]f_s[/math].

По определению найдется такой вектор [math]x_0[/math], что [math]f_s(x_0) = f_s(\lnot x_0)[/math]. [math]x_0 = (x_{01}, x_{02}, ..., x_{0k})[/math].

Возьмем [math]f_s(x^{x_{01}}, x^{x_{02}}, \ldots, x^{x_{0k}})[/math], где [math]x^{x_{0i}} = x[/math], при [math]x_{0i} = 1[/math] и [math]x^{x_{0i}} = \lnot x[/math], при [math]x_{0i} = 0 [/math].

Нетрудно заметить, что [math]f_s(0) = f_s(1) \Rightarrow f_s = \operatorname {const}[/math]. Таким образом мы получили одну из констант.

2)Мы получили НЕ и [math]0[/math]. [math]\lnot 0 = 1[/math].

3)Мы получили НЕ и [math]1[/math]. [math]\lnot 1 = 0[/math].

4)Мы получили [math]1[/math] и [math]0[/math].

Рассмотрим немонотонную функцию [math]f_m[/math]. Существуют такие [math]x_1, x_2, \ldots, x_n[/math], что [math]f_m(x_1, x_2, \ldots, x_{i-1}, 0 , x_{i+1}, \ldots, x_n) = 1[/math], [math]f_m(x_1, x_2, \ldots, x_{i-1}, 1 , x_{i+1}, \ldots, x_n) = 0[/math], зафиксируем все [math]x_1, x_2, \ldots, x_n[/math], тогда [math]f_m(x_1, x_2, \ldots, x_{i-1}, x, x_{i+1}, \ldots, x_n)= \lnot x[/math].

В итоге имеем три функции: НЕ, [math]0[/math], [math]1[/math].

Используем нелинейную функцию [math]f_l[/math]. Среди нелинейных членов [math]f_l[/math], выберем тот, в котором минимальное количество элементов, все элементы, кроме двух, в этом члене, сделаем равными 1, оставшиеся 2 назовем [math]x_1[/math] и [math]x_2[/math], а все элементы, не входящие в данный член, сделаем равными 0. Тогда [math]f_l = x_1 \land x_2 [ \oplus x_1] [\oplus x_2][ \oplus ~1][/math], где в квадратных скобках указаны члены, которые могут и не присутствовать.

Рассмотрим несколько вариантов:

  1. Присутствует член [math]~1[/math]. Возьмем отрицание от [math]f_l[/math] и член [math]~1[/math] уберется.
  2. Присутствуют 3 члена, без [math]~1[/math]: [math]f_l = x_1 \land x_2 \oplus x_1 \oplus x_2[/math]. Составив таблицу истинности для этой функции, нетрудно заметить, что она эквивалентна функции ИЛИ.
  3. Присутствуют 2 члена, без [math]~1[/math]. Построив две таблицы истинности, для двух различных вариантов, видим, что в обоих случаях функция истинна только в одной точке, следовательно, СДНФ будет состоять только из одного члена, а если это так, то не составляет труда выразить И, через НЕ и [math]f_l[/math].
  4. Присутствует 1 член. Выразим И, через НЕ и [math]f_l[/math].
В итоге получаем функцию НЕ, а также либо функцию И, либо функцию ИЛИ, но НЕ образует базис и с той и с другой функциями. Из того, что через функции F можно выразить базис, следует, что F — полная система функций, что и требовалось доказать.
[math]\triangleleft[/math]

Источники