Перейти к содержимому

Сколько существует булевых функций от n переменных

  • автор:

Булевы функции

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

Булева функция Это функция \(f(x_1, x_2, \ldots, x_n)\) , аргументы которой \(x_1, x_2, \ldots, x_n\) , и сама функция \(f\) принимают значения \(0\) или \(1\) .

Логические функции могут быть заданы таблично, либо аналитически.

В общем случае, булеву функцию от \(n\) переменных можно рассматривать как отображение \(\lbrace 0, 1\rbrace^n \to \lbrace 0, 1 \rbrace\) . Пространство \(\lbrace 0, 1\rbrace^n\) можно интерпретировать как \(n\) -битное двоичное число.

Существует \(2^n\) различных \(n\) -битных двоичных чисел. Так как каждому из них сопоставляется значение функции – 0 или 1, то общее количество различных булевых функций \(n\) аргументов равно \(2^<2^n>\) .

От двух переменных существует 16 различных булевых функций. Особо интересными из них являются:

Канонические формы логических функций

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

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

Нормальная форма Если логическая функция выражена через дизъюнкцию, конъюнкцию и отрицание переменных, то такая форма записи называется нормальной.

Среди нормальных форм выделяют такие, в которых функции записываются единственным образом. Их называют совершенными.

Элементарная конъюнкция Это конъюнкция одной или нескольких переменных, или их отрицаний. Элементарная дизъюнкция Это дизъюнкция одной или нескольких переменных, или их отрицаний. Дизъюнктивная нормальная форма (ДНФ) Это дизъюнкция не повторяющихся элементарных конъюнкций. Конъюнктивная нормальная форма (КНФ) Это конъюнкция не повторяющихся элементарных дизъюнкций.

Среди дизъюнктивных или конъюнктивных нормальных форм, очевидно, существуют совершенные.

Совершенная ДНФ (СДНФ) Это ДНФ, в которой каждая элементарная конъюнкция состоит из \(k\) переменных \(x_1, x_2, \ldots, x_k\) , причем на \(i\) -том месте конъюнкции стоит переменная \(x_i\) или ее отрицание \(\;\overline\;\) , и все элементарные конъюнкции различны. Совершенная КНФ (СКНФ) Это КНФ, в которой каждая элементарная дизъюнкция состоит из \(k\) переменных \(x_1, x_2, \ldots, x_k\) , причем на \(i\) -том месте дизъюнкции стоит переменная \(x_i\) или ее отрицание \(\;\overline\;\) , и все элементарные дизъюнкции различны.

Любую логическую функцию можно представить в виде СДНФ или СКНФ. Для обоснования этого утверждения, рассмотрим две теоремы.

Теорема о существовании СДНФ Пусть \(f(x_1, x_2, \ldots, x_n)\) – булева функция от \(n\) переменных, не равная тождественно нулю. Тогда существует СДНФ, выражающая функцию \(f\) . Доказательство

Для начала покажем, что переменную можно “вынести” за знак функции с помощью конъюнкции:

\[f(x_1,\ldots,x_i,\ldots,x_n) = \;\overline\; \,\&\,f(x_1,\ldots,0,\ldots,x_n) \vee x_i \,\&\,f(x_1,\ldots,1,\ldots,x_n)\]

Действительно, если \(x_i = 0\) , то \[f(x_1,\ldots,x_i,\ldots,x_n) = 1 \,\&\,f(x_1,\ldots,0,\ldots,x_n) \vee 0 \,\&\,f(x_1,\ldots,1,\ldots,x_n) = f(x_1,\ldots,0,\ldots,x_n)\]

Иначе, если \(x_i = 1\) , \[f(x_1,\ldots,x_i,\ldots,x_n) = 0 \,\&\,f(x_1,\ldots,0,\ldots,x_n) \vee 1 \,\&\,f(x_1,\ldots,1,\ldots,x_n) = f(x_1,\ldots,1,\ldots,x_n)\]

Последовательно “вынося” переменные за знак функции, получим следующую формулу (знаки конъюнкции опущены):

\[\begin f(x_1,\ldots,x_n) & = & \;\overline\; & \;\overline\; & \ldots & \;\overline>\; & \;\overline\; & f(0, 0, \ldots, 0, 0) & \vee\\ & \vee& \;\overline\; & \;\overline\; & \ldots & \;\overline>\; & x_n & f(0, 0, \ldots, 0, 1) & \vee\\ & \vee& \;\overline\; & \;\overline\; & \ldots & x_ & x_n & f(0, 0, \ldots, 1, 1) & \vee\\ & \ldots \\ & \vee& \;\overline\; & x_2 & \ldots & x_ & x_n & f(0, 1, \ldots, 1, 1) & \vee\\ & \vee& x_1 & x_2 & \ldots & x_ & x_n & f(1, 1, \ldots, 1, 1) \end\]

Теперь, зная значения функции, можно полностью исключить конъюнкции, содержащие \(f=0\) , по закону поглощения нуля, и опустить в остальных конъюнкциях \(f=1\) по закону поглощения единицы.

Мы получили СДНФ, следовательно, она существует по построению. \(\blacksquare\)

Очевидна причина требования неравенства нулю: для \(f=0\) СДНФ не будет иметь ни одного члена.

Теорема о существовании СКНФ Пусть \(f(x_1, x_2, \ldots, x_n)\) – булева функция от \(n\) переменных, не равная тождественно единице. Тогда существует СКНФ, выражающая функцию \(f\) . Доказательство

Для начала покажем, что переменную можно “вынести” за знак функции с помощью дизъюнкции:

\[f(x_1,\ldots,x_i,\ldots,x_n) = (x_i \vee f(x_1,\ldots,0,\ldots,x_n)) \,\&\,(\;\overline\; \vee f(x_1,\ldots,1,\ldots,x_n))\]

Действительно, если \(x_i = 0\) , то \[f(x_1,\ldots,x_i,\ldots,x_n) = (0 \vee f(x_1,\ldots,0,\ldots,x_n)) \,\&\,(1 \vee f(x_1,\ldots,1,\ldots,x_n)) = f(x_1,\ldots,0,\ldots,x_n) \]

Иначе, если \(x_i = 1\) , \[f(x_1,\ldots,x_i,\ldots,x_n) = (1 \vee f(x_1,\ldots,0,\ldots,x_n)) \,\&\,(0 \vee f(x_1,\ldots,1,\ldots,x_n)) = f(x_1,\ldots,1,\ldots,x_n) \]

Последовательно “вынося” переменные за знак функции, получим следующую формулу:

Теперь, зная значения функции, можно полностью исключить дизъюнкции, содержащие \(f=1\) , по закону поглощения единицы, и опустить в остальных дизъюнкциях \(f=0\) по закону поглощения нуля.

Мы получили СКНФ, следовательно, она существует по построению. \(\blacksquare\)

Очевидна причина требования неравенства единице: для \(f=1\) СКНФ не будет иметь ни одного члена.

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

По теоремам о существовании СДНФ и СКНФ, система функций \(\lbrace \,\&\,, \vee, \neg \rbrace\) является полной.

Полноту других систем можно обосновать при помощи следующего очевидного утверждения:

Если система \(\lbrace f_1, \ldots, f_n \rbrace\) является полной, и каждая из функций \(f_1, \ldots, f_n\) может быть выражена через функции \(g_1, \ldots, g_n\) , то система \(\lbrace g_1, \ldots, g_n \rbrace\) так же является полной.

Так, несложно доказать, что системы \(\lbrace \vee, \neg \rbrace\) и \(\lbrace \,\&\,, \neg \rbrace\) так же являются полными.

Из всех булевых функций двух переменных, штрих Шеффера и стрелка Пирса образуют полные системы булевых функций сами по себе.

Штрих Шеффера \(x|y\) определяется как

\(x\) \(y\) \(x|y\)
\(0\) \(0\) \(1\)
\(0\) \(1\) \(1\)
\(1\) \(0\) \(1\)
\(1\) \(1\) \(0\)

Можно видеть так же, что \(x|y = \;\overline\;\) , что объясняет другое название этой функции: “И-НЕ”.

Через штрих Шеффера легко выражаются конъюнкция, дизъюнкция и инверсия:

Стрелка Пирса \(x\downarrow y\) определяется как

\(x\) \(y\) \(x\downarrow y\)
\(0\) \(0\) \(1\)
\(0\) \(1\) \(0\)
\(1\) \(0\) \(0\)
\(1\) \(1\) \(0\)

Можно видеть так же, что \(x\downarrow y = \;\overline\;\) , что объясняет другое название этой функции: “ИЛИ-НЕ”.

Через стрелку Пирса легко выражаются конъюнкция, дизъюнкция и инверсия:

\[x\downarrow x = \;\overline\; = \;\overline\;\]

\[ x \vee y = \;\overline<\;\overline\;>\; = \;\overline\; = (x\downarrow y)\downarrow(x \downarrow y)\]

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

Особенно интересным является тот факт, что СДНФ может быть непосредственно выражена через элементы И-НЕ со многими входами, а СКНФ – через элементы ИЛИ-НЕ со многими входами. Для этого все элементарные конъюнкции/дизъюнкции заменяются на И-НЕ/ИЛИ-НЕ, и их дизъюнкция/конъюнкция так же заменяется на И-НЕ/ИЛИ-НЕ

5.3. Булевы функции от одной и двух переменных

<0,1>. В следующей таблице приведены все четыре булевы функции от одной переменной.

x g 0 ( x ) g 1 ( x ) g 2 ( x ) g 3 ( x )

g 0 ( x )=0 – функция, тождественно равная 0 (тождественный ноль);

g 1 ( x )= x – тождественная функция;

g 2 ( x )=1– x – эта функция соответствует отрицанию и носит то же название; в теории булевых функций отрицание принято обозначать через x ’, поэтому мы будем писать g 2 ( x )= x ’;

g 3 ( x )=1 – функция, тождественно равная 1 (тождественная единица).

Булевы функции от двух переменных можно рассматривать как бинарные операции на множестве <0,1>. В следующей таблице приведены все шестнадцать булевых функции от двух переменных (значения аргументов и функций выписаны в строках, функции перечисляются в столбце). Для некоторых функций указаны используемые обозначения и названия.

0 – тождественный ноль

– сложение по модулю 2

1 – тождественная единица

перечисленные функции (с помощью

суперпозиций), можно строить более сложные булевы функции,

в том числе и большего числа переменных, например, xy → zt и т.п. Булевы отрицание, конъюнкция (умножение), дизъюнкция, импликация обладают свойствами, подобными тем, которыми обладают соответствующие логические операции (с естественной заменой равносильности формул на равенство функций). Например, законы де Моргана принимают следующий вид (знак умножения, как это часто делается, опущен):

( xy )’= x ’ y ’; ( x y )’= x ’ y ’.

Кроме того, имеем:

Приведем некоторые уравнения, в которых одни булевы функции выражены через другие:

x ’ = x → 0 = x | x = x ↓ x = 1 x ;

xy = ( x ’ y ’)’ = x ’ ↓ y ’ = ( x ↓ x ) ↓ ( y ↓ y );

x y = ( x ’ y ’)’ = x ’ → y = =( x → y ) → y = x ’| y ’ = ( x | x )|( y | y ); x → y = x ’ y ;

x ↔ y = ( x → y ) ( y → x ) = xy x ’ y ’; x y = xy ’ x ’ y .

Все эти равенства легко проверяются с помощью таблиц.

Принцип двойственности естественным образом переносится на булевы функции. Приведем необходимые формулировки. Двойственной к булевой функции f ( x , y ,…, z ) называется функция

f * ( x , y ,…, z )= f ’( x ’, y ’,…, z ’).

Если f ( x , y ,…, z ) представлена формулой, содержащей только конъюнкции, дизъюнкции и отрицания, то двойственная функция получается заменой в этой формуле конъюнкций на дизъюнкции, а дизъюнкций на конъюнкции.

Существует простой способ дать аналитическое представление функции в виде формулы, содержащей конъюнкции, дизъюнкции и отрицания, используя ее табличное задание. Например, пусть функция от трех переменных задана следующей таблицей:

x y z f ( x , y , z )

f ( x , y , z ) = x ’ y ’ z ’ xy ’ z ’ xyz .

Каждый из трех дизъюнктивных членов (слагаемых) записанной формулы соответствует набору значений аргументов, для которого функция принимает значение 1. Каждое слагаемое содержит все три аргумента функции; отрицанием снабжены те из них, которые имеют значение 0 в соответствующем наборе. Так, набору (0,0,0) соответствует слагаемое x ’ y ’ z ’, набору (1,0,0) – слагаемое xy ’ z ’, набору (1,1,1)

– слагаемое xyz . Каждый из дизъюнктивных членов принимает значение 1 на своем наборе значений переменных и значение 0

– на всех остальных. Дизъюнкция этих трех слагаемых принимает значение 1 лишь тогда, когда значение 1 принимает хотя бы одно из слагаемых. Таким образом, функция в правой части записанного равенства принимает значение 1 на тех же трех наборах значений аргументов, что и функция f (на остальных наборах обе эти функции принимают значение 0). Тем самым справедливость равенства установлена.

Легко видеть, что описанный способ построения формулы по таблице применим к любой функции, не равной тождественно нулю. Получаемые при этом формулы называются совершенными дизъюнктивными нормальными формами , сокращенно СДНФ. Считается, что СДНФ тождественного нуля – это «пустая» дизъюнкция, не содержащая ни одного дизъюнктивного слагаемого.

Двойственная конструкция приводит к представлению функции в так называемой совершенной конъюнктивной нормальной форме , сокращенно СКНФ. СКНФ рассмотренной ранее функции имеет следующий вид:

f ( x , y , z ) = ( x y z ’)( x y ’ z )( x y ’ z ’)( x ’ y z ’)( x ’ y ’ z ).

Каждый из пяти конъюнктивных членов (множителей) соответствует набору значений аргументов, для которого функция принимает значение 0. Каждый множитель содержит все три аргумента функции; отрицанием снабжены те из них, которые имеют значение 1 в соответствующем наборе. Так, набору (0,0,1) соответствует множитель xyz ’, набору (0,1,0) –

множитель xy ’ z , и т. д. Каждый из конъюнктивных членов принимает значение 0 на своем наборе значений переменных и значение 1 – на всех остальных. Конъюнкция этих трех множителей принимает значение 0 лишь тогда, когда значение 0 принимает хотя бы один из множителей. Таким образом, функция в правой части записанного равенства принимает значение 0 на тех же трех наборах значений аргументов, что и функция f .

Описанный выше способ построения СДНФ и СКНФ опирается на следующую теорему о разложении функции по переменной.

Теорема. Пусть f ( x 1 , x 2 ,…, x n ) – произвольная булева функция. Тогда

f ( x 1 , x 2 ,…, x n ) = x 1 f (1, x 2 ,…, x n ) x 1 ’ f (0, x 2 ,…, x n );

f ( x 1 , x 2 ,…, x n ) = ( x 1 f (0, x 2 ,…, x n ))( x 1 ’ f (1, x 2 ,…, x n )).

Доказательство. Докажем первую формулу. Чтобы не загромождать выкладки индексами и многоточиями, ограничимся случаем функции от двух переменных. Доказываемая формула принимает следующий вид:

f ( x , y ) = x f (1, y ) x ’ f (0, y ).

При любом y подстановка в правую часть x =1 и x =0 дает соответственно

1 f (1, y ) 1’ f (0, y ) = f (1, y ) 0 f (0, y ) = f (1, y ) 0 = f (1, y );

0 f (1, y ) 0’ f (0, y ) = 0 1 f (0, y ) = 1 f (0, y ) = f (0, y ).

Таким образом, левая и правая части доказываемого равенства совпадают на любом наборе значений аргументов. Следовательно, функции слева и справа от знака равенства равны. На общий случай доказательство распространяется практически без изменений. Достаточно считать, что y обозначает не одну переменную, а набор переменных. Второе равенство из формулировки теоремы доказывается аналогично (впрочем, его справедливость следует из принципа двойственности).

Последовательно применяя несколько раз (по числу переменных) разложение из предыдущей теоремы, можно получить СДНФ булевой функции. Например,

f ( x , y ) = x f (1, y ) x ’ f (0, y ) =

= x ( y f (1,1) y ’ f (1,0)) x ’ ( y f (1,1) y ’ f (1,0)) =

= x y f (1,1) x y ’ f (1,0) x ’ y f (1,1) x ’ y ’ f (1,0).

Функция f ( x , y ) представлена в виде дизъюнкции четырех

дизъюнктивных членов. Те из них, для которых коэффициент f ( α , β ) равен нулю, можно отбросить. В результате получится СДНФ. Например, для функции f ( x , y )= x y имеем f (0,0)= f (1,1)=0

и f (0,1)= f (1,0)=1, поэтому

Элементарной конъюнкцией ( конъюнктом ) называют конъюнкцию переменных и/или их отрицаний, в которой каждая переменная встречается не более одного раза.

Определение булевой функции

Элементы булева множества [math]1[/math] и [math]0[/math] обычно интерпретируют как логические значения «истинно» и «ложно», хотя в общем случае они рассматриваются как формальные символы, не несущие определенного смысла. Элементы декартова произведения [math]B^n[/math] называют булевыми векторами. Множество всех булевых функций от любого числа переменных часто обозначается [math]P_2[/math] , а от n переменных — [math]P_2(n)[/math] . Булевы функции названы так по фамилии математика Джорджа Буля.

Содержание

Основные сведения

Определение:
А́рность (англ. arity) функции — количество ее аргументов.

Каждая булева функция арности [math]n[/math] полностью определяется заданием своих значений на своей области определения, то есть на всех булевых векторах длины [math]n[/math] . Число таких векторов равно [math]2^n[/math] . Поскольку на каждом векторе булева функция может принимать значение либо [math]0[/math] , либо [math]1[/math] , то количество всех n-арных булевых функций равно [math]<2^2>^n[/math] . То, что каждая булева функция задаётся конечным массивом данных, позволяет представлять их в виде таблиц. Такие таблицы носят название таблиц истинности и в общем случае имеют вид:

Таблица истинности
[math]x_1[/math] [math]x_2[/math] [math]\ldots[/math] [math]x_n[/math] [math]f(x_1,x_2,\ldots,x_n)[/math]
[math]0[/math] [math]0[/math] [math]\ldots[/math] [math]0[/math] [math]f(0,0,\ldots,0)[/math]
[math]1[/math] [math]0[/math] [math]\ldots[/math] [math]0[/math] [math]f(1,0,\ldots,0)[/math]
[math]0[/math] [math]1[/math] [math]\ldots[/math] [math]0[/math] [math]f(0,1,\ldots,0)[/math]
[math]1[/math] [math]1[/math] [math]\ldots[/math] [math]0[/math] [math]f(1,1,\ldots,0)[/math]
[math]\vdots[/math] [math]\vdots[/math] [math]\vdots[/math] [math]\vdots[/math] [math]\vdots[/math]
[math]0[/math] [math]1[/math] [math]\ldots[/math] [math]1[/math] [math]f(0,1,\ldots,1)[/math]
[math]1[/math] [math]1[/math] [math]\ldots[/math] [math]1[/math] [math]f(1,1,\ldots,1)[/math]

Практически все булевы функции малых арностей ( [math]0, 1, 2[/math] и [math]3[/math] ) сложились исторически и имеют конкретные имена. Если значение функции не зависит от одной из переменных (то есть строго говоря для любых двух булевых векторов, отличающихся лишь в значении этой переменной, значение функции на них совпадает), то эта переменная называется фиктивной (англ. dummy variable).

Нульарные функции

При [math]n = 0[/math] количество булевых функций равно [math]<2^2>^0 = 2^1 = 2[/math] , первая из них тождественно равна [math]0[/math] , а вторая [math]1[/math] . Их называют булевыми константами — тождественный нуль и тождественная единица.

Унарные функции

При [math]n = 1[/math] число булевых функций равно [math]<2^2>^1 = 2^2 = 4[/math] .

Таблица значений булевых функций от одной переменной:

Функции от одной переменной
[math]0[/math] [math]x[/math] [math]\neg x[/math] [math]1[/math]
0 [math]0[/math] [math]0[/math] [math]1[/math] [math]1[/math]
1 [math]0[/math] [math]1[/math] [math]0[/math] [math]1[/math]
Сохраняет 0 ✓ ✓
Сохраняет 1 ✓ ✓
Самодвойственная ✓ ✓
Монотонная ✓ ✓ ✓
Линейная ✓ ✓ ✓ ✓

Названия булевых функций от одной переменной:

Обозначение Название
[math]0[/math] тождественный ноль, тождественная ложь, тождественное «НЕТ»
[math]x[/math] тождественная функция, логическое «ДА», «YES»(англ.)
[math]\bar x,\ \neg x,\ x'[/math] отрицание, логическое «НЕТ», «НЕ», «НИ», «NOT»(англ.), «NO»(англ.)
[math]1[/math] тождественная единица, тождественная истина, тождественное «ДА», тавтология

Бинарные функции

При [math]n = 2[/math] число булевых функций равно [math]<2^2>^2 = 2^4 = 16[/math] .

Таблица значений булевых функций от двух переменных:

Функции от двух переменных:
x y [math]0[/math] [math]x \land y[/math] [math]x \nrightarrow y[/math] [math]x[/math] [math]x \nleftarrow y[/math] [math]y[/math] [math]x \oplus y[/math] [math]x \lor y[/math] [math]x \downarrow y[/math] [math]x = y[/math] [math]\neg y[/math] [math]x \leftarrow y[/math] [math]\neg x[/math] [math]x \rightarrow y[/math] [math]x \triangledown y[/math] [math]1[/math]
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Сохраняет 0 ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
Сохраняет 1 ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
Самодвойственная ✓ ✓ ✓ ✓
Монотонная ✓ ✓ ✓ ✓ ✓ ✓
Линейная ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓

Названия булевых функций от двух переменных:

Обозначение Другие обозначения Название
[math]0[/math] тождественный ноль, тождественная ложь, тождественное «НЕТ»
[math]x \land y[/math] [math]x \cdot y,\ xy,\ x \And y,\ x\ AND\ y,\ AND(x, y),\ min(x, y), x [/math] И [math]y,[/math] И [math](x, y)[/math] 2И, конъюнкция
[math]x \nrightarrow y[/math] [math]x \gt y,\ \neg(x \rightarrow y),\ x\ GT\ y,\ GT(x,\ y)[/math] больше, инверсия прямой импликации
[math]x[/math] [math]YES1(x,y),[/math] ДА1 [math](x, y)[/math] первый операнд
[math]x \nleftarrow y[/math] [math]x \lt y,\ \neg(x \leftarrow y),\ x\ LT\ y,\ LT(x, y)[/math] меньше, инверсия обратной импликации
[math]y[/math] [math]YES2(x, y),[/math] ДА2 [math](x, y)[/math] второй операнд
[math]x \oplus y[/math] [math]x + _2 y,\ x \not = y,\ x \gt \lt y,\ x \lt \gt y,\ x\ XOR\ y,\ XOR(x,y)[/math] сложение по модулю 2, не равно, ксор, исключающее «или»
[math]x \lor y[/math] [math]x + y,\ x\ OR\ y,\ OR(x,y),\ max(x,y),[/math] [math]x [/math] ИЛИ [math]y,[/math] ИЛИ [math](x, y)[/math] 2ИЛИ, дизъюнкция
[math]x \downarrow y[/math] [math]x\ NOR\ y,\ NOR(x,y)[/math] [math]x [/math] ИЛИ-НЕ [math]y,[/math] ИЛИ-НЕ [math](x, y)[/math] НЕ-2ИЛИ, 2ИЛИ-НЕ, антидизъюнкция, функция Да́ггера, функция Ве́бба, стрелка Пи́рса
[math]x = y[/math] [math]x \equiv y, x EQV y, EQV(x,y), x \sim y, x \leftrightarrow y[/math] равенство, эквивалентность
[math]\neg y[/math] [math]NOT2(x, y),\ y’,\ \bar,[/math] НЕ2 [math](x, y)[/math] отрицание (негация, инверсия) второго операнда
[math]x \leftarrow y[/math] [math]x \geq y,\ x \subset y,\ x\ GE\ y,\ GE(x, y)[/math] больше или равно, обратная импликация (от второго аргумента к первому)
[math]\neg x[/math] [math]NOT1(x,y),\ x’,\ \bar,[/math] НЕ1 [math](x, y)[/math] отрицание (негация, инверсия) первого операнда
[math]x \rightarrow y[/math] [math]x \leq y,\ x \supset y,\ x\ LE\ y,\ LE(x,y)[/math] меньше или равно, прямая (материальная) импликация (от первого аргумента ко второму)
[math]x \triangledown y[/math] [math]x \mid y,\ x\ NAND\ y,\ NAND(x,y),[/math] [math]x [/math] И-НЕ [math]y,[/math] И-НЕ [math](x, y)[/math] НЕ-2И, 2И-НЕ, антиконъюнкция, Штрих Шеффера
[math]1[/math] тождественная единица, тождественная истина, тождественное «ДА», тавтология

Тернарные функции

При [math]n = 3[/math] число булевых функций равно [math]<2^2>^3 = 2^8 = 256[/math] . Некоторые из них определены в следующей таблице:

Таблица истинности некоторых тернарных функций
[math]x[/math] [math]y[/math] [math]z[/math] [math]x \downarrow y \downarrow z[/math] [math]\neg (\geq 2(x,y,z))[/math] [math]x \not = y \not = z[/math] [math]x \mid y \mid z[/math] [math]min(x,y,z)[/math] [math]x=y=z[/math] [math]x \oplus y \oplus z[/math] [math]\geq 2(x,y,z)[/math] [math]f_1[/math] [math]f_2[/math] [math]max(x,y,z)[/math]
0 0 0 1 1 0 1 0 1 0 0 0 0 0
0 0 1 0 1 1 1 0 0 1 0 0 0 1
0 1 0 0 1 1 1 0 0 1 0 0 0 1
0 1 1 0 0 1 1 0 0 0 1 1 1 1
1 0 0 0 1 1 1 0 0 1 0 1 0 1
1 0 1 0 0 1 1 0 0 0 1 0 1 1
1 1 0 0 0 1 1 0 0 0 1 1 1 1
1 1 1 0 0 0 0 1 1 1 1 1 1 1

Названия булевых функций трех переменных:

Обозначения Другие обозначения Названия
[math]x \downarrow y \downarrow z[/math] [math]\downarrow (x,y,z) = Webb_2 (x,y,z)[/math] 3-ИЛИ-НЕ, функция Вебба, функция Даггера, стрелка Пирса
[math]\neg (\geq 2(x,y,z))[/math] Переключатель по большинству с инверсией, 3-ППБ-НЕ, мажоритарный клапан с инверсией
[math]x \not = y \not = z[/math] [math][\not =(x,y,z)] = NE(x,y,z)[/math] Неравенство
[math]x \mid y \mid z[/math] [math]\mid(x,y,z)[/math] 3-И-НЕ, штрих Шеффера
[math]x \land y \land z[/math] [math]\land (x,y,z) = (x\ AND\ y\ AND\ z) = AND(x,y,z) = min(x,y,z) = \lt br/\gt (x[/math] И [math] y[/math] И [math] z) = [/math] И [math](x,y,z)[/math] 3-И, минимум
[math]x=y=z[/math] [math][=(x,y,z)] = EQV(x,y,z)[/math] Равенство
[math]x \oplus y \oplus z[/math] [math]x +_2 y +_2 z = \oplus (x,y,z) = +_2 (x,y,z)[/math] Тернарное сложение по модулю 2
[math]\geq 2(x,y,z)[/math] [math](x [/math] И [math]y) [/math] ИЛИ [math](y[/math] И [math] z)[/math] ИЛИ [math](z [/math] И [math] x)[/math] переключатель по большинству, 3-ППБ, мажоритарный клапан
[math]f_1[/math] Разряд займа при тернарном вычитании
[math]f_2[/math] Разряд переноса при тернарном сложении
[math]x+y+z[/math] [math]+(x,y,z) = max(x,y,z) = (x\ OR\ y\ OR\ z) = OR(x,y,z) = (x [/math] ИЛИ [math] y [/math] ИЛИ [math] z) = [/math] ИЛИ [math](x,y,z)[/math] 3-ИЛИ, максимум

Представление функции формулой

Определение:
Если выбрать некоторый набор булевых функций [math]A[/math] , то с использованием выбранных функций можно записать некоторые другие булевы функции. Такая запись булевой функции называется формулой (англ. formula).

Например, если [math]A = \left\<\land,\neg\right\>[/math] , то функция [math]a \lor b[/math] представляется в виде [math]\neg(\neg a \land \neg b)[/math]

Тождественность и двойственность

Определение:
Две булевы функции тождественны (англ. identical) друг другу, если на любых одинаковых наборах аргументов они принимают равные значения.

Тождественность функций f и g можно записать, например, так:
[math]f(x_1, x_2, \dots, x_n)=g(x_1, x_2, \dots, x_n)[/math]

Просмотрев таблицы истинности булевых функций, легко получить такие тождества:

[math]\overline<0>=1[/math] [math]\overline<1>=0[/math] [math]\overline<\overline>=x[/math] [math]x \land y=y \land x\![/math] [math]x\lor y=y \lor x[/math]
[math]0 \land x=0\![/math] [math]1 \land x=x\![/math] [math]0 \lor x=x[/math] [math]1\lor x=1[/math] [math]x \land x=x \lor x=x[/math]

А проверка таблиц, построенных для некоторых суперпозиций, даст следующие результаты:

[math]x \land \overline=0[/math] [math]x \lor \overline=1[/math]
[math]\overline=\overline\lor\overline[/math] [math]\overline\land\overline=\overline[/math] (законы де Моргана)

[math]x \land (y\lor z)=(x \land y)\lor (x \land z)[/math]
[math]x \lor (y \land z)=(x\lor y) \land (x\lor z)[/math] (дистрибутивность конъюнкции и дизъюнкции)

Определение:
Функция [math]g(x_1,x_2,\dots,x_n)[/math] называется двойственной (англ. duality) функции [math]f(x_1,x_2,\dots,x_n)[/math] , если [math]f(\overline,\overline,\dots,\overline)=\overline[/math] .

Легко показать, что в этом равенстве [math]f[/math] и [math]g[/math] можно поменять местами, то есть функции [math]f[/math] и [math]g[/math] двойственны друг другу. Из простейших функций двойственны друг другу константы [math]0[/math] и [math]1[/math] , а из законов де Моргана следует двойственность конъюнкции и дизъюнкции. Тождественная функция, как и функция отрицания, двойственна сама себе.

Если в булевом тождестве заменить каждую функцию на двойственную ей, снова получится верное тождество. В приведённых выше формулах легко найти двойственные друг другу пары.

Суперпозиции

Определение:
Суперпозиция функций, композиция функций (англ. function composition) — функция, полученная из некоторого множества функций путем подстановки одной функции в другую или отождествления переменных.

Множество всех возможных не эквивалентных друг другу суперпозиций данного множества функций образует замыкание данного множества функций.

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

  • Подстановкой одной функции в качестве некоторого аргумента для другой;
  • Отождествлением аргументов функций.

Полнота системы, критерий Поста

Определение:
Замыкание множества функций (англ. сlosure) — подмножество всех булевых функций, что любую из этих функций можно выразить через функции исходного множества.
Определение:
Множество булевых функций называется полной системой (англ. complete set), если замыкание этого множества совпадает с множеством всех функций.

Американский математик Эмиль Пост [1] сформулировал необходимое и достаточное условие полноты системы булевых функций. Для этого он ввел в рассмотрение следующие замкнутые классы булевых функций:

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

Набор булевых функций [math]K[/math] является полным тогда и только тогда, когда он не содержится полностью ни в одном из классов [math] S,M,L,T_0,T_1 [/math] , иными словами, когда в нем имеется хотя бы одна функция, не сохраняющая ноль, хотя бы одна функция, не сохраняющая один, хотя бы одна несамодвойственная функция, хотя бы одна немонотонная функция и хотя бы одна нелинейная функция.

Представление булевых функций

Теорема Поста открывает путь к представлению булевых функций синтаксическим способом, который в ряде случаев оказывается намного удобнее чем таблицы истинности. Отправной точкой здесь служит нахождение некоторой полной системы функций [math]\Sigma = \[/math] . Тогда каждая булева функция сможет быть представлена некоторым термом в сигнатуре [math]\Sigma[/math] , который в данном случае называют также формулой. Относительно выбраной системы функций полезно знать ответы на следующие вопросы:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *