Полные системы функций. Теорема Поста о полной системе функций — различия между версиями
Rybak (обсуждение | вклад) м (→Формулировка и доказательство критерия: \oplus \wedge + порядок скобок) |
Rybak (обсуждение | вклад) м (use \lnot или \neg, \ldots) |
||
Строка 5: | Строка 5: | ||
{{ | {{ | ||
Теорема|statement= | Теорема|statement= | ||
− | Система булевых функций F является полной тогда и только тогда, когда она не содержится ни в одном из классов <tex> | + | Система булевых функций F является полной тогда и только тогда, когда она не содержится ни в одном из классов <tex> S,M,L,T_0,T_1 </tex>, т.е. когда в ней имеется хотя бы одна функция, не сохраняющая 0, хотя бы одна функция, не сохраняющая 1, хотя бы одна несамодвойственная функция, хотя бы одна немонотонная функция и хотя бы одна нелинейная функция. |
|proof= | |proof= | ||
Заметим, что необходимость этого утверждения очевидна, так как если бы все функции из набора К входили в один из перечисленных классов, то и все суперпозиции, а значит, и замыкание набора входило бы в этот класс и класс К не мог быть полным. | Заметим, что необходимость этого утверждения очевидна, так как если бы все функции из набора К входили в один из перечисленных классов, то и все суперпозиции, а значит, и замыкание набора входило бы в этот класс и класс К не мог быть полным. | ||
− | |||
− | |||
Докажем достаточность этого утверждения. | Докажем достаточность этого утверждения. | ||
− | Рассмотрим функцию, несохраняющую 0 - <tex>f_0</tex> | + | Рассмотрим функцию, несохраняющую 0 {{---}} <tex>f_0</tex>. <tex>f_0(0) = 1</tex>. <tex>f_0(1)</tex> может принимать два значения: |
− | а) <tex>f_0 | + | а) <tex>f_0(1) = 1</tex>, тогда <tex>f_0(x, x, x, \ldots, x) = 1</tex>. |
− | б) <tex>f_0 | + | б) <tex>f_0(1) = 0</tex>, тогда <tex>f_0(x, x, x, \dots, x) = \neg x</tex>. |
− | Рассмотрим функцию, несохраняющую 1 - <tex>f_1</tex> | + | Рассмотрим функцию, несохраняющую 1 {{---}} <tex>f_1</tex>. <tex>f_1(1) = 0</tex>. <tex>f_1(0)</tex> может принимать два значения: |
− | а) <tex>f_1 | + | а) <tex>f_1(0) = 0</tex>, тогда <tex>f_1(x, x, x, \ldots, x) = 0</tex>. |
− | б) <tex>f_1 | + | б) <tex>f_1(0) = 1</tex>, тогда <tex>f_1(x, x, x, \ldots, x) = \lnot x</tex>. |
Возможны 4 варианта: | Возможны 4 варианта: | ||
− | + | 1) Мы получили функцию '''НЕ'''. Используем несамодвойственную функцию <tex>f_s</tex>. | |
− | По определению найдется такой вектор <tex>x_0</tex>, что <tex>f_s | + | По определению найдется такой вектор <tex>x_0</tex>, что <tex>f_s(x_0) = f_s(\lnot x_0)</tex>. <tex>x_0 = (x_{01}, x_{02}, ..., x_{0k})</tex>. |
− | Возьмем <tex>f_s | + | Возьмем <tex>f_s(x^{x_{01}}, x^{x_{02}}, \ldots, x^{x_{0k}})</tex>, где <tex>x^{x_{0i}} = x</tex>, при <tex>x_{0i} = 1</tex> и <tex>x^{x_{0i}} = \lnot x</tex>, при <tex>x_{0i} = 0 </tex>. |
− | Нетрудно заметить, что <tex>f_s | + | Нетрудно заметить, что <tex>f_s(0) = f_s(1) \Rightarrow f_s = \operatorname {const}</tex>. |
− | Таким образом мы получили одну из констант | + | Таким образом мы получили одну из констант. |
− | + | 2)Мы получили '''НЕ''' и <tex>0</tex>. <tex>\lnot 0 = 1</tex>. | |
− | + | 3)Мы получили '''НЕ''' и <tex>1</tex>. <tex>\lnot 1 = 0</tex>. | |
− | + | 4)Мы получили <tex>1</tex> и <tex>0</tex>. | |
− | Рассмотрим немонотонную функцию <tex>f_m</tex>. Существуют такие <tex>x_1, x_2, | + | Рассмотрим немонотонную функцию <tex>f_m</tex>. Существуют такие <tex>x_1, x_2, \ldots, x_n</tex>, что <tex>f_m(x_1, x_2, \ldots, x_{i-1}, 0 , x_{i+1}, \ldots, x_n) = 1</tex>, <tex>f_m(x_1, x_2, \ldots, x_{i-1}, 1 , x_{i+1}, \ldots, x_n) = 0</tex>, зафиксируем все <tex>x_1, x_2, \ldots, x_n</tex>, тогда <tex>f_m(x_1, x_2, \ldots, x_{i-1}, x, x_{i+1}, \ldots, x_n)= \lnot x</tex>. |
− | В итоге имеем три функции: '''НЕ''', <tex> | + | В итоге имеем три функции: '''НЕ''', <tex>0</tex>, <tex>1</tex>. |
− | Используем нелинейную функцию <tex>f_l</tex>'''.''' Среди нелинейных членов <tex>f_l</tex>, выберем тот, в котором минимальное количество элементов, все элементы, кроме двух, в этом члене, сделаем равными 1, оставшиеся 2 назавем <tex>x_1</tex> и <tex>x_2</tex>, а все элементы, не входящие в данный член, сделаем равными 0'''.''' Тогда <tex>f_l</tex> = <tex>x_1 \ | + | Используем нелинейную функцию <tex>f_l</tex>'''.''' Среди нелинейных членов <tex>f_l</tex>, выберем тот, в котором минимальное количество элементов, все элементы, кроме двух, в этом члене, сделаем равными 1, оставшиеся 2 назавем <tex>x_1</tex> и <tex>x_2</tex>, а все элементы, не входящие в данный член, сделаем равными 0'''.''' Тогда <tex>f_l</tex> = <tex>x_1 \land x_2 [ \oplus x_1] [\oplus x_2][ \oplus ~1]</tex>, где в квадратных скобках указаны члены, которые могут и не присутствовать. |
Рассмотрим несколько вариантов: | Рассмотрим несколько вариантов: | ||
− | + | # Присутствует член <tex>~1</tex>. Возьмем отрицание от <tex>f_l</tex> и член <tex>~1</tex> уберется. | |
+ | # Присутствуют 3 члена, без <tex>~1</tex>: <tex>f_l</tex> = <tex>x_1 \land x_2 \oplus x_1 \oplus x_2</tex>. Составив таблицу истинности для этой функции, нетрудно заметить, что она эквивалентна функции '''ИЛИ'''. | ||
+ | # Присутствуют 2 члена, без <tex>~1</tex>. Посторив две таблицы истинности, для двух различных вариантов, видим, что в обоих случаях функция истинна только в одной точке => СДНФ будет состоять только из одного члена, а если это так, то не составляет труда выразить '''И''', через '''НЕ''' и <tex>f_l</tex>. | ||
+ | # Присутствует 1 член. Выразим '''И''', через '''НЕ''' и <tex>f_l</tex>. | ||
− | + | В итоге получаем функцию '''НЕ''', а также либо функцию '''И''', либо функцию '''ИЛИ''', но '''НЕ''' образует базис и с той и с другой функциями. Из того, что через функции '''F''' можно выразить базис, следует, что '''F''' {{---}} полная система функций, что и требовалось доказать. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | В итоге получаем функцию '''НЕ''', а также либо функцию '''И''', либо функцию '''ИЛИ''', но '''НЕ''' образует базис и с той и с другой функциями. Из того, что через функции '''F''' можно выразить базис, следует, что '''F''' - полная система функций, что и требовалось доказать | ||
}} | }} | ||
== Источники == | == Источники == | ||
+ | |||
* [http://ru.wikipedia.org/wiki/Заглавная_страница Википедия — свободная энциклопедия] | * [http://ru.wikipedia.org/wiki/Заглавная_страница Википедия — свободная энциклопедия] | ||
* Образовательный сайт [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] |
Версия 07:15, 17 января 2011
Критерий Поста
Критерий Поста — одна из центральных теорем в теории булевых функций, устанавливающая необходимое и достаточное условие для того, чтобы некоторый набор булевых функций обладал достаточной выразительностью, чтобы представить любую булеву функцию. Впервые сформулирован американским математиком Эмилем Постом.
Формулировка и доказательство критерия
Теорема: |
Система булевых функций F является полной тогда и только тогда, когда она не содержится ни в одном из классов , т.е. когда в ней имеется хотя бы одна функция, не сохраняющая 0, хотя бы одна функция, не сохраняющая 1, хотя бы одна несамодвойственная функция, хотя бы одна немонотонная функция и хотя бы одна нелинейная функция. |
Доказательство: |
Заметим, что необходимость этого утверждения очевидна, так как если бы все функции из набора К входили в один из перечисленных классов, то и все суперпозиции, а значит, и замыкание набора входило бы в этот класс и класс К не мог быть полным. Докажем достаточность этого утверждения. Рассмотрим функцию, несохраняющую 0 — . . может принимать два значения:а) , тогда .б) , тогда .Рассмотрим функцию, несохраняющую 1 — . . может принимать два значения:а) , тогда .б) , тогда .Возможны 4 варианта: 1) Мы получили функцию НЕ. Используем несамодвойственную функцию .По определению найдется такой вектор , что . .Возьмем , где , при и , при .Нетрудно заметить, что . Таким образом мы получили одну из констант.2)Мы получили НЕ и . .3)Мы получили НЕ и . .4)Мы получили и .Рассмотрим немонотонную функцию . Существуют такие , что , , зафиксируем все , тогда .В итоге имеем три функции: НЕ, , .Используем нелинейную функцию . Среди нелинейных членов , выберем тот, в котором минимальное количество элементов, все элементы, кроме двух, в этом члене, сделаем равными 1, оставшиеся 2 назавем и , а все элементы, не входящие в данный член, сделаем равными 0. Тогда = , где в квадратных скобках указаны члены, которые могут и не присутствовать.Рассмотрим несколько вариантов:
|
Источники
- Википедия — свободная энциклопедия
- Образовательный сайт MiniSoft
- Post's lattice