Изменения

Перейти к: навигация, поиск
Нет описания правки
== Представление функции формулой ==
 
{{Определение
|definition=
Если выбрать некоторый набор [[Определение булевой функции|булевых функций]] <tex>A</tex>, то с использованием выбранных функций можно записать некоторые другие булевы функции. Такая запись булевой функции называется '''формулой'''.}}
Например, если <tex>A = \left\{\land,\neg\right\}</tex>, то функция <tex>a \lor b</tex> представляется в виде <tex>\neg(\neg a \land \neg b)</tex>
 
== Полные системы функций ==
{{Определение
|definition=
'''Замкнутым множествомфункций''' функций называется такое множество, что любая [[Определение булевой функции|булева функция алгебры логики]], [[Суперпозиции|выражаемая ]] с помощью содержащихся в множестве функций, уже содержится в этом множестве.}}
{{Определение
|definition=
'''Замыканием''' множества функций называется минимальное замкнутое такое подмножество всех булевых функций, содержащее данное множество что любую из этих функцийможно выразить через функции исходного множества.}}
{{Определение
|id=def1
|definition=
Множество <tex>A</tex> булевых функций алгебры логики называется '''полной системой''', если замыкание этого множества совпадает с множеством всех функций.}}
{{Определение
|definition=
Полная система функций называется '''безызбыточной''', если она перестаёт перестает быть полной при исключении из неё любого элемента.
}}
Класс функций <tex>T_0</tex>.
{{Определение
|definition=Говорят, что функция '''сохраняет константу 0''', если <tex>f(0, 0, \dots, 0) = 0</tex>.
}}
Класс функций <tex>T_1</tex>.
{{Определение
|definition=Говорят, что функция '''сохраняет константу 1''', если <tex>f(1, 1, \dots, 1) = 1</tex>.
}}
:<tex>f(x_1, x_2, \dots, x_n) = a_0\oplus a_1\cdot x_1\oplus a_2\cdot x_2 \oplus\dots\oplus a_n\cdot x_n</tex>.
}}
Очевидно, что количество Количество линейных функций от <tex>n</tex> переменных равно <tex>~2^{n+1}</tex>. Функция является линейной тогда, и только тогда, когда в ее полиноме [[Полином_Жегалкина|Жегалкина]] присутствуют слагаемые, каждое из которых зависит не более чем от одной переменной. Построить полином Жегалкина можно с помощью [[Преобразование Мёбиуса для получения коэффициентов полинома Жегалкина|преобразования Мебиуса]].
== Критерий Поста ==Критерий Поста — одна из центральных теорем в теории булевых функцийФункция является линейной тогда, устанавливающая необходимое и достаточное условие для тоготолько тогда, чтобы некоторый набор булевых функций обладал достаточной выразительностьюкогда в ее [[Полином_Жегалкина|полиноме Жегалкина]] присутствуют слагаемые, чтобы представить любую булеву функциюкаждое из которых зависит не более чем от одной переменной. Впервые сформулирован американским математиком Эмилем Постом в 1941гПостроить полином Жегалкина можно с помощью [[Преобразование Мёбиуса для получения коэффициентов полинома Жегалкина|преобразования Мебиуса]].
== Формулировка и доказательство критерия Поста ==
{{
Теорема|statement=
Система Набор булевых функций F K является полной полным тогда и только тогда, когда она он не содержится полностью ни в одном из классов <tex> S,M,L,T_0,T_1 </tex>, т.е. когда в ней нем имеется хотя бы одна функция, не сохраняющая 0, хотя бы одна функция, не сохраняющая 1, хотя бы одна несамодвойственная функция, хотя бы одна немонотонная функция и хотя бы одна нелинейная функция.
|proof=
Докажем достаточность этого утверждения.
Рассмотрим функцию, несохраняющую не сохраняющую 0 {{---}} <tex>f_0</tex>. <tex>f_0(0) = 1</tex>. <tex>f_0(1)</tex> может принимать два значения:
а) <tex>f_0(1) = 1</tex>, тогда <tex>f_0(x, x, x, \ldots, x) = 1</tex>.
б) <tex>f_0(1) = 0</tex>, тогда <tex>f_0(x, x, x, \dots, x) = \neg x</tex>.
Рассмотрим функцию, несохраняющую не сохраняющую 1 {{---}} <tex>f_1</tex>. <tex>f_1(1) = 0</tex>. <tex>f_1(0)</tex> может принимать два значения:
а) <tex>f_1(0) = 0</tex>, тогда <tex>f_1(x, x, x, \ldots, x) = 0</tex>.
Возможны 4 варианта:
1) Мы получили функцию '''НЕ'''. Используем несамодвойственную функцию <tex>f_s</tex>.
По определению найдется такой вектор <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>.
Таким образом мы получили одну из констант.
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, \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>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 g_l = x_1 \land x_2 [ \oplus x_1] [\oplus x_2][ \oplus ~1]</tex>, где в квадратных скобках указаны члены, которые могут и не присутствовать.
Рассмотрим несколько вариантов:
# Присутствует член <tex>\oplus ~1</tex>. Возьмем отрицание от <tex>f_lg_l</tex> и член <tex>\oplus ~1</tex> уберется.# Присутствуют 3 члена, без <tex>\oplus ~1</tex>: <tex>f_l g_l= x_1 \land x_2 \oplus x_1 \oplus x_2</tex>. Составив таблицу истинности для этой функции, нетрудно заметить, что она эквивалентна функции '''ИЛИ'''.# Присутствуют 2 члена, без <tex>\oplus ~1</tex>. Построив две таблицы истинности, для двух различных вариантов, видим, что в обоих случаях функция истинна только в одной точке, следовательно, СДНФ будет состоять только из одного члена, а если это так, то не составляет труда выразить '''И''', через '''НЕ''' и <tex>f_lg_l</tex>. # Присутствует 1 член. Выразим '''И''', через '''НЕ''' и <tex>f_lg_l</tex>.
В итоге получаем функцию '''НЕ''', а также либо функцию '''И''', либо функцию '''ИЛИ'''. Поскольку функцию '''И''' можно выразить через '''ИЛИ''' и '''НЕ''', а функцию '''ИЛИ''' через '''И''' и '''НЕ''', то мы получили базис '''И, ИЛИ, НЕ'''. Любую булеву функцию, не равную тождественному нулю, можно представить в форме [[СДНФ]], т. е. с помощью данного базиса. Если же функция равна тождественному нулю, то ее можно представить в виде <tex>x \land \overline{x}</tex>. Значит, полученные функции образуют полную систему, т. к. с их помощью можно выразить любую булеву функцию. Из этого следует, что '''F''' K {{---}} полная система функций, что и требовалось доказать.
}}
Согласно критерию Поста система булевых функций полна тогда и только тогда, когда она не содержится целиком ни в одном из классов <tex>T_0</tex>, <tex>T_1</tex>, <tex>S</tex>, <tex>M</tex>, <tex>L</tex>.
В частности, если функция не входит ни в один из классов Поста, она сама по себе формирует полную систему. В качестве примера можно назвать [[Определение_булевой_функции|штрих Шеффера ]] или [[Определение_булевой_функции|стрелку Пирса]].
Широко известны такие полные системы булевых функций:
Анонимный участник

Навигация