17
правок
Изменения
Нет описания правки
Заметим, что существуют функции, не входящие ни в один из классов Поста. Любая такая функция сама по себе образует полную систему. В качестве примеров можно назвать штрих Шеффера или стрелку Пирса.
== Представление булевых функций ==
Теорема Поста открывает путь к представлению булевых функций синтаксическим способом, который в ряде случаев оказывается намного удобнее чем таблицы истинности. Отправной точкой здесь служит нахождение некоторой полной системы функций <math>\Sigma = \{f_1,\ldots,f_n\}</math>. Тогда каждая булева функция сможет быть представлена некоторым термом в сигнатуре <math>\Sigma</math>, который в данном случае называют также формулой. Относительно выбраной системы функций полезно знать ответы на следующие вопросы:
* Как построить по данной функции представляющую её формулу?
* Как проверить, что две разные формулы эквивалентны, то есть задают одну и ту же функцию?
** В частности: существует ли способ приведения произвольной формулы к эквивалентной её ''канонической'' форме, такой что, две формулы эквивалентны тогда и только тогда, когда их канонические формы совпадают?
* Как по данной функции построить представляющую её формулу с теми или иными заданными свойствами (например, наименьшего размера), и возможно ли это?
Положительные ответы на эти и другие вопросы существенно увеличивают прикладное значение выбранной системы функций.
=== Дизъюнктивная нормальная форма (ДНФ) ===
''Простой конъюнкцией'' или ''конъюнктом'' называется конъюнкция некоторого конечного набора переменных или их отрицаний, причём каждая переменная встречается не более одного раза. ''Дизъюнктивной нормальной формой'' или ''ДНФ'' называется дизъюнкция простых конъюнкций.
Элементарная конъюнкция
* '''правильная''', если в неё каждая переменная входит не более одного раза (включая отрицание);
* '''полная''', если в неё каждая переменная (или её отрицание) входит ровно 1 раз;
* '''монотонная''', если она не содержит отрицаний переменных.
Например <math>a \overline{b} c\lor b c\lor\overline{a}</math> — является ДНФ.
''Совершенной дизъюнктивной нормальной формой'' или ''СДНФ'' относительно некоторого заданного конечного набора переменных называется такая ДНФ, у которой в каждую конъюнкцию входят все переменные данного набора, причём в одном и том же порядке. Например: <math>a \overline{b} c\lor a b c\lor\overline{a} b\overline{c}</math>.
Легко убедиться, что каждой булевой функции соответствует некоторая ДНФ, а функции отличной от тождественного нуля — даже СДНФ. Для этого достаточно в таблице истинности этой функции найти все булевы векторы, на которых её значение равно 1, и для каждого такого вектора <math>b=(b_1,b_2,\ldots,b_n)</math> построить конъюнкцию <math>x_1^{b_1} x_2^{b_2}\ldots x_n^{b_n}</math>, где <math>x_i^1 = x_i</math> <math>x_i^0 = \overline{x_i}</math>. Дизъюнкция этих конъюнкций является СДНФ исходной функции, поскольку на всех булевых векторах её значения совпадают со значениями исходной функции. Например, для импликации <math>x\to y</math> результатом является <math>\overline{x} y \lor \overline{x}\, \overline{y}\lor x y</math>, что можно упростить до <math>\overline{x}\lor y</math>.
=== Конъюнктивная нормальная форма (КНФ) ===
''Конъюнктивная нормальная форма'' (КНФ) определяется двойственно к ДНФ. ''Простой дизъюнкцией'' или ''дизъюнктом'' называется дизъюнкция одной или нескольких переменных или их отрицаний, причём каждая переменная входит в неё не более одного раза. КНФ — это конъюнкция простых дизъюнкций.
''Совершенной конъюнктивной нормальной формой'' (СКНФ), относительно некоторого заданного конечного набора переменных, называется такая КНФ, у которой в каждую дизъюнкцию входят все переменные данного набора, причём в одном и том же порядке. Поскольку (С)КНФ и (С)ДНФ взаимодвойственны, свойства (С)КНФ повторяют все свойства (С)ДНФ, грубо говоря, «с точностью до наоборот».
КНФ может быть преобразована к эквивалентной ей ДНФ путём раскрытия скобок по правилу:
<center><math>a (b\lor c)\to a b\lor a c</math></center>
которое выражает дистрибутивность конъюнкции относительно дизъюнкции. После этого необходимо в каждой конъюнкции удалить повторяющиеся переменные или их отрицания, а также выбросить из дизъюнкции все конъюнкции, в которых встречается переменная вместе со своим отрицанием. При этом результатом не обязательно будет СДНФ, даже если исходная КНФ была СКНФ. Точно также можно всегда перейти от ДНФ к КНФ. Для этого следует использовать правило
<center><math>a\lor b c\to (a \lor b)(a \lor c)</math></center>
выражающее дистрибутивность дизъюнкции относительно конъюнкции. Результат нужно преобразовать описанным выше способом, заменив слово «конъюнкция» на «дизъюнкция» и наоборот.
=== Полиномы Жегалкина ===
Полином Жегалкина это форма представления логической функции с помощью Функции Жегалкина (Исключающее ИЛИ). Для получения полинома Жегалкина следует выполнить следующие действия:
# Получить ДНФ функции
# Все ИЛИ заменить на Исключающее ИЛИ
# Во всех термах заменить элементы с отрицанием на конструкцию: («элемент» «исключающее ИЛИ» 1)
# Раскрыть скобки по правилам алгебры Жегалкина и привести попарно одинаковые термы